ক্লাসগুলি ভালভাবে বিচ্ছিন্ন হয়ে গেলে লজিস্টিক রিগ্রেশন কেন অস্থিতিশীল হয়? ভালভাবে বিচ্ছিন্ন শ্রেণীর অর্থ কী? কেউ যদি উদাহরণ দিয়ে ব্যাখ্যা করতে পারে তবে আমি সত্যিই প্রশংসা করব।
ক্লাসগুলি ভালভাবে বিচ্ছিন্ন হয়ে গেলে লজিস্টিক রিগ্রেশন কেন অস্থিতিশীল হয়? ভালভাবে বিচ্ছিন্ন শ্রেণীর অর্থ কী? কেউ যদি উদাহরণ দিয়ে ব্যাখ্যা করতে পারে তবে আমি সত্যিই প্রশংসা করব।
উত্তর:
এটি সঠিক নয় যে বিচ্ছেদ থাকা অবস্থায় লজিস্টিক রিগ্রেশন নিজেই অস্থির হয়ে ওঠে । পৃথকীকরণের অর্থ এমন কিছু ভেরিয়েবল রয়েছে যা খুব ভাল ভবিষ্যদ্বাণীকারী, যা ভাল, বা পৃথকীকরণ খুব কম পর্যবেক্ষণ / অত্যধিক ভেরিয়েবলের একটি নিদর্শন হতে পারে। যদি এটি হয় তবে সমাধানটি আরও ডেটা পেতে পারে। তবে বিচ্ছেদ নিজেই কেবল একটি লক্ষণ, এবং নিজেই কোনও সমস্যা নয়।
সুতরাং চিকিত্সা করার জন্য সত্যই আলাদা আলাদা কেস রয়েছে। প্রথমত, বিশ্লেষণের লক্ষ্য কী? বিশ্লেষণের চূড়ান্ত ফলাফল যদি কেসের কিছু শ্রেণিবিন্যাস হয় তবে বিচ্ছেদ কোনও সমস্যা নয়, এর সত্যিকার অর্থেই এখানে খুব ভাল ভেরিয়েবল রয়েছে যা খুব ভাল শ্রেণিবদ্ধকরণ দেয়। তবে লক্ষ্যটি যদি ঝুঁকি অনুমান হয় তবে আমাদের প্যারামিটারের অনুমানগুলি প্রয়োজন এবং পৃথকীকরণের সাথে স্বাভাবিক ম্লে (সর্বাধিক সম্ভাবনা) অনুমানের অস্তিত্ব থাকে না। সুতরাং আমাদের অবশ্যই অনুমানের পদ্ধতিটি পরিবর্তন করতে হবে maybe সাহিত্যে বেশ কয়েকটি প্রস্তাব রয়েছে, আমি আবার ফিরে আসব।
তারপরে পৃথক হওয়ার জন্য দুটি পৃথক সম্ভাব্য কারণ রয়েছে (উপরে যেমন বলা হয়েছে)। সম্পূর্ণ জনসংখ্যার মধ্যে বিচ্ছেদ হতে পারে, বা বিচ্ছিন্নতা কয়েকটি পর্যবেক্ষিত ক্ষেত্রে / খুব বেশি ভেরিয়েবলের কারণে ঘটতে পারে।
পৃথকীকরণের সাথে যা ভেঙে যায় তা হ'ল সর্বাধিক সম্ভাবনা অনুমানের পদ্ধতি। ম্যালের প্যারামিটার অনুমান (বা তাদের মধ্যে কমপক্ষে কিছু) অসীম হয়ে যায়। আমি এই উত্তরের প্রথম সংস্করণে বলেছিলাম যে এটি সহজে সমাধান করা যেতে পারে, সম্ভবত বুটস্ট্র্যাপিংয়ের মাধ্যমে, তবে এটি কার্যকর হয় না, যেহেতু প্রতিটি বুটস্ট্র্যাপের নমুনায় পৃথকীকরণ থাকবে, কমপক্ষে স্বাভাবিক ক্ষেত্রে বুটস্ট্র্যাপিং পদ্ধতিতে। তবে লজিস্টিক রিগ্রেশন এখনও একটি বৈধ মডেল, তবে আমাদের আরও কিছু প্রাক্কলন পদ্ধতি দরকার। কিছু প্রস্তাব দেওয়া হয়েছে:
আপনি যদি আর ব্যবহার করেন তবে সিআরএএন-তে একটি প্যাকেজ রয়েছে 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 থেকে এখানে ভাল উত্তর রয়েছে। আপনি একটি উদাহরণ চেয়েছিলেন। নীচের চিত্রটি বিবেচনা করুন। আপনি এমন কিছু পরিস্থিতি দেখতে পাবেন যেখানে ডেটা উত্পন্নকরণ প্রক্রিয়াটি প্যানেল এ-তে প্রদর্শিত চিত্রের মতো । যদি তা হয় তবে এটি সম্ভবত সম্ভব যে আপনি যে তথ্যটি সংগ্রহ করেন তা প্যানেল বি এর মতো দেখায় । এখন, আপনি যখন একটি পরিসংখ্যানগত মডেল তৈরি করতে ডেটা ব্যবহার করেন, তখন ধারণাটি হ'ল সত্য উপাত্ত তৈরির প্রক্রিয়াটি পুনরুদ্ধার করা বা কমপক্ষে একটি আনুমানিক সাথে যুক্ত হওয়া উচিত যা যুক্তিসঙ্গতভাবে নিকটবর্তী। সুতরাং, প্রশ্নটি হল, বি এর উপাত্তগুলিতে কোনও লজিস্টিক রিগ্রেশন ফিটিং করা কি এমন একটি মডেল প্রদান করবে যা এ এর নীল রেখার সাথে সীমাবদ্ধ ? আপনি যদি প্যানেল সি তাকান, আপনি দেখতে পাচ্ছেন যে ধূসর লাইনটি সঠিক ফাংশনটির চেয়ে ডেটাটিকে আরও ভাল করে সংযুক্ত করে, তাই সেরা ফিটের জন্য লজিস্টিক রিগ্রেশন নীল রঙের পরিবর্তে ধূসর রেখাকে ফিরিয়ে দিতে 'পছন্দ' করবে। তবে সেখানেই থেমে নেই। প্যানেলে ডি, কালো রেখাটি ধূসর রঙের চেয়ে ডেটাটিকে আরও ভালভাবে অনুমান করে — আসলে, এটি সম্ভবত সবচেয়ে ভাল ফিট fit সুতরাং লজিস্টিক রিগ্রেশন মডেলটি সেই লাইনটি অনুসরণ করছে। এটি নেতিবাচক অনন্তের একটি বিরতি এবং অনন্তের opeালুতে মিলে যায়। এটি অবশ্যই সত্য থেকে খুব দূরে যে আপনি পুনরুদ্ধার আশা করছেন। সম্পূর্ণ পৃথকীকরণ আপনার চলকগুলির জন্য পি-মানগুলির গণনাতে সমস্যা তৈরি করতে পারে যা লজিস্টিক রিগ্রেশন আউটপুট (সেখানে ব্যাখ্যাটি কিছুটা আলাদা এবং আরও জটিল) standard তদ্ব্যতীত, এখানে অন্যান্য চেষ্টাগুলির সাথে ফিটগুলি একত্রিত করার চেষ্টা করা হচ্ছে, উদাহরণস্বরূপ একটি মেটা-বিশ্লেষণের সাথে, অন্যান্য অনুসন্ধানগুলি কেবল কম নির্ভুল করে তুলবে।
আপনি যেটিকে "বিচ্ছেদ" বলছেন ('বিচ্ছেদ' নয়) দুটি ভিন্ন পরিস্থিতি কভার করে যা একই সমস্যার কারণ হয়ে দাঁড়ায় - যা আমি বলব না, তবে আপনি যেমন করেন তেমন "অস্থিতিশীলতা" এর একটি সমস্যা।
যদি টাইটানিকের সমস্ত প্রথম শ্রেণির যাত্রী ধ্বংসস্তূপ থেকে বেঁচে থাকে এবং দ্বিতীয় শ্রেণির যাত্রীদের কেউই বাঁচতে না পারে তবে এটি ঘটবে ।
এটি রাইনী 2016 এবং জর্ন 2005 এ ভালভাবে ব্যাখ্যা করা হয়েছে ।
উভয় ক্ষেত্রেই, আপনার মডেলটির সম্ভাবনা ফাংশন সর্বাধিক সম্ভাবনার অনুমানের সন্ধান করতে অক্ষম হবে: এটি কেবলমাত্র মূল্যবোধের নিকটবর্তী হয়ে সেই মানটির একটি সীমাবদ্ধতা খুঁজে পাবে।
আপনি যেটিকে "অস্থিতিশীলতা" বলছেন তা হ'ল সম্পূর্ণ বা আধা-সম্পূর্ণ বিচ্ছেদের ক্ষেত্রে, লজিস্টিক মডেলটি পৌঁছানোর কোনও সীমাবদ্ধ সম্ভাবনা নেই। তবে আমি এই শব্দটি ব্যবহার করব না: সম্ভাবনার কাজটি আসলে, অনন্তের দিকে তার সহগ মানগুলি নির্ধারণের ক্ষেত্রে বেশ "স্থিতিশীল" (একঘেয়েমি) হওয়া।
দ্রষ্টব্য: আমার উদাহরণটি কাল্পনিক। টাইটানিকের উপর বেঁচে থাকা কেবল যাত্রীবাহী শ্রেণির সদস্যপদ লাভ করতে পারেনি। হল দেখুন (1986) ।