كيفية التعامل مع: glm.fit: حدثت الاحتمالات المعدلة عدديًا 0 أو 1


رسالة التحذير التي قد تواجهها في R هي:

 Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

يحدث هذا التحذير عندما تقوم بتركيب نموذج انحدار لوجستي ولا يمكن تمييز الاحتمالات المتوقعة لملاحظة واحدة أو أكثر في قاعدة البيانات الخاصة بك عن 0 أو 1.

يرجى ملاحظة أن هذه رسالة تحذير وليست خطأ. حتى إذا تلقيت هذا الخطأ، فسيظل نموذج الانحدار اللوجستي الخاص بك مناسبًا، ولكن قد يكون من المفيد تحليل إطار البيانات الأصلي لمعرفة ما إذا كانت هناك أي قيم متطرفة تتسبب في ظهور رسالة التحذير هذه.

يشرح هذا البرنامج التعليمي كيفية التعامل مع رسالة التحذير هذه عمليًا.

كيفية إعادة إنتاج التحذير

لنفترض أننا نلائم نموذج الانحدار اللوجستي لإطار البيانات التالي في R:

 #create data frame
df <- data. frame (y = c(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1),
                 x1 = c(3, 3, 4, 4, 3, 2, 5, 8, 9, 9, 9, 8, 9, 9, 9),
                 x2 = c(8, 7, 7, 6, 5, 6, 5, 2, 2, 3, 4, 3, 7, 4, 4))

#fit logistic regression model
model <- glm(y ~ x1 + x2, data=df, family=binomial)

#view model summary
summary(model)

Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

Call:
glm(formula = y ~ x1 + x2, family = binomial, data = df)

Deviance Residuals: 
       Min 1Q Median 3Q Max  
-1.729e-05 -2.110e-08 2.110e-08 2.110e-08 1.515e-05  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -75.205 307338.933 0 1
x1 13,309 28512,818 0 1
x2 -2.793 37342.280 0 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.0728e+01 on 14 degrees of freedom
Residual deviance: 5.6951e-10 on 12 degrees of freedom
AIC: 6

Number of Fisher Scoring iterations: 24

نموذج الانحدار اللوجستي الخاص بنا يناسب البيانات بنجاح، ولكننا نتلقى رسالة تحذير تقوم بضبط الاحتمالات عدديًا إلى 0 أو 1 .

إذا استخدمنا نموذج الانحدار اللوجستي المناسب لإجراء تنبؤات حول قيمة الاستجابة للملاحظات في قاعدة البيانات الأصلية، يمكننا أن نرى أن جميع الاحتمالات المتوقعة تقريبًا لا يمكن تمييزها عن 0 و1:

 #use fitted model to predict response values
df$y_pred = predict(model, df, type=" response ")

#view updated data frame
df

   y x1 x2 y_pred
1 0 3 8 2.220446e-16
2 0 3 7 2.220446e-16
3 0 4 7 2.220446e-16
4 0 4 6 2.220446e-16
5 0 3 5 2.220446e-16
6 0 2 6 2.220446e-16
7 0 5 5 1.494599e-10
8 1 8 2 1.000000e+00
9 1 9 2 1.000000e+00
10 1 9 3 1.000000e+00
11 1 9 4 1.000000e+00
12 1 8 3 1.000000e+00
13 1 9 7 1.000000e+00
14 1 9 4 1.000000e+00
15 1 9 4 1.000000e+00

كيفية التعامل مع التحذير

هناك ثلاث طرق للتعامل مع رسالة التحذير هذه:

(١) تجاهله.

في بعض الحالات، يمكنك ببساطة تجاهل رسالة التحذير هذه لأنها لا تشير بالضرورة إلى وجود مشكلة في نموذج الانحدار اللوجستي. هذا يعني ببساطة أن واحدة أو أكثر من الملاحظات في إطار البيانات تنبأت بقيم لا يمكن تمييزها عن 0 أو 1.

(2) زيادة حجم العينة.

في حالات أخرى، تظهر رسالة التحذير هذه عند العمل مع كتل صغيرة من البيانات التي لا توجد لها بيانات كافية لتوفير نموذج مناسب يمكن الاعتماد عليه. لتصحيح هذا الخطأ، ما عليك سوى زيادة حجم عينة الملاحظات التي تغذيها في النموذج.

(3) إزالة القيم المتطرفة.

في حالات أخرى، يحدث هذا الخطأ عندما تكون هناك قيم متطرفة في قاعدة البيانات الأصلية ويكون عدد قليل فقط من الملاحظات لها احتمالات قريبة من 0 أو 1. وبإزالة هذه القيم المتطرفة، تختفي رسالة التحذير غالبًا.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية التعامل مع التحذيرات والأخطاء الأخرى في R:

كيفية الإصلاح في R: صيغة القالب غير صالحة في ExtractVars
كيفية الإصلاح في R: الوسيطة ليست رقمية ولا منطقية: return na
كيفية الإصلاح: RandomForest.default(m, y, …): Na/NaN/Inf في استدعاء الوظيفة الخارجية

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *