-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vignette.Rmd
56 lines (52 loc) · 2.25 KB
/
Vignette.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
---
title: "vignette"
author: "Xinyu Zou"
date: "May 25, 2019"
output:
html_document: default
pdf_document: default
---
This document introduces how to use the three functions in package "zouhw2". Please make sure to install packages "askpass" and "sys" in advance and enter "3" when installing this package. For the definition of each parameter in the functions, please refer to the documentations via help() function.
#Install and load package
```{r}
library(devtools)
#install.packages("askpass")
#install.packages("sys")
install_github("xyzou685/STSCI6520_HW2")
library(zouhw2)
```
#1. solve_ols(A,b,cores=1,method,iteration)
set A to be a 10*10 square matrix, entries drawn IID from standard normal distribution,
$v=1_{10}$. b is a 10*1 vector and $Av=b$. When using this function with other input, need to make sure that column number of A=row number of b. Method must be either "GS" or "Jacobi".
Now we use different approach to approximate v. You can change number of cores or number of iteration as you want.
```{r}
n=10
L <- diag(0, n)
L[(row(L) - col(L)) == 1] <- -1
U <- diag(0, n)
U[(row(U) - col(U)) == -1] <- -1
D <- diag(2, n)
a <- L+D+U
v <- as.vector(rep(1,10))
b=a%*%v
#Gauss-Seidel
solve_ols(a,b,method = "GS",iteration=100)
#Sequential Jacobi
solve_ols(a,b,cores=1,method = "Jacobi",iteration=100)
#Parallel Jacobi
solve_ols(a,b,cores=2,method = "Jacobi",iteration=100)
```
#2. algo_leverage(xi,yi,r=floor(0.2*length(yi)))
xi can be a n*1 vector or a n*p matrix, yi is a n*1 vector. xi's row number(data size) must match yi's row number. r can be set as any integer between 1 and yi's length. In the tet code, we set xi to be a 100*5 matrix, yi to be a 100*1 vector, and $y_i=-x_i+\epsilon_i$.
```{r}
x <- matrix(rnorm(500),100,5)
y <- x%*%rep(-1,5)+rnorm(100)
algo_leverage(x,y)
```
#3. elnet_coord(x,y,a,lambda,betahat=rep(0,NCOL(x)),maxiteration=100)
same test setting as algo_leverage() function, but you can determine more parameters: $\alpha \in [0,1], \lambda$ can be any real number, maxiteration can be any positive integer. The returned $\beta$ value is expected to be smaller as $\lambda$ increases.
```{r}
x <- matrix(rnorm(500),100,5)
y <- x%*%rep(-1,5)+rnorm(100)
elnet_coord(x,y,a=0.5,lambda=0.7)
```