【发布时间】:2016-07-19 15:47:21
【问题描述】:
例如,我有 1 个响应变量 Y 和 5 个预测变量 X1-X5。
我正在尝试拟合 glm 模型并计算与模型中固定的X5 的偏差差异,如下所示
ind_var <- names(dat)[substr(names(dat),1,1)=="X"]
results <- data.frame()
for (i in ind_var)
{
glm1 <- glm(as.formula(paste("Y~X5+",i)), family=binomial, data=dat)
dDeviance <- with(glm1,(null.deviance-deviance))
df <- data.frame(ind_var=i, diff=dDeviance)
results <- rbind(results, df)
}
问题:
1) 循环选择i时如何排除X5
2) 如何在模型中插入固定变量(这里是X5)。我注意到当我将X5 粘贴到上面的模型中时,结果不正确。在这里,我手动检查带有粘贴功能的模型,您可以看到只有 1 个系数为 99 df。我相信Y~X5+X1 的正常模型我应该有 3 个系数(包括截距)和 97 df。
mod1 <- glm(as.formula(paste("Y~X5+",X1)), family=binomial, data=dat)
mod1
Call: glm(formula = as.formula(paste("Y~X5+", X1)), family = binomial,
data = dat)
Coefficients:
X5
0.02581
Degrees of Freedom: 100 Total (i.e. Null); 99 Residual
Null Deviance: 138.6
Residual Deviance: 138.6 AIC: 140.6
非常感谢任何建议。
【问题讨论】:
-
这对我来说并不完全清楚。
ind_var是包含变量名的变量吗?如果是这样,回答问题 1,你不能通过从向量中删除X5来解决这个问题吗?对于问题2,为什么它是错误的?你能在这里展示一下结果和预期的结果吗? -
感谢 @Laterow 的 cmets。我在上一篇文章中添加了一些信息。关于 ind_var,我实际上也需要对其他变量重复此操作(其他 X1/X2/X3/X4 作为固定变量)。但是,如果我找不到解决方案,我只能手动删除它。