/
inProgress.R
77 lines (66 loc) · 2.19 KB
/
inProgress.R
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Testing ridge.lm:
BetaStarRidge <- function(beta, lambda) beta/(1+lambda)
..p <- 100L
..n <- 1e4
..x <- rnorm(..p* ..n) %>% matrix(ncol=..p, nrow=..n)
var(..x) %>% round(,-1)
## If arbitrary y allowed:
..beta <- seq(1:..p)/sqrt(sum((1:..p)^2))
..sigma <- 1e1
..y <- ..x %*% ..beta + rnorm(..n, sd = ..sigma)
var(..y)
## If y with unit variance required (mainly for glmnet):
..beta <- seq(1:..p)/sqrt(sum((1:..p)^2))/sqrt(2)
..beta^2 %>% sum
..sigma <- 1e1
..y <- ..x %*% ..beta + rnorm(..n, sd = 1/sqrt(2))
var(..y)
## Using MASS
library(MASS)
..lambda <- 1e1
..beta.star <- BetaStarRidge(beta = ..beta, lambda = ..lambda)
..ridge.1 <- lm.ridge(..y~..x-1, lambda=..lambda)
..ridge.1$Inter
..coef.1 <- coef(..ridge.1)
plot(..beta~..coef.1);abline(0,1)
plot(..beta.star~..coef.1);abline(0,1)
## Ridge
library(ridge)
..lambda <- 1e1
..ridge.2 <- linearRidge(..y~..x-1, lambda=..lambda)
..coef.2 <- coef(..ridge.2)
..beta.star <- BetaStarRidge(beta = ..beta, lambda = ..lambda)
plot(..beta~..coef.2);abline(0,1)
plot(..beta.star~..coef.2);abline(0,1)
# # Using elasticnet
# library(elasticnet)
# ..lambda <- 1e1
# ..beta.star <- BetaStarRidge(beta = ..beta, lambda = ..lambda)
# ..ridge.3 <- enet(x =..x, y =..y, lambda=..lambda, intercept = FALSE)
# ..coef.3 <- coef(..ridge.3)
# plot(..beta~..coef.3);abline(0,1)
# plot(..beta.star~..coef.3);abline(0,1)
# Using glmnet
library(glmnet)
..lambda <- 1e1
..beta.star <- BetaStarRidge(beta = ..beta, lambda = ..lambda)
..ridge.4 <- glmnet(x =..x, y =..y, family = 'gaussian', alpha = 0, lambda=..lambda, intercept = FALSE)
..coef.4 <- coef(..ridge.4)@x
plot(..beta~..coef.4);abline(0,1)
plot(..beta.star~..coef.4);abline(0,1)
# Using genridge
library(genridge)
..lambda <- 1e1
..beta.star <- BetaStarRidge(beta = ..beta, lambda = ..lambda)
..ridge.5 <- ridge(..y~..x-1, lambda=..lambda)
..coef.5 <- coef(..ridge.5) %>% drop
plot(..beta~..coef.5);abline(0,1)
plot(..beta.star~..coef.5);abline(0,1)
## Using ElemStatLearn
library(ElemStatLearn)
..lambda <- 1e1
..beta.star <- BetaStarRidge(beta = ..beta, lambda = ..lambda)
..ridge.6 <- simple.ridge(y=..y,x=..x, lambda=..lambda)
..coef.6 <- ..ridge.6$beta %>% drop
plot(..beta~..coef.6);abline(0,1)
plot(..beta.star~..coef.6);abline(0,1)