आर के लॉजिस्टिक रिग्रेशन से छद्म- गणना कैसे करें ?


46

आर में लॉजिस्टिक रिग्रेशन पर क्रिस्टोफर मैनिंग का राइटअप आर में एक लॉजिस्टिक रिग्रेशन दर्शाता है:

ced.logr <- glm(ced.del ~ cat + follows + factor(class), 
  family=binomial)

कुछ आउटपुट:

> summary(ced.logr)
Call:
glm(formula = ced.del ~ cat + follows + factor(class),
    family = binomial("logit"))
Deviance Residuals:
Min            1Q    Median       3Q      Max
-3.24384 -1.34325   0.04954  1.01488  6.40094

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept)   -1.31827    0.12221 -10.787 < 2e-16
catd          -0.16931    0.10032  -1.688 0.091459
catm           0.17858    0.08952   1.995 0.046053
catn           0.66672    0.09651   6.908 4.91e-12
catv          -0.76754    0.21844  -3.514 0.000442
followsP       0.95255    0.07400  12.872 < 2e-16
followsV       0.53408    0.05660   9.436 < 2e-16
factor(class)2 1.27045    0.10320  12.310 < 2e-16
factor(class)3 1.04805    0.10355  10.122 < 2e-16
factor(class)4 1.37425    0.10155  13.532 < 2e-16
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 958.66 on 51 degrees of freedom
Residual deviance: 198.63 on 42 degrees of freedom
AIC: 446.10
Number of Fisher Scoring iterations: 4

फिर वह कुछ विस्तार में जाता है कि गुणांक की व्याख्या कैसे करें, विभिन्न मॉडलों की तुलना करें, और इसी तरह। बहुत उपयोगी।

हालाँकि, मॉडल के लिए कितना भिन्नता है? लॉजिस्टिक रिग्रेशन पर एक स्टाटा पेज कहता है:

तकनीकी रूप से, को लॉजिस्टिक रिग्रेशन में उसी तरह से कंपेयर नहीं किया जा सकता है जैसा कि ओएलएस रिग्रेशन में होता है। छद्म- , लॉजिस्टिक प्रतिगमन में, 1 - \ frac {L1} {L0} के रूप में परिभाषित किया गया है , जहां L0 "निरंतर-केवल" मॉडल के लिए लॉग संभावना का प्रतिनिधित्व करता है और L1 के साथ पूर्ण मॉडल के लिए लॉग संभावना है निरंतर और भविष्यवक्ता।R2R2 एलएल1L1L0L0L1

मैं इसे उच्च स्तर पर समझता हूं। निरंतर-एकमात्र मॉडल बिना किसी पैरामीटर (केवल इंटरसेप्ट टर्म) के होगा। लॉग संभावना इस बात का माप है कि पैरामीटर डेटा को कितनी बारीकी से फिट करते हैं। वास्तव में, मैनिंग इस तरह के संकेत देता है कि विचलन हो सकता है । शायद अशक्त विचलन निरंतर और केवल अवशिष्ट अवशिष्ट मॉडल का है? हालाँकि, मैं इस पर स्पष्ट नहीं हूँ।- 2 लॉग एल2logL2logL

क्या कोई यह सत्यापित कर सकता है कि वास्तव में कोई इस उदाहरण का उपयोग करके छद्म- को R में कैसे गणना करता है ?R2


5
आमतौर पर उत्कृष्ट यूसीएलए सांख्यिकीय कंप्यूटिंग पृष्ठों ने यहां एक दुर्लभ त्रुटि की है - छद्म- लिए अभिव्यक्ति में कोई कोष्ठक नहीं होना चाहिए , अर्थात यह होना चाहिए । (आपके प्रश्नों का उत्तर न देने के लिए क्षमा करें क्योंकि मैं बिस्तर पर सिर के बारे में हूँ - मुझे यकीन है कि किसी और ने इसका उत्तर दिया होगा इससे पहले कि मैं ऐसा करने के लिए जाग रहा हूँ।) 1 - एल 1 / एल 0R21L1/L0
onestop


3
यह पृष्ठ कई छद्म-आर ^ 2s पर चर्चा करता है।
dfrankow

2
नोट: संबंधित प्रश्न किसी भी छद्म-आर ^ 2 एस को पसंद नहीं करता है, लेकिन क्रॉस-सत्यापन या होल्डआउट परीक्षण भविष्यवाणी पसंद करता है।
dfrankow

जवाबों:


49

फ्रैंक हरेल द्वारा आरएमएस पैकेज को मत भूलना । आपको GLMs को फिट करने और मान्य करने के लिए आवश्यक सभी चीजें मिलेंगी।

यहाँ एक खिलौना उदाहरण है (केवल एक भविष्यवक्ता के साथ):

set.seed(101)
n <- 200
x <- rnorm(n)
a <- 1
b <- -2
p <- exp(a+b*x)/(1+exp(a+b*x))
y <- factor(ifelse(runif(n)<p, 1, 0), levels=0:1)
mod1 <- glm(y ~ x, family=binomial)
summary(mod1)

यह प्रदान करता है:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   0.8959     0.1969    4.55 5.36e-06 ***
x            -1.8720     0.2807   -6.67 2.56e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 258.98  on 199  degrees of freedom
Residual deviance: 181.02  on 198  degrees of freedom
AIC: 185.02

अब, lrmफ़ंक्शन का उपयोग करते हुए ,

require(rms)
mod1b <- lrm(y ~ x)

आपको जल्द ही बहुत सारे मॉडल फिट इंडेक्स मिलेंगे, जिनमें नागेलकेके भी शामिल है :R2print(mod1b)

Logistic Regression Model

lrm(formula = y ~ x)

                      Model Likelihood     Discrimination    Rank Discrim.    
                         Ratio Test            Indexes          Indexes       

Obs           200    LR chi2      77.96    R2       0.445    C       0.852    
 0             70    d.f.             1    g        2.054    Dxy     0.705    
 1            130    Pr(> chi2) <0.0001    gr       7.801    gamma   0.705    
max |deriv| 2e-08                          gp       0.319    tau-a   0.322    
                                           Brier    0.150                     


          Coef    S.E.   Wald Z Pr(>|Z|)
Intercept  0.8959 0.1969  4.55  <0.0001 
x         -1.8720 0.2807 -6.67  <0.0001 

यहाँ, और इसे , जहाँ LR स्टेट है (आपके द्वारा वर्णित दो नेस्टेड मॉडल की तुलना करते हुए), जबकि भाजक लिए अधिकतम मान है । एक आदर्श मॉडल के लिए, हम अपेक्षा करेंगे , वह ।( 1 - exp ( - एलआर / n ) ) / ( 1 - exp ( - ( - 2 एल 0 ) / n ) ) χ 2 आर 2 एलआर = 2 एल 0 आर 2 = 1R2=0.445(1exp(LR/n))/(1exp((2L0)/n))χ2R2LR=2L0R2=1

हाथ से,

> mod0 <- update(mod1, .~.-x)
> lr.stat <- lrtest(mod0, mod1)
> (1-exp(-as.numeric(lr.stat$stats[1])/n))/(1-exp(2*as.numeric(logLik(mod0)/n)))
[1] 0.4445742
> mod1b$stats["R2"]
       R2 
0.4445742 

Ewout W. Steyerberg ने अपनी पुस्तक Clinical Prediction Model (Springer, 2009, .2 4.2.2 पीपी। 58-60) में GLM के साथ के उपयोग पर चर्चा की । मूल रूप से, एलआर स्टेटिस्टिक और नागेलकेके के के बीच संबंध लगभग रैखिक है (यह कम घटना के साथ अधिक रैखिक होगा)। अब, जैसा कि मैंने अपनी टिप्पणी में पहले से जुड़े धागे पर चर्चा की है, आप सांख्यिकी जैसे अन्य उपायों का उपयोग कर सकते हैं जो एयूसी आंकड़े के बराबर है (उपरोक्त संदर्भ में एक अच्छा चित्रण भी है, चित्र 4.6 देखें)।आर 2 सीR2R2c


क्या आप बता सकते हैं कि आपने कैसे प्राप्त किया ।४४५? मैंने 1-एक्सप (-77.96 / 200) का उपयोग किया लेकिन मुझे मिला ।323। क्या मैं गलत हूं? धन्यवाद।

2
नागेलकेर आर 2 कौन सा है?
जेटलाग

1
@ जेटलैग अंडर डिस्क्रिमिनेशन इंडेक्स में नागलेकर को आर 2 (0.445) के रूप में संक्षिप्त किया गया है। आप पैकेज fmsb से फ़ंक्शन NagelkerkeR2 () का उपयोग करके इसे देख सकते हैं।
चेर्नॉफ

11

एक फिट मॉडल के लिए आसानी से मैकफैडेन के छद्म लिए, साइमन जैकमैन द्वारा "pscl" पैकेज का उपयोग करें और pR2 कमांड का उपयोग करें। http://cran.r-project.org/web/packages/pscl/index.htmlR2


7

छद्म-R2 की गणना से सावधान रहें :

मैकफैडेन के छद्म- की गणना , जहां पूर्ण मॉडल का लॉग-लाइक है, और केवल अवरोधन के साथ मॉडल का लॉग-लाइक है।R2RM2=1lnL^fulllnL^nulllnL^fulllnL^full

छद्म- गणना करने के लिए दो दृष्टिकोण :R2

  1. विचलन का उपयोग करें: चूंकि ,deviance=2ln(Lfull)null.deviance=2ln(Lnull)

    pR2 = 1 - mod$deviance / mod$null.deviance # works for glm

लेकिन उपरोक्त दृष्टिकोण स्यूडो नमूने के लिए काम नहीं करता हैR2

  1. R और परिभाषा में "logLik" फ़ंक्शन का उपयोग करें (इन-सैंपल के लिए भी काम करता है)

    mod_null <- glm(y~1, family = binomial, data = insample) 1- logLik(mod)/logLik(mod_null)

यह नमूना स्यूडो गणना करने के लिए थोड़ा संशोधित किया जा सकता हैR2

उदाहरण:

आउट-ऑफ-सैंपल छद्म-आर

आमतौर पर, आउट-ऑफ-सैंपल छद्म- की गणना जहां होता है। नमूना अवधि के अनुमानित गुणांक के आधार पर आउट-ऑफ-सैंपल अवधि के लिए लॉग संभावना, जबकि और आउट-ऑफ-सैंपल अवधि के लिए इंटरसेप्ट-ओनली मॉडल के लिए लॉग संभावना है।R2एलएसटीयूटीएलएनयूएलएलयूटी

Rp2=1Lest.outLnull.out,
Lest.outLnull.out

कोड:

pred.out.link <- predict(mod, outSample, type = "link") mod.out.null <- gam(Default~1, family = binomial, data = outSample) pR2.out <- 1 - sum(outSample$y * pred.out.link - log(1 + exp(pred.out.link))) / logLik(mod.out.null)


deviance=2ln(Lfull) द्विपद के लिए नहीं है, बस देखें model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial)और कॉल करें model1$devianceऔर -2*logLik(model1)
जिज्ञासु

6

यदि अवतरण लॉग संभावना के अनुपात में था, और एक परिभाषा का उपयोग करता है (उदाहरण के लिए मैकफैडेन यहां देखें )

pseudo R^2 = 1 - L(model) / L(intercept)

इसके बाद छद्म- ऊपर = 0.2828 होगा 1 - 198.63R21198.63958.66

सवाल यह है: लॉग इन होने की संभावना के लिए आनुपातिक बताया गया है?


3
यह छद्म-आर ^ 2 @ चेले के उत्तर के नागेलकेकेर आर ^ 2 से बिल्कुल भी सहमत नहीं है।
dfrankow

जब मैं स्कूल में था तब डेविंस को एक -2 * LL परिभाषित किया गया था।
DWIN

@dfrankow इससे सहमत नहीं है, क्योंकि नागेलकेक कॉक्स और स्नेल आर 2 का एक सामान्यीकरण है, जो मैकफैडन्स आर 2 से अलग है।
कॉलिन

0

अगर अपने नमूना से बाहर है, तो मेरा मानना है कि के रूप में अनुसार लॉग-likelihoods साथ गणना की जानी चाहिए , जहां है प्रशिक्षण सेट पर पूर्वानुमानित मॉडल के साथ परीक्षण डेटा की लॉग- , और प्रशिक्षण सेट पर एक निरंतर फिट के साथ एक मॉडल के साथ परीक्षण डेटा की लॉग-संभावना है, और फिर फिट का उपयोग करें निरंतरता की गणना करने वाले परीक्षण सेट पर भविष्यवाणी करने के लिए निरंतर और इसलिए लॉग-लाइबिलिटी प्राप्त करें।R2R2=1llfullllconstantllfullllconstant

ध्यान दें कि एक रेखीय प्रतिगमन में, समरूप है, नमूना से बाहर की गणना , जहां विशेष रूप से यदि हम हर शब्द , भविष्यवाणी प्रशिक्षण सेट, पर औसत का उपयोग करती है । यह ऐसा है जैसे यदि हम प्रशिक्षण डेटा में किसी मॉडल को केवल एक स्थिरांक के साथ फिट करते हैं, तो हमें , जिसके परिणामस्वरूप , तो, यह सादा स्थिर भविष्य कहनेवाला मॉडल है जिसका उपयोग बेनकैम्रक के रूप में किया जाता है (जैसे कि ओR2R2=1i(yiy^i)2i(yiy¯train)2i(yiy¯train)2y¯traini(yiβ0)2 β 0= ¯ y टीआरएकमैंएनआर2आरβ^0=y¯trainR2शब्द) के नमूने की गणना के लिए ।R2

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.