जब कक्षाएं अच्छी तरह से अलग हो जाती हैं तो लॉजिस्टिक रिग्रेशन अस्थिर क्यों हो जाता है? अच्छी तरह से अलग वर्गों का क्या मतलब है? अगर कोई उदाहरण के साथ समझा सकता है तो मैं वास्तव में सराहना करूंगा।
जब कक्षाएं अच्छी तरह से अलग हो जाती हैं तो लॉजिस्टिक रिग्रेशन अस्थिर क्यों हो जाता है? अच्छी तरह से अलग वर्गों का क्या मतलब है? अगर कोई उदाहरण के साथ समझा सकता है तो मैं वास्तव में सराहना करूंगा।
जवाबों:
यह सही नहीं है कि अलग होने पर लॉजिस्टिक रिग्रेशन अपने आप में अस्थिर हो जाता है । पृथक्करण का अर्थ है कि कुछ चर ऐसे हैं जो बहुत अच्छे भविष्यवक्ता हैं, जो कि अच्छा है, या, पृथक्करण बहुत कम टिप्पणियों / बहुत अधिक चर की एक कलाकृति हो सकती है। यदि ऐसा है, तो समाधान अधिक डेटा प्राप्त करने के लिए हो सकता है। लेकिन खुद को अलग करना, केवल एक लक्षण है, और अपने आप में एक समस्या नहीं है।
तो वास्तव में विभिन्न मामलों का इलाज किया जाना है। पहला, विश्लेषण का लक्ष्य क्या है? यदि विश्लेषण का अंतिम परिणाम मामलों का कुछ वर्गीकरण है, तो जुदाई कोई समस्या नहीं है, इसका वास्तव में मतलब है कि बहुत अच्छे वर्गीकरण हैं जो बहुत अच्छा वर्गीकरण देते हैं। लेकिन अगर लक्ष्य जोखिम का अनुमान है, तो हमें पैरामीटर अनुमानों की आवश्यकता है, और अलगाव के साथ सामान्य मील (अधिकतम संभावना) अनुमान मौजूद नहीं है। इसलिए हमें अनुमान विधि बदलनी चाहिए, हो सकता है। साहित्य में कई प्रस्ताव हैं, मैं उस पर वापस आऊंगा।
फिर अलगाव के लिए दो अलग-अलग संभावित कारण हैं (जैसा कि ऊपर कहा गया है)। पूरी आबादी में अलगाव हो सकता है, या कुछ देखे गए मामलों / बहुत अधिक चर के कारण अलगाव हो सकता है।
अलगाव के साथ क्या टूट जाता है, अधिकतम संभावना आकलन प्रक्रिया है। Mle पैरामीटर अनुमान (या कम से कम उनमें से कुछ) अनंत हो जाता है। मैंने इस उत्तर के पहले संस्करण में कहा था कि इसे आसानी से हल किया जा सकता है, शायद बूटस्ट्रैपिंग के साथ, लेकिन यह काम नहीं करता है, क्योंकि प्रत्येक बूटस्ट्रैप में जुदाई होगी, कम से कम सामान्य मामलों में बूटस्ट्रैपिंग प्रक्रिया। लेकिन लॉजिस्टिक प्रतिगमन अभी भी एक वैध मॉडल है, लेकिन हमें कुछ अन्य अनुमान प्रक्रिया की आवश्यकता है। कुछ प्रस्ताव दिए गए हैं:
यदि आप R का उपयोग करते हैं, तो CRAN पर एक पैकेज है SafeBinaryRegression
, जो पृथक्करण के साथ समस्याओं का निदान करने में मदद करता है, गणितीय अनुकूलन विधियों का उपयोग करके यह सुनिश्चित करने के लिए जाँच करता है कि क्या पृथक्करण या विलोपन है! निम्नलिखित में मैं इस पैकेज का उपयोग करके एक सिम्युलेटेड उदाहरण दूंगा, और elrm
अनुमानित सशर्त लॉजिस्टिक प्रतिगमन के लिए पैकेज।
सबसे पहले, safeBinaryRegression
पैकेज के साथ एक सरल उदाहरण । यह पैकेज glm
रेखीय प्रोग्रामिंग विधियों का उपयोग करते हुए, फंक्शन को फिर से परिभाषित करता है, इसे पृथक्करण के परीक्षण के साथ अधिभारित करता है। यदि यह पृथक्करण का पता लगाता है, तो यह एक त्रुटि स्थिति के साथ बाहर निकलता है, यह घोषणा करता है कि एमएलई मौजूद नहीं है। अन्यथा यह सिर्फ साधारण glm
फ़ंक्शन से चलता है stats
। इसका उदाहरण इसके मदद पन्नों से है:
library(safeBinaryRegression) # Some testing of that package,
# based on its examples
# complete separation:
x <- c(-2, -1, 1, 2)
y <- c(0, 0, 1, 1)
glm(y ~ x, family=binomial)
glm(y ~ x, family=binomial, separation="test")
stats::glm(y~ x, family=binomial)
# Quasicomplete separation:
x <- c(-2, 0, 0, 2)
y <- c(0, 0, 1, 1)
glm(y ~ x, family=binomial)
glm(y ~ x, family=binomial, separation="test")
stats::glm(y~ x, family=binomial)
इसे चलाने से आउटपुट:
> # complete separation:
> x <- c(-2, -1, 1, 2)
> y <- c(0, 0, 1, 1)
> glm(y ~ x, family=binomial)
Error in glm(y ~ x, family = binomial) :
The following terms are causing separation among the sample points: (Intercept), x
> glm(y ~ x, family=binomial, separation="test")
Error in glm(y ~ x, family = binomial, separation = "test") :
Separation exists among the sample points.
This model cannot be fit by maximum likelihood.
> stats::glm(y~ x, family=binomial)
Call: stats::glm(formula = y ~ x, family = binomial)
Coefficients:
(Intercept) x
-9.031e-08 2.314e+01
Degrees of Freedom: 3 Total (i.e. Null); 2 Residual
Null Deviance: 5.545
Residual Deviance: 3.567e-10 AIC: 4
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
> # Quasicomplete separation:
> x <- c(-2, 0, 0, 2)
> y <- c(0, 0, 1, 1)
> glm(y ~ x, family=binomial)
Error in glm(y ~ x, family = binomial) :
The following terms are causing separation among the sample points: x
> glm(y ~ x, family=binomial, separation="test")
Error in glm(y ~ x, family = binomial, separation = "test") :
Separation exists among the sample points.
This model cannot be fit by maximum likelihood.
> stats::glm(y~ x, family=binomial)
Call: stats::glm(formula = y ~ x, family = binomial)
Coefficients:
(Intercept) x
5.009e-17 9.783e+00
Degrees of Freedom: 3 Total (i.e. Null); 2 Residual
Null Deviance: 5.545
Residual Deviance: 2.773 AIC: 6.773
अब हम एक मॉडल से अनुकरण करते हैं जो एक लॉजिस्टिक मॉडल द्वारा बारीकी से अनुमानित किया जा सकता है, सिवाय इसके कि एक निश्चित कटऑफ के ऊपर घटना की संभावना बिल्कुल 1.0 है। जैव समस्या के बारे में सोचें, लेकिन कटऑफ के ऊपर जहर हमेशा मारता है:
pl <- function(a, b, x) 1/(1+exp(-a-b*x))
a <- 0
b <- 1.5
x_cutoff <- uniroot(function(x) pl(0,1.5,x)-0.98,lower=1,upper=3.5)$root
### circa 2.6
pltrue <- function(a, b, x) ifelse(x < x_cutoff, pl(a, b, x), 1.0)
x <- -3:3
### Let us simulate many times from this model, and try to estimate it
### with safeBinaryRegression::glm That way we can estimate the probability
### of separation from this model
set.seed(31415926) ### May I have a large container of coffee
replications <- 1000
p <- pltrue(a, b, x)
err <- 0
good <- 0
for (i in 1:replications) {
y <- rbinom(length(x), 1, p)
res <- try(glm(y~x, family=binomial), silent=TRUE)
if (inherits(res,"try-error")) err <- err+1 else good <- good+1
}
P_separation <- err/replications
P_separation
इस कोड को चलाते समय, हम 0.759 के रूप में अलग होने की संभावना का अनुमान लगाते हैं। कोड स्वयं चलाएं, यह तेज़ है!
फिर हम एल्रम से विभिन्न अनुमान प्रक्रियाओं, एमएलई और अनुमानित सशर्त लॉजिस्टिक प्रतिगमन की कोशिश करने के लिए इस कोड का विस्तार करते हैं। इस सिमुलेशन को चलाने में मेरे कंप्यूटर पर लगभग 40 मिनट लगते हैं।
library(elrm) # from CRAN
set.seed(31415926) ### May I have a large container of coffee
replications <- 1000
GOOD <- numeric(length=replications) ### will be set to one when MLE exists!
COEFS <- matrix(as.numeric(NA), replications, 2)
COEFS.elrm <- matrix(as.numeric(NA), replications, 2) # But we'll only use second col for x
p <- pltrue(a, b, x)
err <- 0
good <- 0
for (i in 1:replications) {
y <- rbinom(length(x), 1, p)
res <- try(glm(y~x, family=binomial), silent=TRUE)
if (inherits(res,"try-error")) err <- err+1 else{ good <- good+1
GOOD[i] <- 1 }
# Using stats::glm
mod <- stats::glm(y~x, family=binomial)
COEFS[i, ] <- coef(mod)
# Using elrm:
DATASET <- data.frame(x=x, y=y, n=1)
mod.elrm <- elrm(y/n ~ x, interest= ~ x -1, r=4, iter=10000, burnIn=1000,
dataset=DATASET)
COEFS.elrm[i, 2 ] <- mod.erlm$coeffs
}
### Now we can compare coefficient estimates of x,
### when there are separation, and when not:
non <- which(GOOD==1)
cof.mle.non <- COEFS[non, 2, drop=TRUE]
cof.mle.sep <- COEFS[-non, 2, drop=TRUE]
cof.elrm.non <- COEFS.elrm[non, 2, drop=TRUE]
cof.elrm.sep <- COEFS.elrm[-non, 2, drop=TRUE]
अब हम परिणामों की साजिश करना चाहते हैं, लेकिन इससे पहले, ध्यान दें कि सभी सशर्त अनुमान समान हैं! यह वास्तव में अजीब है और इसे स्पष्टीकरण की आवश्यकता है ... सामान्य मूल्य 0.9523975 है। लेकिन कम से कम हमने विश्वास के अंतराल के साथ परिमित अनुमान प्राप्त किए, जिसमें सही मूल्य (यहां नहीं दिखाया गया है) शामिल है। इसलिए मैं केवल अलगाव के बिना मामलों में मील अनुमान का एक हिस्टोग्राम दिखाऊंगा:
hist(cof.mle.non, prob=TRUE)
[
क्या उल्लेखनीय है कि सभी अनुमान सही मूल्य 1.5 से कम हैं। इस तथ्य के साथ करना पड़ सकता है कि हमने एक संशोधित मॉडल से नकल की है, जांच की आवश्यकता है।
@ Sean501 और @kjetilbhalvorsen से यहाँ अच्छे उत्तर हैं। आपने एक उदाहरण मांगा। नीचे दिए गए आंकड़े पर विचार करें। आप कुछ स्थिति में आ सकते हैं जिसमें डेटा निर्माण की प्रक्रिया पैनल ए में चित्रित की तरह है । यदि हां, तो यह बहुत संभव है कि आप जो डेटा इकट्ठा करते हैं, वह वास्तव में पैनल बी के समान दिखे । अब, जब आप एक सांख्यिकीय मॉडल बनाने के लिए डेटा का उपयोग करते हैं, तो विचार सही डेटा जनरेट करने की प्रक्रिया को पुनर्प्राप्त करने या कम से कम एक अनुमान के साथ आता है जो कि काफी करीब है। इस प्रकार, सवाल यह है कि क्या बी में डेटा के लिए एक लॉजिस्टिक रिग्रेशन फिट होगा जो ए में ब्लू लाइन का अनुमान लगाता है ? यदि आप पैनल सी को देखते हैं, आप देख सकते हैं कि ग्रे लाइन बेहतर फंक्शन की तुलना में डेटा को अनुमानित करती है, इसलिए सर्वश्रेष्ठ फिट की तलाश में, लॉजिस्टिक रिग्रेशन नीले रंग के बजाय ग्रे लाइन को वापस करने के लिए 'पसंद' करेगा। हालाँकि यह वहाँ नहीं रुकता। पैनल डी को देखते हुएकाली रेखा ग्रे से बेहतर डेटा का अनुमान लगाती है - वास्तव में, यह सबसे अच्छा फिट है जो संभवतः हो सकता है। यही कारण है कि लाइन लॉजिस्टिक प्रतिगमन मॉडल का पीछा कर रहा है। यह नकारात्मक अनंत के एक अवरोधन और अनंत के एक ढलान से मेल खाती है। बेशक, इस सच्चाई से बहुत दूर है कि आप ठीक होने की उम्मीद कर रहे हैं। पूर्ण पृथक्करण आपके वैरिएबल के लिए पी-वैल्यू की गणना के साथ समस्याएं भी पैदा कर सकता है जो लॉजिस्टिक रिग्रेशन आउटपुट के साथ मानक आते हैं (स्पष्टीकरण थोड़ा अलग और अधिक जटिल है)। इसके अलावा, अन्य प्रयासों के साथ यहां फिट को संयोजित करने की कोशिश करना, उदाहरण के लिए मेटा-विश्लेषण के साथ, अन्य निष्कर्षों को कम सटीक बना देगा।
जिसे आप "पृथक्करण" कह रहे हैं ('अलगाव' नहीं) दो अलग-अलग स्थितियों को समाहित करता है जो एक ही मुद्दे का कारण बनते हैं - जिसे मैं नहीं कहूंगा, हालांकि, "अस्थिरता" का एक मुद्दा जैसा कि आप करते हैं।
एक अलग स्वतंत्र चर।
जीवित रहने का संकेत है।
यदि टाइटैनिक पर सभी प्रथम श्रेणी के यात्री मलबे से बच गए थे, और दूसरी श्रेणी के यात्रियों में से कोई भी जीवित नहीं था, तो यह मामला होगा ।
।
आवश्यकता नहीं है बाइनरी होना जैसा कि मेरे उदाहरण में है)।
यह Rainey 2016 और Zorn 2005 में अच्छी तरह से समझाया गया है ।
।
प्रथम श्रेणी के यात्री सदस्यता का संकेत ।
यह समस्याग्रस्त है क्योंकि लॉजिस्टिक वक्र कड़ाई के बीच स्थित है तथा , जिसका अर्थ है कि देखे गए डेटा को मॉडल करने के लिए, अधिकतमकरण अपनी कुछ शर्तों को अनन्तता की ओर धकेलने वाला है, यदि आप चाहें, तो "असीम" की भविष्यवाणी ।
अर्ध-पूर्ण पृथक्करण के तहत एक ही समस्या उत्पन्न होती है , क्योंकि लॉजिस्टिक वक्र को अभी भी या तो केवल मान निर्दिष्ट करने की आवश्यकता होगी या सेवा मेरे एक दो मामलों में, या ।
दोनों ही मामलों में, आपके मॉडल की संभावना फ़ंक्शन को अधिकतम संभावना अनुमान लगाने में असमर्थ होगा: यह केवल एसिमेटोटॉलिक रूप से संपर्क करके उस मूल्य का एक अनुमान लगाएगा।
जिसे आप "अस्थिरता" कह रहे हैं वह तथ्य यह है कि, पूर्ण या अर्ध-पूर्ण अलगाव के मामलों में, लॉजिस्टिक मॉडल तक पहुंचने के लिए कोई सीमित संभावना नहीं है। मैं उस शब्द का उपयोग नहीं करूंगा, हालांकि: संभावना समारोह, वास्तव में, अनंत के प्रति गुणांक मूल्यों के असाइनमेंट में बहुत "स्थिर" (मोनोटोनिक) है।
नोट: मेरा उदाहरण काल्पनिक है। टाइटैनिक पर जीवन रक्षा केवल यात्री वर्ग की सदस्यता के लिए नहीं उबरी। हॉल (1986) देखें ।