البيانات المفقودة (Missing Data) هي من القضايا الشائعة في مجال تحليل البيانات ويمكن أن يكون لها تأثير سلبي على الاستنتاجات التي يتم استخلاصها من خلال تحليل البيانات اذا لم يتم التعامل معها بالطريقة الصحيحة. المخطط ادناه يسلط الضوء بشكل مختصر على طريقة التعامل معها من خلال:
- حذف (deletion) القيم المفقودة.
- تعويض القيم المفقودة (imputation): وهو عملية استبدال البيانات المفقودة بقيم بديلة يتم تقديرها من خلال المقاييس والاساليب الإحصائية.
في الخطوات التالية سوف نوضح كيف يتم يتم التعامل مع البيانات المفقودة باستخدام لغة البرمجة آر، في البداية سوف نستخدم البيانات Rdata:
In:
Rdata=read.csv("Rdata.csv")
ثم نتبع التالي:
اولاً: حذف الحالات (الصفوف) التي تحوي عدد من القيم المفقودة قد تؤدي الى تحيز التحليل الاحصائي ، مثلاً سوف نقوم بحذف الصفوف التي تحوي اكثر من قيمة مفقودة.
In:
for (r in 1:nrow(Rdata)){
if (sum(is.na(Rdata[r,]))>1){
Rdata=Rdata[-r,]}
}
ثانياً: كتابة دالة تعويض القيم المفقودة (imputation)، مثلاً سوف نكتب دالة لتعويض البيانات المفقودة العددية بالوسط (mean) وتعويض البيانات الفقودة غير العددية بالمنوال (mode) كالتالي:
In:
getimputation = function(x) {
if (is.numeric(Rdata[,i])==TRUE){
mean(x, na.rm = TRUE)}
else{
uniq = unique(x)
uniq[which.max(tabulate(match(x, uniq)))]
}}
ثالثاً: عملية تعويض القيم المفقودة
In:
for(i in 1:(ncol(Rdata))){
Rdata[is.na(Rdata[,i]), i] = getimputation(Rdata[,i])
}
عمل مفرح وجميل لنشر هذه اللغة الرائدة