【发布时间】:2016-06-07 01:41:43
【问题描述】:
我有以下功能; (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 的值(没有引导程序),我可以从引导程序计算平均值(dDeviance)。我需要帮助来解释为什么原始引导值和平均引导值差异太大?例如,对于其中一个变量,dDeviance 的原始值为 0.024,而 dDeviance 的引导平均值为 0.000412。
【问题讨论】:
-
这似乎不太可能,因为自举统计的分布主要围绕原始数据中的统计。查看您的代码,我认为您的问题在于索引。您确实使用了 d[i],但仍使用原始训练集和原始表型。
-
感谢@Heroka 的评论。我也同意你的观点,该值应该在原始值附近。我试图摆脱 xfunction 中的数据,但它无法识别我的 PHENOTYPE 来自哪里。如果您能对我的职能提出修改建议,我将不胜感激。供您参考,我的结果是 PHENOTYPE,预测变量由 1500 个 SNP 和 1000 个样本组成。
-
根据我的引导经验,我有一个函数可以获取一个包含我需要的所有内容和索引的数据集,然后使用它。因此,表型应该在训练中1,然后您可以使用
data=d[i,]拟合您的模型。 -
我同意@Heroka,您应该在引导期间而不是在公式中子集 data.frame。我也不明白你用
lapply循环在那里做什么。 -
感谢两位cmets。我会努力解决这个问题。好吧,我提出了 lapply 的想法,以便它将计算 training1[,2:1501] 中每个列的 dDeviance 并使用引导函数引导该值。
标签: r resampling statistics-bootstrap