Je cherche une solution de travail pour exactement le même problème. Le meilleur que j'ai trouvé est le Bootstrap Null Unrestricted présenté par Foulkes Andrea dans son livre Applied Statistical Genetics with R (2009) . Contrairement à tous les autres articles et livres, il considère spécifiquement les régressions. Outre d'autres méthodes, il conseille le Null Unrestricted Bootstrap, qui convient lorsque l'on ne peut pas facilement calculer des résidus (comme dans mon cas, où je modélise de nombreuses régressions indépendantes (essentiellement des corrélations simples), chacune avec la même variable de réponse et un snip différent). J'ai trouvé que cette méthode s'appelait également la méthode 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
+ }
+ }
Une fois que nous avons toute la TestStatBoot
matrice (dans les lignes, nous avons des réplications bootstrap, et dans les colonnes, nous avons bootstrapT⃗ ∗^ statistiques) que nous trouvons pour lesquels Tcrit. on observe exactement α = 0,05 pour cent de plus significatif T⃗ ∗^ statistiques (plus importantes signifient qu'avec une valeur absolue plus grande que Tcrit.).
Nous rapportons je-th composant du modèle significatif, si son T⃗ je^> Tcrit.
La dernière étape peut être accomplie avec ce code
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.