كيفية حساب dffits في r


في الإحصاء، غالبًا ما نرغب في معرفة تأثير الملاحظات المختلفة في نماذج الانحدار.

تتمثل إحدى طرق حساب تأثير الملاحظات في استخدام مقياس يُعرف باسم DFFITS ، والذي يرمز إلى “الاختلاف في النوبات”.

يخبرنا هذا المقياس بمدى تغير التنبؤات التي يقدمها نموذج الانحدار عندما نحذف ملاحظة فردية.

يعرض هذا البرنامج التعليمي مثالًا خطوة بخطوة لكيفية حساب وتصور DFFITS لكل ملاحظة في نموذج في R.

الخطوة 1: إنشاء نموذج الانحدار

أولاً، سنقوم بإنشاء نموذج انحدار خطي متعدد باستخدام مجموعة بيانات mtcars المضمنة في R:

 #load the dataset
data(mtcars)

#fit a regression model
model <- lm(mpg~disp+hp, data=mtcars)

#view model summary
summary(model)

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.735904 1.331566 23.083 < 2nd-16 ***
available -0.030346 0.007405 -4.098 0.000306 ***
hp -0.024840 0.013385 -1.856 0.073679 .  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.127 on 29 degrees of freedom
Multiple R-squared: 0.7482, Adjusted R-squared: 0.7309 
F-statistic: 43.09 on 2 and 29 DF, p-value: 2.062e-09

الخطوة 2: حساب DFFITS لكل ملاحظة

بعد ذلك، سوف نستخدم الدالة dffits() المضمنة لحساب قيمة DFFITS لكل ملاحظة في النموذج:

 #calculate DFFITS for each observation in the model
dffits <- as . data . frame (dffits(model))

#display DFFITS for each observation
challenges

                    dffits(model)
Mazda RX4 -0.14633456
Mazda RX4 Wag -0.14633456
Datsun 710 -0.19956440
Hornet 4 Drive 0.11540062
Hornet Sportabout 0.32140303
Valiant -0.26586716
Duster 360 0.06282342
Merc 240D -0.03521572
Merc 230 -0.09780612
Merc 280 -0.22680622
Merc 280C -0.32763355
Merc 450SE -0.09682952
Merc 450SL -0.03841129
Merc 450SLC -0.17618948
Cadillac Fleetwood -0.15860270
Lincoln Continental -0.15567627
Chrysler Imperial 0.39098449
Fiat 128 0.60265798
Honda Civic 0.35544919
Toyota Corolla 0.78230167
Toyota Corona -0.25804885
Dodge Challenger -0.16674639
AMC Javelin -0.20965432
Camaro Z28 -0.08062828
Pontiac Firebird 0.67858692
Fiat X1-9 0.05951528
Porsche 914-2 0.09453310
Lotus Europa 0.55650363
Ford Pantera L 0.31169050
Ferrari Dino -0.29539098
Maserati Bora 0.76464932
Volvo 142E -0.24266054

عادة، نلقي نظرة فاحصة على الملاحظات ذات قيم DFFITS أعلى من عتبة 2√ p/n حيث:

  • ع: عدد المتغيرات المتوقعة المستخدمة في النموذج
  • n: عدد الملاحظات المستخدمة في النموذج

في هذا المثال، ستكون العتبة 0.5 :

 #find number of predictors in model
p <- length (model$coefficients)-1

#find number of observations
n <- nrow (mtcars)

#calculate DFFITS threshold value
thresh <- 2* sqrt (p/n)

thresh

[1] 0.5

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

 #sort observations by DFFITS, descending
dffits[ order (-dffits[' dffits(model) ']), ]

 [1] 0.78230167 0.76464932 0.67858692 0.60265798 0.55650363 0.39098449
 [7] 0.35544919 0.32140303 0.31169050 0.11540062 0.09453310 0.06282342
[13] 0.05951528 -0.03521572 -0.03841129 -0.08062828 -0.09682952 -0.09780612
[19] -0.14633456 -0.14633456 -0.15567627 -0.15860270 -0.16674639 -0.17618948
[25] -0.19956440 -0.20965432 -0.22680622 -0.24266054 -0.25804885 -0.26586716
[31] -0.29539098 -0.32763355

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

الخطوة 3: تصور DFFITS لكل ملاحظة

أخيرًا، يمكننا إنشاء رسم بياني سريع لتصور DFFITS لكل ملاحظة:

 #plot DFFITS values for each observation
plot(dffits(model), type = ' h ')

#add horizontal lines at absolute values for threshold
abline(h = thresh, lty = 2)
abline(h = -thresh, lty = 2)

DFFITS في R

يعرض المحور السيني فهرس كل ملاحظة في مجموعة البيانات وتعرض القيمة ص قيمة DFFITS المقابلة لكل ملاحظة.

مصادر إضافية

كيفية إجراء الانحدار الخطي البسيط في R
كيفية إجراء الانحدار الخطي المتعدد في R
كيفية حساب إحصائيات الرافعة المالية في R
كيفية إنشاء قطعة أرض متبقية في R

Add a Comment

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