Using R to realize Local FDR control procedure (Sun&Cai 2007)

############ estimate from TONY CAI's review
############ Lfdr procedure ##########
## 0.8*N(0,1) + 0.15*N(-2.5,1)+ 0.05*N(3,1)
set.seed(123)
n=5000
alpha=0.05
rnorm(80)
rnorm(15,-2.5,1)
rnorm(5,3,1)
X=c(rnorm(.8*n),rnorm(.15*n,-2.5,1),rnorm(.05*n,3,1))
names(X)=1:n
hist(X,breaks=50)

res<-locfdr::locfdr(X,nulltype = 0,plot=1) #plot=0
mean.emp = res$fp0["mlest","delta"]
sd.emp = res$fp0["mlest","sigma"]
fdr=res$fdr
names(fdr)=1:length(fdr)
Q=cumsum(sort(fdr))/1:length(fdr)
names(Q)<-1:length(fdr)
Q_set=Q[Q<=0.1]
j=max(as.numeric(names(Q_set)))
j
sprintf("#rejections: %d",j)

R_p_set=sort(fdr)[1:j]
R=names(sort(fdr)[1:j])
N11=setdiff(R,as.character(1:(.8*n)))
sprintf("#true rejections: %d",length(N11))
sprintf("FDP: %f",(j-length(N11))/j)
upper_cutoff=min(X[R][X[R]>0])
lower_cutoff=max(X[R][X[R]<0])
sprintf("lower cutoff: %f; upper cutoff: %f",lower_cutoff,upper_cutoff)

在这里插入图片描述

在这里插入图片描述
p0估计得不好

  1. Efron的empirical distribution estimation control/correction 以及包locfdr 和 sun&cai的local fdr control在一起有些混淆了。
  2. 发现可以利用efron的包locfdr来做sun&cai 2007的local fdr control procedure, 只不过须要再附上一些代码步骤。
  3. 还没太理解efron包locfdr的用途,似乎是估计出empirical null? 但是p0的确估计得不好。(真实的p0应该是0.8)
  4. Cai et al. (2007) 似乎也有估计pi0的方法,利用来特征函数?须要再看论文,理解比较。目前efron包locfdr里估计p0的方法应该是MLE 或 central matching estimates都可以估计。
  5. local fdr procedure,不再利用p value,直接用f(x)(统计量密度) 也是一个点。
  6. tony cai的review写的真的很好,可以很清晰地看到,fdr control中思想的阶段性跃迁变化。
    在这里插入图片描述

参考文献

Large-Scale Global and Simultaneous Inference: Estimation and Testing in Very High Dimensions
T. Tony Cai1 and Wenguang Sun2. 2017. p17
R包locfdr的说明chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://cran.r-project.org/web/packages/locfdr/vignettes/locfdr-example.pdf
Cai, T., Jin, J., and Low, M. (2007), “Estimation and Confidence Sets for Sparse Normal Mixtures,” The Annals of Statistics, in press.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值