R में लॉजिस्टिक रिग्रेशन सही पृथक्करण (हक-डोनर घटना) के परिणामस्वरूप हुआ। अब क्या?


56

मैं 50 निरंतर व्याख्यात्मक चर का उपयोग करके एक द्विआधारी परिणाम की भविष्यवाणी करने की कोशिश कर रहा हूं (अधिकांश चर की सीमा है से binary )। मेरे डेटा सेट में लगभग 24,000 पंक्तियाँ हैं। जब मैं R में दौड़ता हूं , मुझे मिलता है:glm

Warning messages:  
1: glm.fit: algorithm did not converge  
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

मैंने अन्य प्रतिक्रियाओं को पढ़ा है जो सही पृथक्करण का सुझाव देते हैं, हो सकता है, लेकिन मुझे विश्वास है कि मेरे डेटा में मामला नहीं है (हालांकि अर्ध-पूर्ण अलगाव मौजूद हो सकता है? मैं यह देखने के लिए कैसे परीक्षण कर सकता हूं कि क्या है?) । यदि मैं कुछ चर निकालता हूं, तो "अभिसरण नहीं" त्रुटि दूर हो सकती है। लेकिन ऐसा हमेशा नहीं होता है।

मैंने एक bayesglmफ़ंक्शन में समान चर का उपयोग करने की कोशिश की और समान त्रुटियां प्राप्त कीं।

आप यह पता लगाने के लिए कि यहाँ क्या चल रहा है, क्या कदम उठाएंगे? आप यह कैसे पता लगा सकते हैं कि कौन से चर समस्याओं का कारण बन रहे हैं?


5
आप आश्वस्त क्यों हैं कि अलगाव नहीं हो रहा है? में कागज , उनका तर्क है कि जुदाई "एक आम समस्या है, भले ही नमूना आकार बड़ा है और भविष्यवक्ताओं की संख्या कम है"bayesglm
डेविड जे हैरिस

2
एक और विचार: bayesglmएक पूर्व को जोड़कर अलगाव से बचने की कोशिश की जाती है, लेकिन 24,000 पंक्तियों के साथ, संभवतया पूर्व संभावना से दलदल हो रहा है। सिकोड़ने की कोशिश करें prior.scale, संभवतः एक बड़ी राशि द्वारा। स्वतंत्रता की पूर्व डिग्री को बढ़ाने पर भी विचार करें, जो अलगाव से जुड़े बड़े मूल्यों को नियंत्रित करने में मदद करेगा।
डेविड जे हैरिस

सुझाव के लिए धन्यवाद David। मुझे नहीं लगता कि अलगाव हो रहा है क्योंकि जब मैं व्याख्यात्मक चर में से प्रत्येक को सॉर्ट करता हूं, तो आश्रित चर व्याख्यात्मक चर के उच्च या निम्न मूल्यों के लिए हमेशा सही या गलत नहीं होता है। जब तक इसे अलग नहीं माना जाता है: आश्रित चर सभी x7> 32 के लिए सही है, लेकिन x7 केवल 10 मामलों में> 32 है। क्या लॉजिस्टिक रिग्रेशन के बाहर अलगाव को सत्यापित करने का कोई तरीका है? या देखें कि किस चर के कारण अलगाव हो रहा है? मैंने आपके बेज़लगम सुझावों की कोशिश की (मैंने पूर्व में 1 पर सेट करें और पहले से Inf.df पर) और फिर भी हाक डोनर त्रुटियों को प्राप्त किया।
Dcook


"आप यह कैसे पता लगा सकते हैं कि कौन से चर समस्याओं का कारण बन रहे हैं?" बाइनरी-सर्च हमेशा एक अच्छा कमबैक होता है। आपके पास केवल 50 चर हैं, इसलिए यदि यह एक व्यक्ति चर से पूरी तरह से अलग हो जाता है, तो 6 पुनरावृत्तियों को अपराधी मिल जाएगा। यदि यह दो चर है, तो अधिकांश 49 + 6 = 55 पुनरावृत्तियों को यह सबसे बुरा मामला लगेगा।
9

जवाबों:


55

R50

आप आसानी से परीक्षण कर सकते हैं कि आपकी कक्षाएं आपके डिज़ाइन स्थान में पूरी तरह से अलग हैं या नहीं। यह एक रैखिक प्रोग्रामिंग समस्या को हल करने के लिए फोड़ा। इस 'परीक्षण' का आर कार्यान्वयन (शब्द के सांख्यिकीय अर्थ में परीक्षण नहीं) को सुरक्षितबिनरीग्रेड पैकेज में लागू किया गया है

यदि यह पता चलता है कि अलगाव वास्तव में मुद्दा है, और यदि आप केवल एक सादे वेनिला ग्लम के उपयोग में रुचि रखते हैं (जैसे glm को उच्च स्तर के कार्य द्वारा नहीं बल्कि आपके द्वारा कहा जाता है), तो एक एल्गोरिदम का एक R कार्यान्वयन है जो थोड़ा शास्त्रीय को अलग करने के खिलाफ इसे 'मजबूत' बनाने के लिए संशोधित करता है। इसे hlr पैकेज में लागू किया गया है


4
बहुत अच्छा और उपयोगी जवाब! मुझे उन पैकेजों पर गौर करना होगा। (+1)
पीटर Flom - फिर से बहाल करें मोनिका

1
FWIW यहां एक और मजबूत एल्गोरिथ्म का वर्णन है: win-vector.com/blog/2012/10/rudie-cant-fail-if-majorized
एलेक्स

2
@ एलेक्स: लिंक के लिए धन्यवाद। अगर खराब शुरुआत के कारण glm कंवर्ट नहीं हो रहा है तो मैं देख सकता हूं कि यह तरीका किस तरह से मदद करेगा। दूसरी ओर, यदि समस्या पूर्ण पृथक्करण के कारण होती है, तो यह मेरे लिए स्पष्ट नहीं है कि एमएम विचार कैसे संबोधित करेगा। मैं सोच रहा था कि क्या आप इस पर टिप्पणी कर सकते हैं (मैं अंततः इसे एक अलग प्रश्न के रूप में पोस्ट कर सकता हूं)।
user603

बहुत बढ़िया (+1)! मुझे भी उन पैकेजों पर गौर करना होगा।
जुम्मन

1
उत्तर के लिए धन्यवाद @ user603! मैंने safeBinaryRegression का उपयोग किया और अलगाव वास्तव में कई चर के साथ हो रहा था। तब मैंने hlr पैकेज में MEL का उपयोग करके इस पृथक्करण के लिए एक मॉडल को मजबूत बनाने की कोशिश की। हालांकि, गुणांक बहुत बड़ा है (जैसा कि जब वे सामान्य चमक में पृथक्करण होता है) होगा और यहां डीएफ और अवमूल्यन संख्याएं हैं: डिग्री की स्वतंत्रता: 19112 कुल (यानी अशक्त); 19063 अवशिष्ट न्यु डीवियन: 24990 अवशिष्ट डीवियनस: 626000 एआईसी: 626000 क्या आपको लगता है कि मैंने कुछ गलत किया है?
Dcook
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.