Regresi logistik: uji anova chi-square vs signifikansi koefisien (anova () vs ringkasan () dalam R)

35

Saya memiliki model GLM logistik dengan 8 variabel. Saya menjalankan uji chi-square di R anova(glm.model,test='Chisq')dan 2 dari variabel berubah menjadi prediksi ketika dipesan di bagian atas tes dan tidak begitu banyak ketika dipesan di bagian bawah. Itu summary(glm.model)menunjukkan bahwa koefisien mereka tidak signifikan (nilai p tinggi). Dalam hal ini tampaknya variabel tidak signifikan.

Saya ingin bertanya yang merupakan tes signifikansi variabel - signifikansi koefisien dalam ringkasan model atau uji chi-square anova(). Juga - kapan salah satu lebih baik dari yang lain?

Saya kira itu adalah pertanyaan luas tetapi setiap petunjuk tentang apa yang harus dipertimbangkan akan dihargai.

StreetHawk
sumber
4
Ini analog dengan perbedaan antara Jumlah I & tipe III Jumlah Kuadrat untuk menguji koefisien dalam model linier. Mungkin membantu Anda untuk membaca jawaban saya di sini: bagaimana menafsirkan tipe I berurutan ANOVA dan MANOVA .
gung - Reinstate Monica

Jawaban:

61

Selain jawaban @ gung, saya akan mencoba memberikan contoh anovafungsi yang sebenarnya diuji. Saya harap ini memungkinkan Anda untuk memutuskan tes apa yang sesuai untuk hipotesis yang Anda minati.

Mari kita asumsikan bahwa Anda memiliki variabel prediktor hasil dan 3: x 1 , x 2 , dan x 3 . Sekarang, jika model regresi logistik Anda akan . Saat Anda menjalankan , fungsi membandingkan model berikut dalam urutan berurutan:yx1x2x3my.mod <- glm(y~x1+x2+x3, family="binomial")anova(my.mod, test="Chisq")

  1. glm(y~1, family="binomial") vs. glm(y~x1, family="binomial")
  2. glm(y~x1, family="binomial") vs. glm(y~x1+x2, family="binomial")
  3. glm(y~x1+x2, family="binomial") vs. glm(y~x1+x2+x3, family="binomial")

Jadi secara berurutan membandingkan model yang lebih kecil dengan model yang lebih kompleks berikutnya dengan menambahkan satu variabel di setiap langkah. Masing-masing perbandingan dilakukan melalui uji rasio kemungkinan (uji LR; lihat contoh di bawah). Setahu saya, hipotesis ini jarang menarik, tetapi ini harus diputuskan oleh Anda.

Berikut adalah contoh di R:

mydata      <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
   ---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1 

# The sequential analysis
anova(my.mod, test="Chisq")

Terms added sequentially (first to last)    

     Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
NULL                   399     499.98              
gre   1  13.9204       398     486.06 0.0001907 ***
gpa   1   5.7122       397     480.34 0.0168478 *  
rank  3  21.8265       394     458.52 7.088e-05 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

# We can make the comparisons by hand (adding a variable in each step)

  # model only the intercept
mod1 <- glm(admit ~ 1,                data = mydata, family = "binomial") 
  # model with intercept + gre
mod2 <- glm(admit ~ gre,              data = mydata, family = "binomial") 
  # model with intercept + gre + gpa
mod3 <- glm(admit ~ gre + gpa,        data = mydata, family = "binomial") 
  # model containing all variables (full model)
mod4 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") 

anova(mod1, mod2, test="LRT")

Model 1: admit ~ 1
Model 2: admit ~ gre
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       399     499.98                          
2       398     486.06  1    13.92 0.0001907 ***

anova(mod2, mod3, test="LRT")

Model 1: admit ~ gre
Model 2: admit ~ gre + gpa
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       398     486.06                       
2       397     480.34  1   5.7122  0.01685 *

anova(mod3, mod4, test="LRT")

Model 1: admit ~ gre + gpa
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       397     480.34                          
2       394     458.52  3   21.826 7.088e-05 ***

psummary(my.mod)

  • Untuk koefisien x1: glm(y~x2+x3, family="binomial")vs glm(y~x1+x2+x3, family="binomial")
  • Untuk koefisien x2: glm(y~x1+x3, family="binomial")vsglm(y~x1+x2+x3, family="binomial")
  • Untuk koefisien x3: glm(y~x1+x2, family="binomial")vsglm(y~x1+x2+x3, family="binomial")

Jadi masing-masing koefisien terhadap model lengkap berisi semua koefisien. Tes Wald adalah perkiraan dari tes rasio kemungkinan. Kami juga bisa melakukan tes rasio kemungkinan (LR test). Begini caranya:

mod1.2 <- glm(admit ~ gre + gpa,  data = mydata, family = "binomial")
mod2.2 <- glm(admit ~ gre + rank, data = mydata, family = "binomial")
mod3.2 <- glm(admit ~ gpa + rank, data = mydata, family = "binomial")

anova(mod1.2, my.mod, test="LRT") # joint LR test for rank

Model 1: admit ~ gre + gpa
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       397     480.34                          
2       394     458.52  3   21.826 7.088e-05 ***

anova(mod2.2, my.mod, test="LRT") # LR test for gpa

Model 1: admit ~ gre + rank
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       395     464.53                       
2       394     458.52  1   6.0143  0.01419 *

anova(mod3.2, my.mod, test="LRT") # LR test for gre

Model 1: admit ~ gpa + rank
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       395     462.88                       
2       394     458.52  1   4.3578  0.03684 *

psummary(my.mod)

rankanova(my.mod, test="Chisq")rankanova(mod1.2, my.mod, test="Chisq")p7.088105rank

COOLSerdash
sumber
1
+1, ini adalah penjelasan yang bagus dan komprehensif. 1 poin kecil: Saya percaya bahwa ketika test="Chisq", Anda tidak menjalankan tes rasio kemungkinan, Anda perlu menetapkan test="LRT"untuk itu, lihat ? Anova.glm .
gung - Reinstate Monica
6
@ung Terima kasih atas pujiannya. test="LRT"dan test="Chisq"identik (dikatakan di halaman yang Anda tautkan).
COOLSerdash
2
Tidak masalah, tapi saya pikir itu sebenarnya poin yang bagus. test="LRT"lebih baik karena segera jelas bahwa ini adalah tes rasio kemungkinan. Saya mengubahnya. Terima kasih.
COOLSerdash
4
+1 Saya terkesan dengan kemajuan pesat Anda di sini hanya dalam satu bulan dan kemampuan Anda untuk memberikan penjelasan yang jelas dan bekerja dengan baik. Terima kasih atas usaha Anda!
whuber
1
Jawaban yang bagus Bolehkah saya bertanya bagaimana nilai-p ( 7.088e-05, 0.01419, 00.03684) harus ditafsirkan?
TheSimpliFire