लॉजिस्टिक रिग्रेशन: एनोवा ची-स्क्वायर टेस्ट बनाम गुणांक का महत्व (एनोवा () बनाम सारांश (आर में)


35

मेरे पास 8 वैरिएबल वाला लॉजिस्टिक GLM मॉडल है। मैंने आर में ची-स्क्वायर टेस्ट चलाया anova(glm.model,test='Chisq')और 2 वेरिएबल्स का अनुमान लगाया गया जब टेस्ट के शीर्ष पर ऑर्डर किया गया था और सबसे नीचे ऑर्डर करने पर ऐसा नहीं किया गया था। summary(glm.model)पता चलता है कि उनके गुणांकों तुच्छ (उच्च पी-मूल्य) कर रहे हैं। इस मामले में ऐसा लगता है कि चर महत्वपूर्ण नहीं हैं।

मैं यह पूछना चाहता था कि चरों के महत्व का एक बेहतर परीक्षण कौन सा है - मॉडल सारांश में गुणांक का महत्व या उससे प्राप्त होने वाला ची-वर्ग anova()। भी - जब एक दूसरे पर बेहतर है?

मुझे लगता है कि यह एक व्यापक प्रश्न है, लेकिन किसी भी संकेत पर विचार करने के लिए सराहना की जाएगी।


4
यह रैखिक मॉडल में गुणांक का परीक्षण करने के लिए I और प्रकार III वर्ग के वर्ग के बीच अंतर के अनुरूप है। यह आपको मेरे उत्तर को पढ़ने में मदद कर सकता है: टाइप I अनुक्रमिक एनोवा और मैनोवा की व्याख्या कैसे करें
गूँग - मोनिका

जवाबों:


61

@ गंग के जवाब के अलावा, मैं एक उदाहरण प्रदान करने की कोशिश करूंगा कि anovaफ़ंक्शन वास्तव में क्या परीक्षण करता है। मुझे आशा है कि यह आपको यह तय करने में सक्षम बनाता है कि परीक्षण में आपकी रुचि के लिए कौन से परीक्षण उपयुक्त हैं।

मान लेते हैं कि आपके पास एक परिणाम और 3 भविष्यसूचक चर हैं: , , और । अब, यदि आपका लॉजिस्टिक रिग्रेशन मॉडल होगा । जब आप चलते हैं , तो फ़ंक्शन निम्नलिखित मॉडलों की तुलना क्रम में करता है:yएक्स1एक्स2एक्स3my.mod <- glm(y~x1+x2+x3, family="binomial")anova(my.mod, test="Chisq")

  1. glm(y~1, family="binomial") बनाम glm(y~x1, family="binomial")
  2. glm(y~x1, family="binomial") बनाम glm(y~x1+x2, family="binomial")
  3. glm(y~x1+x2, family="binomial") बनाम glm(y~x1+x2+x3, family="binomial")

इसलिए यह क्रमिक रूप से प्रत्येक चरण में एक चर जोड़कर अगले अधिक जटिल मॉडल के साथ छोटे मॉडल की तुलना करता है। उन तुलनाओं में से प्रत्येक एक संभावना अनुपात परीक्षण (LR परीक्षण; नीचे उदाहरण देखें) के माध्यम से किया जाता है । मेरी जानकारी के लिए, इन परिकल्पनाओं में शायद ही कोई दिलचस्पी हो, लेकिन यह आपको तय करना होगा।

यहाँ एक उदाहरण है 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 ***

पीsummary(my.mod)

  • गुणांक के लिए x1: glm(y~x2+x3, family="binomial")बनाम glm(y~x1+x2+x3, family="binomial")
  • गुणांक के लिए x2: glm(y~x1+x3, family="binomial")बनामglm(y~x1+x2+x3, family="binomial")
  • गुणांक के लिए x3: glm(y~x1+x2, family="binomial")बनामglm(y~x1+x2+x3, family="binomial")

तो सभी गुणांक वाले पूर्ण मॉडल के खिलाफ प्रत्येक गुणांक। वाल्ड परीक्षण संभावना अनुपात परीक्षण का एक अनुमान है। हम संभावना अनुपात परीक्षण (LR परीक्षण) भी कर सकते हैं। यहां कैसे:

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 *

पीsummary(my.mod)

rankanova(my.mod, test="Chisq")rankanova(mod1.2, my.mod, test="Chisq")पी7.08810-5rank


1
+1, यह एक अच्छी, व्यापक व्याख्या है। 1 छोटा बिंदु: मुझे विश्वास है कि जब test="Chisq", आप एक संभावना अनुपात परीक्षण नहीं चला रहे हैं, तो आप सेट करने की जरूरत है test="LRT"कि के लिए, को देखने के anova.glm?
गुंग - को पुनः स्थापित मोनिका

6
@gung को बधाई के लिए धन्यवाद। test="LRT"और test="Chisq"पर्यायवाची हैं (यह आपके द्वारा जुड़े पृष्ठ पर कहते हैं)।
COOLSerdash

2
कोई समस्या नहीं है, लेकिन मुझे लगता है कि यह वास्तव में एक अच्छा बिंदु है। test="LRT"यह बेहतर है क्योंकि यह तुरंत स्पष्ट है कि यह एक संभावना अनुपात परीक्षण है। मैंने इसे बदल दिया। धन्यवाद।
COOLSerdash

4
+1 मैं केवल एक महीने में यहां आपकी तेजी से प्रगति से प्रभावित हूं और अच्छी तरह से काम करने, स्पष्ट विवरण प्रदान करने की आपकी क्षमता। आपके प्रयासों के लिए धन्यवाद!
whuber

1
बहुत बढ़िया जवाब। क्या मैं पूछ सकता हूं कि पी-वैल्यू ( 7.088e-05, 0.01419, 00.03684) की व्याख्या कैसे की जानी चाहिए?
TheSimpliFire
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.