लॉजिस्टिक रिग्रेशन मॉडल अभिसरण नहीं करता है


39

मुझे एयरलाइन उड़ानों के बारे में कुछ डेटा मिला है (नामक एक डेटा फ्रेम में flights) और मैं यह देखना चाहूंगा कि क्या फ्लाइट के समय में काफी देरी से आने की संभावना पर कोई प्रभाव पड़ता है (मतलब 10 या अधिक मिनट)। मुझे लगा कि मैं भविष्यवाचक के रूप में उड़ान के समय के साथ लॉजिस्टिक रिग्रेशन का उपयोग करूंगा और प्रतिक्रिया के रूप में प्रत्येक उड़ान में काफी देरी हुई (बर्नोलीज़ का एक गुच्छा)। मैंने निम्नलिखित कोड का उपयोग किया है ...

flights$BigDelay <- flights$ArrDelay >= 10
delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
summary(delay.model)

... लेकिन निम्न आउटपुट मिला।

> flights$BigDelay <- flights$ArrDelay >= 10
> delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart,  :
  algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart,  :
  fitted probabilities numerically 0 or 1 occurred
> summary(delay.model)

Call:
glm(formula = BigDelay ~ ArrDelay, family = binomial(link = "logit"),
    data = flights)

Deviance Residuals:
       Min          1Q      Median          3Q         Max
-3.843e-04  -2.107e-08  -2.107e-08   2.107e-08   3.814e-04

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)  -312.14     170.26  -1.833   0.0668 .
ArrDelay       32.86      17.92   1.833   0.0668 .
---
Signif. codes:  0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.8375e+06  on 2291292  degrees of freedom
Residual deviance: 9.1675e-03  on 2291291  degrees of freedom
AIC: 4.0092

Number of Fisher Scoring iterations: 25

इसका क्या मतलब है कि एल्गोरिथ्म अभिसरण नहीं किया था? मैंने सोचा कि यह हो सकता है क्योंकि BigDelayमूल्यों थे TRUEऔर FALSEबजाय 0और 1, लेकिन उसके बाद मैं सब कुछ परिवर्तित मैं एक ही त्रुटि मिली। कोई विचार?


पहले सोचा: सही जुदाई , जिसका अर्थ है कि भविष्यवक्ता 'बहुत अच्छा' है, लॉगिट्स +/- अनंत तक जाते हैं और सब कुछ खत्म हो जाता है। दूसरा विचार: क्या कोड आपको लगता है कि यह करता है? आपके चर नाम आपके विवरण से काफी मेल नहीं खाते हैं। आप विस्तार से बता सकता है डेटा अधिक सटीक, क्या है के बाद से यह लगता है कि आप कर सकते हैं के साथ ही कुछ भविष्यवाणी करने के लिए प्रयास कर रहे हैं।
कंजुगेटपायर

1
मुझे यकीन नहीं है कि मैं "स्वीकार" करने के लायक हूं। @Conjugate प्रायर के उत्तर में बताया गया कि आपके मॉडल में क्या गलत था। मैंने एल्गोरिथम के संदर्भ में आपके द्वारा बताई गई चेतावनी को समझाने के लायक समझा।
मोनिका को बहाल करें - जी। सिम्पसन

3
यदि आपके पास वास्तविक विलंब समय है, तो आपको उन्हें द्विआधारी चर को कम करने के बजाय, मॉडलिंग करके बेहतर जानकारी प्राप्त करने की संभावना है।
whuber

संबंधित प्रश्न
user603

आप glm1 () फ़ंक्शन आज़मा सकते हैं। इसने समस्या को दूर किया

जवाबों:


33

glm()पुनरावृत्त कम से कम वर्गों एल्गोरिथ्म का उपयोग करता है। एल्गोरिथ्म ने सांकेतिककरण से पहले अधिकतम पुनरावृत्तियों की अनुमति दी। डिफ़ॉल्ट, प्रलेखित ?glm.control25 है। आप glmकॉल में एक सूची के रूप में नियंत्रण पैरामीटर पास करते हैं:

delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial,
                   control = list(maxit = 50))

जैसा कि @Conjugate प्रायर कहते हैं, आप इसे उत्पन्न करने के लिए उपयोग किए गए डेटा के साथ प्रतिक्रिया का अनुमान लगा रहे हैं। आपके पास पूरी जुदाई ArrDelay < 10होगी क्योंकि कोई भी भविष्यवाणी करेगा FALSEऔर कोई भी ArrDelay >= 10भविष्यवाणी करेगा TRUE। अन्य चेतावनी संदेश आपको बताता है कि कुछ टिप्पणियों के लिए फिट की गई संभावनाएं प्रभावी रूप से 0 या 1 थीं और यह एक अच्छा संकेतक है जो आपके पास मॉडल के साथ कुछ गलत है।

β^i


क्या आप बता सकते हैं कि मॉडल अभिसरण से आपका वास्तव में क्या मतलब है?
बाच

1
अभिसरण से मेरा मतलब है कि मॉडल में अनुमान लगाए जा रहे पैरामीटर परिवर्तन नहीं करते (या केवल पुनरावृत्तियों के बीच कुछ छोटी सहिष्णुता से कम बदलते हैं)। यहाँ पैरामीटर तेजी से बड़े हो जाते हैं और पुनरावृत्तियों पर सीमा के कारण फिटिंग रुक जाती है लेकिन पैरामीटर अनुमान पेनल्टी और अंतिम पुनरावृत्तियों के बीच बहुत बदल गया है और जैसे कि यह परिवर्तित नहीं हुआ है।
मोनिका को बहाल करें - जी। सिम्पसन

6

आप जांच करने की कोशिश कर सकते हैं कि फायरथ की पूर्वाग्रह में कमी आपके डेटासेट के साथ काम करती है या नहीं। यह एक दंडित संभावना दृष्टिकोण है जो उन डेटासेटों के लिए उपयोगी हो सकता है जो मानक glmपैकेज का उपयोग करके भिन्नता उत्पन्न करते हैं । कभी-कभी इसका उपयोग उस चर को खत्म करने के बजाय किया जा सकता है जो पूर्ण / लगभग पूर्ण पृथक्करण का उत्पादन करता है।

O(n1)

Fth की पूर्वाग्रह में कमी R- पैकेज में लागू की गई है logistf: http://cran.r-project.org/web/packages/logistf/logistf.pdf

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