मैं संभावनाओं को प्राप्त करने के लिए लॉजिस्टिक रिग्रेशन बेटस + रॉ डेटा का उपयोग कैसे कर सकता हूं


17

मेरे पास एक मॉडल है (साहित्य से)। मेरे पास पूर्वानुमानित चरों के लिए कच्चा डेटा भी है।

संभावनाएं प्राप्त करने के लिए मुझे क्या समीकरण का उपयोग करना चाहिए? मूल रूप से, मैं संभावनाओं को प्राप्त करने के लिए कच्चे डेटा और गुणांक को कैसे संयोजित करूं?

जवाबों:


15

यहां अनुप्रयुक्त शोधकर्ता का उत्तर (सांख्यिकी पैकेज आर का उपयोग करके) है।

पहले, चलो कुछ डेटा बनाते हैं, अर्थात मैं एक साधारण द्विभाजित लॉजिस्टिक प्रतिगमन मॉडल l o g ( p) के लिए डेटा का अनुकरण कर रहा हूं:log(p1p)=β0+β1x

> set.seed(3124)
> 
> ## Formula for converting logit to probabilities 
> ## Source: http://www.statgun.com/tutorials/logistic-regression.html
> logit2prop <- function(l){exp(l)/(1+exp(l))}
> 
> ## Make up some data
> y <- rbinom(100, 1, 0.2)
> x <- rbinom(100, 1, 0.5)

भविष्यवक्ता xएक द्विगुणित चर है:

> x
  [1] 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 
 [48] 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0
 [95] 1 1 1 1 1 0

दूसरा, अंत: खंड (अनुमान है ) और ढलान ( β 1 )। आप देख सकते हैं, अवरोधन है β 0 = - 0.8690 और ढलान है β 1 = - 1.0769β0β1β0=0.8690β1=1.0769

> ## Run the model
> summary(glm.mod <- glm(y ~ x, family = "binomial"))

[...]

    Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  -0.8690     0.3304  -2.630  0.00854 **
x            -1.0769     0.5220  -2.063  0.03910 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

[...]

तीसरा, आर, अधिकांश सांख्यिकीय पैकेजों की तरह, फिट किए गए मूल्यों की गणना कर सकता है, अर्थात संभाव्यताएं। मैं इन मूल्यों को संदर्भ के रूप में उपयोग करूंगा।

> ## Save the fitted values
> glm.fitted <- fitted(glm.mod)

xβ0β1glm.rcdm

> ## "Raw data + coefficients" method (RDCM)
## logit = -0.8690 + (-1.0769) * x
glm.rdcm <- -0.8690 + (-1.0769)*x

अंतिम चरण आर- fittedऑफंक्शन ( glm.fitted) और मेरे "हाथ से बने" दृष्टिकोण ( logit2prop.glm.rdcm) के आधार पर फिट किए गए मूल्यों की तुलना है । मेरा अपना कार्य logit2prop(प्रथम चरण देखें) लॉग को संभाव्यता में परिवर्तित करता है:

> ## Compare fitted values and RDCM
> df <- data.frame(glm.fitted, logit2prop(glm.rdcm))
> df[10:25,]
> df[10:25,]
   glm.fitted logit2prop.glm.rdcm.
10  0.1250000            0.1250011
11  0.2954545            0.2954624
12  0.1250000            0.1250011
13  0.2954545            0.2954624
14  0.2954545            0.2954624
15  0.1250000            0.1250011
16  0.1250000            0.1250011
17  0.1250000            0.1250011
18  0.2954545            0.2954624
19  0.1250000            0.1250011
20  0.1250000            0.1250011
21  0.1250000            0.1250011
22  0.1250000            0.1250011
23  0.1250000            0.1250011
24  0.1250000            0.1250011
25  0.2954545            0.2954624

6
ध्यान दें कि glm(y ~ x)आपको लॉजिस्टिक रिग्रेशन नहीं देना है, आपको सेट करना होगा family=binomial(link="logit")। नोट आउटपुट कहता है Dispersion parameter for gaussian family, नहीं binomial family। यदि आप इसे सही करते हैं, तो fitted(glm.mod)वास्तव में अनुमानित संभावनाएं लौटाता है, न कि लॉगिट्स। आप के साथ लॉग मिलता है predict(glm.mod, type="link")
काराकाल

AUA! मैंने तय कर लिया है। मुझे सही करने के लिए, बहुत बहुत धन्यवाद @caracal! यह वास्तव में शर्मनाक है (यह और भी शर्मनाक है क्योंकि मैंने पहले ही एक और एसओ थ्रेड में सही उत्तर दे दिया है )।
बेरंड वीस

1
पैकेज आर्म में फंक्शन इन्वॉलिट होता है, जो आपका फ़ंक्शन logit2prop है।
मनोएल गाल्डिनो

क्या हमें glm.fittedऔर के लिए समान संख्याएँ प्राप्त नहीं करनी चाहिए logit2prop.glm.rdcm.? कुछ बहुत छोटे अंतर हैं। मुझे नहीं मिला कि हमें आपके उदाहरण में समान संख्याएं क्यों नहीं मिलीं। जब मैं जांच करता हूं; library(arm); data.frame(logit2prop(glm.rdcm), invlogit(glm.rdcm))के लिए बिल्कुल वही परिणाम पैदा करता है logit2propऔर invlogit। इसलिए, समान रूप से, मैं पूछता हूं कि क्यों glm.fittedऔर invlogitसमान संख्याओं को वापस क्यों नहीं किया जाए?
एर्दोगन CEVHER

20

f:xlogx1xg:xexpx1+expx

π

f(π)=β0+x1β1+x2β2+

πg

π=g(β0+x1β1+x2β2+)


ऑर्डिनल लॉजिस्टिक रिग्रेशन के बारे में कैसे? फिर तर्क क्या होगा?
user333

@ user333: ठीक है ... मैंने क्रमिक लॉजिस्टिक रिग्रेशन के साथ ज्यादा नहीं खेला है ... लेकिन मुझे लगता है कि एक ही लिंक फ़ंक्शन का उपयोग करता है। किसी भी मामले में, तर्क एक ही है: प्रतिक्रिया चर प्राप्त करने के लिए लिंक फ़ंक्शन को उलटा करें ...
समुद्रमंथन

हाँ ... लेकिन मुझे कैसे पता चलेगा कि कौन सी संभावनाओं को लक्षित श्रेणियों में मैप किया जाता है?
user333

@ user333, आपका प्रश्न लॉजिस्टिक रिग्रेशन के बारे में था, यदि आप ऑर्डिनल रिग्रेशन के बारे में भी उत्तर चाहते हैं, तो कृपया इसे प्रश्न में जोड़ें।
mpiktas
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.