موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

الانحدار اللوجستي (logistic regression) باستخدام لغة البرمجة آر R

26/01/2019 | لغة البرمجة آر R | 4 تعليقات

الانحدار اللوجستي (logistic regression) هو أسلوب إحصائي يستخدم لوصف العلاقة بين متغير تابع (dependent variable) ثنائي (binary) ومتغير مستقل (independent variable) واحد او أكثر وفق الصيغة التالية:

\[
logit(p)=\alpha+\beta X
\]

حيث

\[
logit(p)=\ln{\left(\frac{p}{1-p}\right)}
\]

حيث $p=p(y=1|X)$. وهناك عدد من الفروض (assumptions) الهامة التي ينبغي التنبه لها عند استخدام الانحدار اللوجستي وهي:

الآن سوف نوضح كيف يمكن تطبيق نموذج الانحدار اللوجستي على البيانات (PimaIndiansDiabetes) بإستخدام لغة البرمجة آر R وفق الخطوات التالية:

1. تحميل البيانات

In:
library(mlbench)
data(PimaIndiansDiabetes)
head(PimaIndiansDiabetes)
Out:
  pregnant glucose pressure triceps insulin mass pedigree age diabetes
1        6     148       72      35       0 33.6    0.627  50      pos
2        1      85       66      29       0 26.6    0.351  31      neg
3        8     183       64       0       0 23.3    0.672  32      pos
4        1      89       66      23      94 28.1    0.167  21      neg
5        0     137       40      35     168 43.1    2.288  33      pos
6        5     116       74       0       0 25.6    0.201  30      neg

في هذه الحالة سوف يكون المتغير التابع هو diabetes وهو ثنائي كما يتضح، وجميع المتغيرات المتبقية هي متغيرات مستقلة.

2. تقسيم البيانات الى مجموعة تدريب (train) ومجموعة إختبار (test)

In:
m=nrow(PimaIndiansDiabetes)
train_i= sample(seq_len(m),size =0.75*m)  
train_data =PimaIndiansDiabetes[train_i,]
test_data =PimaIndiansDiabetes[-train_i,]

 3. تطبيق نموذج الانحدار اللوجستي

In:
Model = glm(diabetes ~., data = train_data,family = binomial) 
summary(Model)
Out:
Call:
glm(formula = diabetes ~ ., family = binomial, data = train_data)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.4879  -0.7398  -0.4308   0.7455   2.8940  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -8.103335   0.813837  -9.957  < 2e-16 ***
pregnant     0.114101   0.037850   3.015  0.00257 ** 
glucose      0.037800   0.004364   8.662  < 2e-16 ***
pressure    -0.012371   0.005913  -2.092  0.03642 *  
triceps      0.003894   0.008233   0.473  0.63622    
insulin     -0.001816   0.001065  -1.705  0.08826 .  
mass         0.074861   0.017213   4.349 1.37e-05 ***
pedigree     0.831963   0.337920   2.462  0.01382 *  
age          0.009841   0.010634   0.925  0.35473    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 742.59  on 575  degrees of freedom
Residual deviance: 548.64  on 567  degrees of freedom
AIC: 566.64

Number of Fisher Scoring iterations: 5

حيث يجب تحديد المتغيرات المستقله الهامة التي يجب ان تكون في النموذج وحذف الأخرى للوصول لأفضل نموذج يجب تطبيقة.

 4. تشخيص النموذج (Model Diagnostics) كما يلي:

  • التأكد من الخطية (linearity) بين المتغيرات المستقله والمتغير التابع على logit scale.
In:
library(tidyverse)
probability = predict(Model, train_data, type="response")
logit=log(probability/(1-probability))
newdata=cbind(logit,train_data[,-9])
newdata = newdata %>%
  gather(key = "predictors", value = "predicted_values", -logit)
ggplot(newdata, aes(predicted_values,logit))+
  geom_point(size = 0.6, alpha = 0.6) +
  theme_bw() + 
  xlab("predicted values")+
  facet_wrap(~predictors, scales = "free_x")

  • التأكد من عدم وجود المشاهدات المتطرفة من خلال شكل الإنتشار للقيم التنبؤية (predictive values) ضد البواقي المعيارية (Standardized residuals).
In:
library(broom)
Model.out = augment(Model)
ggplot(Model.out, aes(.fitted, .std.resid)) + 
  geom_point(aes(color = diabetes), alpha = .5) +
  xlab("Predicted values")+
  ylab("Standardized residuals")+
  theme_bw()

وذلك من خلال التأكد من عدم وجود مشاهدات لها بواقي معيارية خارج النطاق 3±.

  • التأكد من عدم وجود خطية متعددة (multicollinearity).
In:
library(car)
vif(Model)
Out:
pregnant  glucose pressure  triceps  insulin     mass pedigree      age 
1.428726 1.248356 1.222852 1.482516 1.472432 1.306988 1.043258 1.505727 

وذلك من خلال حساب التضخم في التباين (variance-inflation)، حيث أن تجاوز 10 يشير إلى وجود علاقة خطية متعددة.

  • الأرتباط الذاتي (autocorrelation).
In:
acf(Model.out$.resid,main='Autocorrelation')

  • مصفوفة الخطأ (confiusion matrix)
In:
predicted_probability = predict(Model, test_data, type="response") 
predicted_values=ifelse(predicted_probability>0.5,1,0)
actual_values=ifelse(test_data$diabetes=="pos",1,0) 
confiusion_matrix=table(predicted_values,actual_values) 
confiusion_matrix
Out:
                actual_values
predicted_values   0   1
               0 112  34
               1  11  35
  • الحساسية (sensitivity ) والنوعية (specificity).
In:
library(caret)
sensitivity(confiusion_matrix)
Out:
[1] 0.9105691
In:
specificity(confiusion_matrix)
Out:
[1] 0.5072464
جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • برنامج آر R

    البرنامج الإحصائي آر R هو واحد من أشهر البرامج الإحصائية. هذا البرنامج يعتمد على لغة البرمجة R والتي قام بتطويرها كلاً... برنامج آر R
    اقرأ المزيد
  • آر استوديو (RStudio)

    آر استوديو هو بيئة تشغيل للبرنامج الإحصائي آر R يحوي مجموعة من النوافد والأدوات المصممة بشكل رائع والتي تساعد على... آر استوديو (RStudio)
    اقرأ المزيد
  • مقدمة في لغة البرمجة آر R

    هذا الموضوع سوف نوضح بالتفصيل بعض الأساسيات في لغة البرمجة آر R والتي تمثل الخطوه الأولى في فهم هذه اللغة الهامة ويمكن... مقدمة في لغة البرمجة آر R
    اقرأ المزيد

التعليقات 4

  1. حنان بتاريخ يناير 26, 2019 - 11:48 م

    جزاك الله الف خير دكتور عزيز بجد نفتخر بوجود امثالك الله يكتب اجرك ويجعله في موازين حسناتك

  2. Mohamed بتاريخ يناير 27, 2019 - 3:02 ص

    اريد نسخة pdf

  3. Sara بتاريخ نوفمبر 2, 2023 - 6:57 ص

    دكتور ايش ممكن استخدم بكج غير اللي استخدمتها هنا لان ماتحملت معي وشكرًا

  4. د. عزيز الجعيد بتاريخ نوفمبر 2, 2023 - 8:22 م

    اي مكتبة الي ماتشتغل؟

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

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

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز