كيفية تحديد نقاط البيانات المؤثرة باستخدام مسافة كوك


يتم استخدام مسافة كوك ، التي يُشار إليها غالبًا بـ D i ، في تحليل الانحدار لتحديد نقاط البيانات المؤثرة التي قد تؤثر سلبًا على نموذج الانحدار الخاص بك.

صيغة مسافة كوك هي:

د i = (r i 2 / p*MSE) * (h ii / (1-h ii ) 2 )

ذهب:

  • r i هو i البقايا
  • p هو عدد المعاملات في نموذج الانحدار
  • MSE هو متوسط الخطأ المربع
  • hii هي قيمة الرافعة المالية

على الرغم من أن الصيغة تبدو معقدة بعض الشيء، إلا أن الخبر السار هو أن معظم البرامج الإحصائية يمكنها حسابها لك بسهولة.

في الأساس، تقوم مسافة كوك بشيء واحد: فهي تقيس مدى تغير جميع القيم المجهزة للنموذج عند إزالة نقطة البيانات i .

تشير نقطة البيانات التي لها قيمة عالية لمسافة كوك إلى أنها تؤثر بشدة على القيم المجهزة. القاعدة العامة هي أن أي نقطة ذات مسافة كوك أكبر من 4/n ( حيث n هو العدد الإجمالي لنقاط البيانات ) تعتبر نقطة متطرفة.

ومن المهم ملاحظة أن مسافة كوك غالبًا ما تُستخدم لتحديد نقاط البيانات المؤثرة. فقط لأن نقطة البيانات مؤثرة لا يعني بالضرورة أنه يجب إزالتها. يجب عليك أولاً التحقق مما إذا كانت نقطة البيانات قد تم تسجيلها بشكل غير صحيح أو إذا كان هناك شيء غريب حول نقطة البيانات يمكن أن يشير إلى نتيجة مثيرة للاهتمام.

كيفية حساب مسافة كوك في R

يوضح المثال التالي كيفية حساب مسافة كوك في R.

أولاً، سنقوم بتحميل مكتبتين سنحتاجهما لهذا المثال:

 library(ggplot2)
library(gridExtra)

بعد ذلك، سنحدد إطارين للبيانات: أحدهما يحتوي على قيمتين متطرفتين والآخر بدون قيم متطرفة.

 #create data frame with no outliers
no_outliers <- data.frame(x = c(1, 2, 2, 3, 4, 5, 7, 3, 2, 12, 11, 15, 14, 17, 22),
                          y = c(22, 23, 24, 23, 19, 34, 35, 36, 36, 34, 32, 38, 41,
                                42, 44))

#create data frame with two outliers
outliers <- data.frame(x = c(1, 2, 2, 3, 4, 5, 7, 3, 2, 12, 11, 15, 14, 17, 22),
                       y = c( 190 , 23, 24, 23, 19, 34, 35, 36, 36, 34, 32, 38, 41,
                             42, 180 ))

بعد ذلك، سنقوم بإنشاء مخطط مبعثر لعرض إطاري البيانات جنبًا إلى جنب:

 #create scatterplot for data frame with no outliers
no_outliers_plot <- ggplot(data = no_outliers, aes(x = x, y = y)) +
  geom_point() +
  geom_smooth(method = lm) +
  ylim(0, 200) +
  ggtitle("No Outliers")

#create scatterplot for data frame with outliers
outliers_plot <- ggplot(data = outliers, aes(x = x, y = y)) +
  geom_point() +
  geom_smooth(method = lm) +
  ylim(0, 200) +
  ggtitle("With Outliers")

#plot the two scatterplots side by side
gridExtra::grid.arrange(no_outliers_plot, outliers_plot, ncol=2)

يمكننا أن نرى كيف تؤثر القيم المتطرفة سلبًا على ملاءمة خط الانحدار في الرسم البياني الثاني.

لتحديد النقاط المؤثرة في مجموعة البيانات الثانية، يمكننا حساب مسافة Cook لكل ملاحظة في مجموعة البيانات ثم رسم هذه المسافات لمعرفة الملاحظات التي تتجاوز العتبة التقليدية البالغة 4/n:

 #fit the linear regression model to the dataset with outliers
model <- lm(y ~ x, data = outliers)

#find Cook's distance for each observation in the dataset
cooksD <- cooks.distance(model)

# Plot Cook's Distance with a horizontal line at 4/n to see which observations
#exceed this threshold
n <- nrow(outliers)
plot(cooksD, main = "Cooks Distance for Influential Obs")
abline(h = 4/n, lty = 2, col = "steelblue") # add cutoff line

يمكننا أن نرى بوضوح أن الملاحظة الأولى والأخيرة في مجموعة البيانات تتجاوز عتبة 4/n. وبالتالي، يمكننا تحديد هاتين الملاحظتين على أنهما نقاط بيانات مؤثرة تؤثر سلبًا على نموذج الانحدار.

إذا أردنا إزالة جميع الملاحظات التي تتجاوز عتبة 4/n، فيمكننا القيام بذلك باستخدام الكود التالي:

 #identify influential points
influential_obs <- as.numeric(names(cooksD)[(cooksD > (4/n))])

#define new data frame with influential points removed
outliers_removed <- outliers[-influential_obs, ]

بعد ذلك يمكننا مقارنة مخططين مبعثرين: أحدهما يوضح خط الانحدار مع وجود نقاط التأثير والآخر يظهر خط الانحدار مع إزالة نقاط التأثير:

 #create scatterplot with outliers present
outliers_present <- ggplot(data = outliers, aes(x = x, y = y)) +
  geom_point() +
  geom_smooth(method = lm) +
  ylim(0, 200) +
  ggtitle("Outliers Present")

#create scatterplot with outliers removed
outliers_removed <- ggplot(data = outliers_removed, aes(x = x, y = y)) +
  geom_point() +
  geom_smooth(method = lm) +
  ylim(0, 200) +
  ggtitle("Outliers Removed")

#plot both scatterplots side by side
gridExtra::grid.arrange(outliers_present, outliers_removed, ncol = 2)

يمكننا أن نرى بوضوح مدى ملاءمة خط الانحدار للبيانات بمجرد إزالة نقطتي البيانات المؤثرتين.

الملاحظات الفنية

  • تتمتع معظم البرامج الإحصائية بالقدرة على حساب مسافة كوك بسهولة لكل ملاحظة في مجموعة البيانات.
  • ضع في اعتبارك أن مسافة كوك هي مجرد وسيلة لتحديد نقاط التأثير.
  • هناك طرق عديدة للتعامل مع النقاط المؤثرة، منها: إزالة هذه النقاط، أو استبدال هذه النقاط بقيمة مثل المتوسط أو الوسيط، أو ببساطة الاحتفاظ بالنقاط في النموذج مع أخذها في الاعتبار عند الإبلاغ عن نتائج الانحدار.

Add a Comment

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