2016-03-31 27 views
1

hariç tut Örnek 1 yanıt değişkeni, Y ve 5 öngörücüm var, X1-X5. Bir glm modeli uydurmaya çalışan ve şöyle modelinde sabit X5 ile sapma farkını hesaplayarak am"for" döngüsündeki bir sabit değişkeni

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

Soru:

1) Nasıl X5 dışlamak için döngü i

seçmektir

2) Modelde sabit değişken nasıl eklenir (burada X5). Yukarıdaki gibi modele X5 yapıştırdığımda sonuç yanlıştır. Burada, macun fonksiyonu ile modeli kontrol etmek için manuel olarak yapıyorum, 99 df ile sadece 1 katsayı olduğunu görebilirsiniz. Ben Y~X5+X1 ile normal modele inanıyorum ben 97 df ile 3 katsayıları (intercept dahil olmak üzere) olmalıdır.

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 

Her türlü öneri çok beğenilmektedir.

+0

Bu tamamen bana açık değildir. 'Ind_var' değişken isimlerini içeren bir değişken mi? Eğer öyleyse, soru 1'i cevaplamak için, bu 'X5'i vektörden kaldırarak bunu çözemez misiniz? Soru 2 için neden tam olarak yanlıştır? Sonuçları ve beklenen sonuçları burada gösterebilir misiniz? – Laterow

+0

Yorumlarınız için teşekkürler @Laterow. Önceki yazımda bazı bilgiler ekledim. Ind_var hakkında, bunu diğer değişkenlerle de tekrarlamam gerekiyor (diğerleri X1/X2/X3/X4 sabit değişken olarak). Ancak, çözümü bulamadıysam, o zaman el ile silmek zorunda kalacağım. – Shima

cevap

2

for loop'un başlangıcında if koşulunun eklenmesine ne dersiniz?

for(i in 1:10){ 
    if(i == 5) next 

    print(i) 
} 

Bu, sonraki ii == 5 eğer atlar. Senin durumunda

kullanmayın neden X5

Alternatif, ile değiştirin:

ind_var <- 1:10 

for(i in ind_var[-5]){ 
      print(i) 
     } 
İlgili konular