我正在寻找一个完全相同的问题的解决方案。我发现的最好的东西是Foulkes Andrea在他的《应用统计遗传学与R(2009)》一书中介绍的Null Unrestricted Bootstrap。与所有其他文章和书籍相反,他特别考虑了回归。除其他方法外,他还建议使用Null Unrestricted Bootstrap,它适用于无法轻易计算残差的情况(例如,在我的案例中,我对许多独立的回归建模(基本上是简单的相关性),每个回归具有相同的响应变量和不同的剪裁)。我发现此方法也称为maxT方法。
> attach(fms)
> Actn3Bin <- > data.frame(actn3_r577x!="TT",actn3_rs540874!="AA",actn3_rs1815739!="TT",actn3_1671064!="GG")
> Mod <- summary(lm(NDRM.CH~.,data=Actn3Bin))
> CoefObs <- as.vector(Mod$coefficients[-1,1])
> B <-1000
> TestStatBoot <- matrix(nrow=B,ncol=NSnps)
> for (i in 1:B){
+ SampID <- sample(1:Nobs,size=Nobs, replace=T)
+ Ynew <- NDRM.CH[!MissDat][SampID]
+ Xnew <- Actn3BinC[SampID,]
+ CoefBoot <- summary(lm(Ynew~.,data=Xnew))$coefficients[-1,1]
+ SEBoot <- summary(lm(Ynew~.,data=Xnew))$coefficients[-1,2]
+ if (length(CoefBoot)==length(CoefObs)){
+ TestStatBoot[i,] <- (CoefBoot-CoefObs)/SEBoot
+ }
+ }
一旦有了所有TestStatBoot
矩阵(在行中有自举复制,在列中有自举统计信息),我们将找到我们确切观察到的更重要的统计信息的%(更高的含义表示绝对值比)。 T临界。α=0.05 ^ → T ∗ T临界。T⃗ ∗^Tcrit.α=0.05T⃗ ∗^Tcrit.
如果第个模型组件的,我们将报告第个模型组件的重要性^ → T i > T 暴击。iT⃗ i^>Tcrit.
最后一步可以用此代码完成
p.value<-0.05 # The target alpha threshold
digits<-1000000
library(gtools) # for binsearch
pValueFun<-function(cj)
{
mean(apply(abs(TestStatBoot)>cj/digits,1,sum)>=1,na.rm=T)
}
ans<-binsearch(pValueFun,c(0.5*digits,100*digits),target=p.value)
p.level<-(1-pnorm(q=ans$where[[1]]/digits))*2 #two-sided.