我有例如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)如何在循环选择X5
i
2)如何在模型中插入固定变量(这里是X5
)。我注意到,当我在上面的模型中粘贴X5
时,结果是不正确的。在这里,我手动检查带有粘贴功能的模型,你可以看到只有一个系数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
非常感谢任何建议。
答案 0 :(得分:3)
如何在if
的开头添加for loop
条件呢?
for(i in 1:10){
if(i == 5) next
print(i)
}
如果i
,则跳至下一个i == 5
。
在您的情况下,将其替换为X5
或者,为什么不使用:
ind_var <- 1:10
for(i in ind_var[-5]){
print(i)
}