关于原始值和引导值的差异的解释

时间:2016-02-24 16:31:16

标签: r bootstrapping resampling

我有以下功能; (1)计算我所拥有的每个变量的偏差差异,以及(2)为我在第一步中计算的偏差差异做引导

set.seed(1001)

xfunction <- function(d,i)
{
glm.snp1 <- glm(PHENOTYPE~d[i], family="binomial", data=training1)
null <- glm.snp1$null.deviance
residual <- glm.snp1$deviance
dDeviance <- null-residual
return(dDeviance)
}

myboot <- function(d)
{
boot(d,xfunction, R=1000)
}

result <- lapply(training1,function(x)myboot(x))

所以基本上从结果我得到原始dDeviance(没有bootstrap)的值,我可以从bootstrap计算平均值(dDeviance)。我需要帮助解释为什么原始和平均bootstrap值太不同了?例如,对于其中一个变量,dDeviance的原始值为0.024,而dDeviance的bootstrap均值为0.000412。

1 个答案:

答案 0 :(得分:0)

正如评论中所指出的,最好将data.frame索引子集化,使其与boot兼容。如果要迭代不同的变量并应用此函数,最好在迭代中完成。

对于每个引导程序,您都适合不同的模型并提取值。

因此,我们重新编写了该函数,它包含一个额外的公式参数indep_var,该参数指定要针对以下参数对PHENOTYPE进行回归的列:

xfunction <- function(d,ind,indep_var){

    dDeviance = sapply(indep_var,function(V){
         f = reformulate(V,response="PHENOTYPE")  
         glm.snp1 <- glm(f, family="binomial", data=d[ind,])
         glm.snp1$null.deviance-glm.snp1$deviance
    })
return(dDeviance)
}  

我们可以设置一个示例数据集:

set.seed(111)
training1 = data.frame(PHENOTYPE=rbinom(100,1,0.5),matrix(rnorm(500),ncol=5))

head(training1)
  PHENOTYPE         X1          X2         X3         X4         X5
1         1  0.1916634 -0.09152026 -0.9685094 -1.0503824 -0.9137690
2         1  1.5525443 -1.87430581  0.9119331  0.3251424  0.1126909
3         0  0.9142423 -0.66416202  0.0928326 -2.1048716 -2.3597249
4         1  0.3586254  0.20341282 -0.5329309 -0.9551027 -1.5693983
5         0  0.1750956 -2.59444339 -1.6669055 -0.5306399  1.2274569
6         0 -0.8472678 -0.09373393 -0.5743455  0.8274405  0.7620480

并在数据上尝试一下:

xfunction(training1,1:nrow(training1),indep_var=c("X1","X2","X3"))
       X1        X2        X3 
0.1189847 0.2512539 0.2684927 

然后使用引导程序:

library(boot)
boot(training1,xfunction,R=1000,indep_var=c("X1","X2","X3"))

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = training1, statistic = xfunction, R = 1000, indep_var = c("X1", 
    "X2", "X3"))


Bootstrap Statistics :
     original   bias    std. error
t1* 0.1189847 1.033286    1.564971
t2* 0.2512539 1.047503    1.863012
t3* 0.2684927 1.005062    1.747959