1
1
2
- library(selectiveInference )
2
+ library(selectiveInference , lib.loc = " /Users/tibs/dropbox/git/R-software/mylib " )
3
3
4
4
library(glmnet )
5
5
6
6
set.seed(424 )
7
7
8
- # n=100
9
- # p=30
8
+ n = 100
9
+ p = 30
10
+
11
+ n = 100
12
+ p = 200
10
13
11
- n = 20
12
- p = 40
13
14
sigma = .4
14
15
beta = c(3 ,2 ,- 1 ,4 ,- 2 ,2 ,rep(0 ,p - 6 ))
15
16
# beta=rep(0,p)
16
17
17
18
tr = beta != 0
18
19
19
20
# type="full"
20
- type = " part "
21
+ type = " partial "
21
22
22
23
nsim = 1000
23
24
lambda = .3
@@ -28,7 +29,7 @@ x = scale(x,T,T)/sqrt(n-1)
28
29
mu = x %*% beta
29
30
30
31
for (i in 1 : nsim ) {
31
- cat(i )
32
+ cat(i , fill = T )
32
33
y = mu + sigma * rnorm(n )
33
34
y = y - mean(y )
34
35
# first run glmnet
@@ -68,26 +69,25 @@ abline(0,1)
68
69
69
70
# estimate and plot FDR
70
71
71
- pvadj = pvadj.by = pvadj.holm = matrix (NA ,nsim ,p )
72
+ pvadj = pvadj.by = matrix (NA ,nsim ,p )
72
73
for (ii in 1 : nsim ){
73
- o = ! is.na(pvals [ii ,])
74
- pvadj [ii ,o ]= p.adjust(pvals [ii ,o ],method = " BH" )
75
- pvadj.by [ii ,o ]= p.adjust(pvals [ii ,o ],method = " BY" )
76
- pvadj.holm [ ii , o ] = p.adjust( pvals [ ii , o ], method = " holm " )
74
+ oo = ! is.na(pvals [ii ,])
75
+ pvadj [ii ,oo ]= p.adjust(pvals [ii ,oo ],method = " BH" )
76
+ pvadj.by [ii ,oo ]= p.adjust(pvals [ii ,oo ],method = " BY" )
77
+
77
78
}
78
- qqlist = fdr = se = fdr.by = se.by = fdr.holm = se.holm = c(.05 , .1 ,.15 ,.2 ,.25 ,.3 )
79
+ qqlist = c(.05 , .1 ,.15 ,.2 ,.25 ,.3 )
80
+ fdr = se = fdr.by = se.by = rep(NA ,length(qqlist ))
79
81
jj = 0
80
82
for (qq in qqlist ){
81
83
jj = jj + 1
82
84
83
- r = v = r.by = v.by = r.holm = v.holm = rep(NA ,nsim )
85
+ r = v = r.by = v.by = rep(NA ,nsim )
84
86
for (ii in 1 : nsim ){
85
87
v [ii ]= sum( (pvadj [ii ,]< qq & ! tr ), na.rm = T )
86
88
r [ii ]= sum( (pvadj [ii ,]< qq ), na.rm = T )
87
89
v.by [ii ]= sum( (pvadj.by [ii ,]< qq & ! tr ), na.rm = T )
88
90
r.by [ii ]= sum( (pvadj.by [ii ,]< qq ), na.rm = T )
89
- v.holm [ii ]= sum( (pvadj.holm [ii ,]< qq & ! tr ), na.rm = T )
90
- r.holm [ii ]= sum( (pvadj.holm [ii ,]< qq ), na.rm = T )
91
91
92
92
}
93
93
oo = r != 0
@@ -96,15 +96,13 @@ oo=r!=0
96
96
oo = r.by != 0
97
97
fdr.by [jj ]= mean((v.by / r.by )[oo ])
98
98
se.by [jj ]= sqrt(var((v.by / r.by )[oo ])/ sum(oo ))
99
- oo = r.by != 0
100
- fdr.holm [jj ]= mean((v.holm / r.holm )[oo ])
101
- se.holm [jj ]= sqrt(var((v.holm / r.holm )[oo ])/ sum(oo ))
99
+
102
100
}
103
101
104
102
105
103
plot(qqlist ,fdr ,type = " b" ,xlab = " target FDR" ,ylab = " observed FDR" ,ylim = c(0 ,.6 ),xlim = c(0 ,.6 ))
106
104
lines(qqlist ,fdr.by ,type = " b" ,col = 3 )
107
- lines( qqlist , fdr.holm , type = " b " , col = 4 )
105
+
108
106
abline(0 ,1 ,lty = 2 )
109
107
title(paste(" n=" ,as.character(n )," p=" ,as.character(p )," " ,as.character(type )))
110
- legend(" bottomright" ,c(" BH" ," BY" , " Holm " ),col = c(1 ,3 , 4 ),lty = 1 )
108
+ legend(" bottomright" ,c(" BH" ," BY" ),col = c(1 ,3 ),lty = 1 )
0 commit comments