كيفية حساب r-squared لـ glm في r
في كثير من الأحيان عندما نلائم نموذج الانحدار الخطي، نستخدم R-squared لتقييم مدى ملاءمة النموذج للبيانات.
يمثل مربع R نسبة التباين في متغير الاستجابة الذي يمكن تفسيره بواسطة المتغيرات المتوقعة في نموذج الانحدار.
ويتراوح هذا الرقم من 0 إلى 1، وتشير القيم الأعلى إلى ملاءمة أفضل للنموذج.
ومع ذلك، لا توجد قيمة R-squared للنماذج الخطية العامة مثل نماذج الانحدار اللوجستي ونماذج انحدار بواسون .
بدلاً من ذلك، يمكننا حساب مقياس يُعرف باسم McFadden’s R-Squared ، والذي يتراوح من 0 إلى أقل بقليل من 1، مع القيم الأعلى التي تشير إلى ملاءمة أفضل للنموذج.
نستخدم الصيغة التالية لحساب مربع R لـ McFadden:
McFadden’s R-Squared = 1 – ( نموذج احتمال السجل / احتمال السجل الصفري )
ذهب:
- نموذج احتمالية السجل : سجل قيمة احتمالية النموذج المجهز الحالي
- احتمالية السجل الصفرية : قيمة احتمالية السجل للنموذج الفارغ (النموذج مع التقاطع فقط)
من الناحية العملية، تشير القيم الأعلى من 0.40 إلى أن النموذج يناسب البيانات بشكل جيد للغاية.
يوضح المثال التالي كيفية حساب مربع R لـ McFadden لنموذج الانحدار اللوجستي في R.
مثال: حساب مربع R لـ McFadden في R
في هذا المثال، سوف نستخدم مجموعة البيانات الافتراضية من حزمة ISLR. يمكننا استخدام الكود التالي لتحميل وعرض ملخص لمجموعة البيانات:
#install and load ISLR package install. packages (' ISLR ') library (ISLR) #define dataset data <- ISLR::Default #view summary of dataset summary(data) default student balance income No:9667 No:7056 Min. : 0.0 Min. : 772 Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340 Median: 823.6 Median: 34553 Mean: 835.4 Mean: 33517 3rd Qu.:1166.3 3rd Qu.:43808 Max. :2654.3 Max. :73554 #find total observations in dataset nrow(data) [1] 10000
تحتوي مجموعة البيانات هذه على المعلومات التالية عن 10000 فرد:
- الافتراضي: يشير إلى ما إذا كان الفرد قد تخلف أم لا.
- الطالب: يشير إلى ما إذا كان الفرد طالبًا أم لا.
- الرصيد: متوسط الرصيد الذي يحمله الفرد.
- الدخل: دخل الفرد.
سوف نستخدم حالة الطالب والرصيد البنكي والدخل لبناء نموذج الانحدار اللوجستي الذي يتنبأ باحتمالية تخلف فرد معين عن السداد:
#fit logistic regression model model <- glm(default~student+balance+income, family=' binomial ', data=data) #view model summary summary(model) Call: glm(formula = default ~ balance + student + income, family = "binomial", data = data) Deviance Residuals: Min 1Q Median 3Q Max -2.4691 -0.1418 -0.0557 -0.0203 3.7383 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -1.087e+01 4.923e-01 -22.080 < 2e-16 *** balance 5.737e-03 2.319e-04 24.738 < 2e-16 *** studentYes -6.468e-01 2.363e-01 -2.738 0.00619 ** income 3.033e-06 8.203e-06 0.370 0.71152 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 2920.6 on 9999 degrees of freedom Residual deviance: 1571.5 on 9996 degrees of freedom AIC: 1579.5 Number of Fisher Scoring iterations: 8
بعد ذلك، سوف نستخدم الصيغة التالية لحساب قيمة مربع R لـ McFadden لهذا النموذج:
#calculate McFadden's R-squared for model with(summary(model), 1 - deviance/null. deviance ) [1] 0.4619194
تبين أن قيمة McFadden’s R-squared هي 0.4619194 . هذه القيمة عالية جدًا، مما يشير إلى أن نموذجنا يناسب البيانات جيدًا ويتمتع بقدرة تنبؤية عالية.
لاحظ أيضًا أنه يمكننا أيضًا استخدام الدالة pR2() من الحزمة pscl لحساب قيمة McFadden R-squared للنموذج:
#install and load pscl package install. packages (' pscl ') library (pscl) #calculate McFadden's R-squared for model pR2(model)[' McFadden '] McFadden 0.4619194
لاحظ أن هذه القيمة تتوافق مع القيمة المحسوبة مسبقًا.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:
كيفية حساب R-squared في R
كيفية حساب R-squared المعدل في R
ما هي قيمة R-squared الجيدة؟