在“for”循环

时间:2016-03-31 09:20:17

标签: r for-loop

我有例如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

非常感谢任何建议。

1 个答案:

答案 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)
        }