2016-03-31 47 views
1

我有例如1響應變量,Y和5個預測變量,X1-X5。 我試圖適應GLM模型和計算與X5越軌行爲差異固定在模型如下排除「for」循環中的一個固定變量

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時,結果不正確。在這裏,我手動使用粘貼功能來檢查模型,可以看到只有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 

任何建議,非常感謝。

+0

這並不完全清楚,我。 「ind_var」是一個包含變量名稱的變量嗎?如果是這樣,要回答問題1,難道你不能通過從矢量中去除X5來解決這個問題嗎?對於問題2,爲什麼它錯了?你能在這裏展示結果和預期結果嗎? – Laterow

+0

感謝@Laterow您的意見。我在之前的文章中添加了一些信息。關於ind_var,我需要用其他變量(其他的X1/X2/X3/X4作爲固定變量)重複此操作。但是,如果我找不到解決方案,我只需要手動刪除它。 – Shima

回答

2

如何在for loop的開頭添加if條件?

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