كيفية الإصلاح في r: غير محدد بسبب التفردات


رسالة الخطأ التي قد تواجهها في R هي:

 Coefficients: (1 not defined because of singularities) 

تظهر رسالة الخطأ هذه عندما تقوم بملاءمة نموذج باستخدام الدالة glm() في R ويكون لاثنين أو أكثر من متغيرات التوقع الخاصة بك علاقة خطية دقيقة مع بعضها البعض – تُعرف باسم العلاقة الخطية المتعددة المثالية .

لإصلاح هذا الخطأ، يمكنك استخدام الدالة cor() لتحديد المتغيرات في مجموعة البيانات الخاصة بك والتي لها ارتباط مثالي مع بعضها البعض وإزالة أحد هذه المتغيرات ببساطة من نموذج الانحدار.

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

كيفية إعادة إنتاج الخطأ

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

 #define data
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(6, 6, 8, 8, 6, 4, 10, 16, 18, 18, 18, 16, 18, 18, 18),
                 x3 = c(4, 7, 7, 3, 8, 9, 9, 8, 7, 8, 9, 4, 9, 10, 13))

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

#view model summary
summary(model)

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

Deviance Residuals: 
       Min 1Q Median 3Q Max  
-1.372e-05 -2.110e-08 2.110e-08 2.110e-08 1.575e-05  

Coefficients: (1 not defined because of singularities)
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -75.496 176487.031 0.000 1
x1 14.546 24314.459 0.001 1
x2 NA NA NA NA
x3 -2.258 20119.863 0.000 1

(Dispersion parameter for binomial family taken to be 1)

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

Number of Fisher Scoring iterations: 24

لاحظ أنه قبل إخراج المعامل مباشرة، نتلقى الرسالة:

 Coefficients: (1 not defined because of singularities)

ويشير هذا إلى أن اثنين أو أكثر من المتغيرات المتوقعة في النموذج لها علاقة خطية مثالية، وبالتالي لا يمكن تقدير جميع معاملات الانحدار في النموذج.

على سبيل المثال، لاحظ أنه لا يمكن إجراء تقديرات للمعامل للمتغير المتوقع x 2 .

كيفية التعامل مع الخطأ

لتحديد المتغيرات المتوقعة التي تسبب هذا الخطأ، يمكننا استخدام الدالة cor() لإنتاج مصفوفة ارتباط وفحص المتغيرات التي لها ارتباط 1 بالضبط مع بعضها البعض:

 #create correlation matrix
cor(df)

           y x1 x2 x3
y 1.0000000 0.9675325 0.9675325 0.3610320
x1 0.9675325 1.0000000 1.0000000 0.3872889
x2 0.9675325 1.0000000 1.0000000 0.3872889
x3 0.3610320 0.3872889 0.3872889 1.0000000

من مصفوفة الارتباط، يمكننا أن نرى أن المتغيرين x 1 و x 2 مرتبطان تمامًا.

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

على سبيل المثال، لنفترض أننا قمنا بإزالة x 2 وتناسب نموذج الانحدار اللوجستي التالي:

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

#view model summary
summary(model)

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

Deviance Residuals: 
       Min 1Q Median 3Q Max  
-1.372e-05 -2.110e-08 2.110e-08 2.110e-08 1.575e-05  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -75.496 176487.031 0.000 1
x1 14.546 24314.459 0.001 1
x3 -2.258 20119.863 0.000 1

(Dispersion parameter for binomial family taken to be 1)

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

Number of Fisher Scoring iterations: 24

لاحظ أننا لا نتلقى رسالة الخطأ “غير محدد بسبب التفردات” هذه المرة.

ملحوظة : لا يهم إذا قمنا بإزالة x 1 أو x 2 . سيحتوي النموذج النهائي على نفس المعامل التقديري للمتغير الذي قررت الاحتفاظ به وستكون الجودة الإجمالية لملاءمة النموذج هي نفسها.

مصادر إضافية

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

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

Add a Comment

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