كيفية إنشاء فترة التنبؤ في r
يمكن أن يكون نموذج الانحدار الخطي مفيدًا لأمرين:
(1) تحديد العلاقة بين واحد أو أكثر من متغيرات التوقع ومتغير الاستجابة.
(2) استخدم النموذج للتنبؤ بالقيم المستقبلية.
فيما يتعلق بـ (2) ، عندما نستخدم نموذج الانحدار للتنبؤ بالقيم المستقبلية، فإننا غالبًا ما نرغب في التنبؤ بقيمة دقيقة بالإضافة إلى فاصل زمني يحتوي على نطاق من القيم المحتملة. ويسمى هذا الفاصل الزمني الفاصل الزمني للتنبؤ .
على سبيل المثال، لنفترض أننا نلائم نموذج الانحدار الخطي البسيط باستخدام ساعات الدراسة كمتغير متوقع ودرجات الامتحان كمتغير الاستجابة. باستخدام هذا النموذج، يمكننا التنبؤ بأن الطالب الذي يدرس لمدة 6 ساعات سيحصل على 91 في الامتحان.
ومع ذلك، نظرًا لوجود عدم يقين حول هذا التنبؤ، يمكننا إنشاء فاصل زمني للتنبؤ يشير إلى أن هناك فرصة بنسبة 95% أن يحصل الطالب الذي يدرس لمدة 6 ساعات على درجة امتحان تتراوح بين 85 و 97 . يُعرف هذا النطاق من القيم بفاصل التنبؤ 95% وغالبًا ما يكون أكثر فائدة لنا من مجرد معرفة القيمة المتوقعة بدقة.
كيفية إنشاء فترة التنبؤ في R
لتوضيح كيفية إنشاء فترة تنبؤ في لغة R، سنستخدم مجموعة بيانات mtcars المضمنة، والتي تحتوي على معلومات حول خصائص العديد من السيارات المختلفة:
#view first six rows of mtcars head(mtcars) # mpg cyl disp hp drat wt qsec vs am gear carb #Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 #Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 #Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 #Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 #Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 #Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
أولاً، سنقوم بتركيب نموذج انحدار خطي بسيط باستخدام disp كمتغير متوقع و mpg كمتغير الاستجابة.
#fit simple linear regression model model <- lm(mpg ~ disp, data = mtcars) #view summary of fitted model summary(model) #Call: #lm(formula = mpg ~ availability, data = mtcars) # #Residuals: # Min 1Q Median 3Q Max #-4.8922 -2.2022 -0.9631 1.6272 7.2305 # #Coefficients: #Estimate Std. Error t value Pr(>|t|) #(Intercept) 29.599855 1.229720 24.070 < 2e-16 *** #disp -0.041215 0.004712 -8.747 9.38e-10 *** #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 3.251 on 30 degrees of freedom #Multiple R-squared: 0.7183, Adjusted R-squared: 0.709 #F-statistic: 76.51 on 1 and 30 DF, p-value: 9.38e-10
بعد ذلك، سنستخدم نموذج الانحدار المناسب للتنبؤ بقيمة ميلا في الغالون بناءً على ثلاث قيم جديدة لـ disp .
#create data frame with three new values for avail new_disp <- data.frame(disp= c(150, 200, 250)) #use the fitted model to predict the value for mpg based on the three new values #for avail predict(model, newdata = new_disp) #1 2 3 #23.41759 21.35683 19.29607
وطريقة تفسير هذه القيم هي كما يلي:
- بالنسبة لسيارة جديدة ذات وكالة حماية البيئة (EPA) تبلغ 150، نتوقع أن يكون لديها ميل لكل جالون يبلغ 23.41759 .
- بالنسبة لسيارة جديدة ذات وكالة حماية البيئة تبلغ 200، نتوقع أن يكون لها ميل لكل جالون يبلغ 21.35683 .
- بالنسبة لسيارة جديدة بوكالة حماية البيئة (EPA) تبلغ 250، نتوقع أن يكون لديها ميل لكل جالون يبلغ 19.29607 .
بعد ذلك، سوف نستخدم نموذج الانحدار المناسب لإنشاء فترات تنبؤية حول هذه القيم المتوقعة:
#create prediction intervals around the predicted values predict(model, newdata = new_disp, interval = " predict ") # fit lwr upr #1 23.41759 16.62968 30.20549 #2 21.35683 14.60704 28.10662 #3 19.29607 12.55021 26.04194
وطريقة تفسير هذه القيم هي كما يلي:
- الفاصل الزمني للتنبؤ بـ 95٪ ميلا في الغالون لسيارة ذات وكالة حماية البيئة تبلغ 150 هو بين 16.62968 و 30.20549 .
- الفاصل الزمني للتنبؤ بـ 95٪ ميلا في الغالون لسيارة ذات وكالة حماية البيئة تبلغ 200 هو بين 14.60704 و 28.10662 .
- الفاصل الزمني للتنبؤ بـ 95٪ ميلا في الغالون لسيارة ذات وكالة حماية البيئة تبلغ 250 هو بين 12.55021 و 26.04194 .
بشكل افتراضي، يستخدم R فاصل تنبؤي بنسبة 95%. ومع ذلك، يمكننا تغيير هذا كما نرغب باستخدام أمر المستوى . على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية إنشاء فترات تنبؤ بنسبة 99%:
#create 99% prediction intervals around the predicted values predict(model, newdata = new_disp, interval = " predict ", level = 0.99 ) # fit lwr upr #1 23.41759 14.27742 32.55775 #2 21.35683 12.26799 30.44567 #3 19.29607 10.21252 28.37963
لاحظ أن فترات التنبؤ بنسبة 99% أكبر من فترات التنبؤ بنسبة 95%. وهذا منطقي لأنه كلما اتسعت الفترة الزمنية، زاد احتمال احتوائها على القيمة المتوقعة.
كيفية تصور فترة التنبؤ في R
يوضح التعليمة البرمجية التالية كيفية إنشاء مخطط بالوظائف التالية:
- مخطط متناثر لنقاط البيانات الخاصة بالتوفر والميل لكل جالون
- خط أزرق لخط الانحدار المجهز
- عصابات الثقة الرمادية
- نطاقات التنبؤ الحمراء
#define dataset data <- mtcars[, c("mpg", "disp")] #create simple linear regression model model <- lm(mpg ~ disp, data = mtcars) #use model to create prediction intervals predictions <- predict(model, interval = " predict ") #create dataset that contains original data along with prediction intervals all_data <- cbind(data, predictions) #load ggplot2 library library(ggplot2) #createplot ggplot(all_data, aes(x = disp, y = mpg)) + #define x and y axis variables geom_point() + #add scatterplot points stat_smooth(method = lm) + #confidence bands geom_line(aes(y = lwr), col = "coral2", linetype = "dashed") + #lwr pred interval geom_line(aes(y = upr), col = "coral2", linetype = "dashed") #upr pred interval
متى يتم استخدام فاصل الثقة مقابل فاصل التنبؤ
يلتقط الفاصل الزمني للتنبؤ حالة عدم اليقين حول قيمة واحدة. يلتقط فاصل الثقة حالة عدم اليقين حول القيم المتوسطة المتوقعة. ومن ثم، فإن الفاصل الزمني للتنبؤ سيكون دائمًا أوسع من فاصل الثقة لنفس القيمة.
يجب عليك استخدام الفاصل الزمني للتنبؤ عندما تكون مهتمًا بتنبؤات فردية محددة، لأن فاصل الثقة سينتج نطاقًا ضيقًا جدًا من القيم، مما يؤدي إلى زيادة احتمال عدم احتواء الفاصل الزمني على القيمة الحقيقية.