كيفية الإصلاح: خطأ في lm.fit(x, y, offset = offset, …): na/nan/inf in 'y'


الخطأ الذي قد تواجهه عند استخدام R هو:

 Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...): 
  NA/NaN/Inf in 'y'

يحدث هذا الخطأ عندما تحاول استخدام الدالة lm() لملاءمة نموذج الانحدار الخطي في R، لكن متغير التوقع أو الاستجابة يحتوي على قيم NaN أو Inf .

يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.

كيفية إعادة إنتاج الخطأ

لنفترض أن لدينا إطار البيانات التالي في R الذي يحتوي على معلومات حول دقائق اللعب والنقاط التي سجلها العديد من لاعبي كرة السلة:

 #create data frame with some NA, NaN, Inf values
df <- data. frame (minutes=c(4, NA, 28, 12, 30, 21, 14),
                 dots=c(12, NaN, 30, Inf, 43, 25, 17))

#view data frame
df

  minutes points
1 4 12
2 NA NaN
3 28 30
4 12 Lower
5 30 43
6 21 25
7 14 17

لاحظ أن إطار البيانات يحتوي على قيم NaN و Inf .

لنفترض الآن أننا نحاول ملاءمة نموذج الانحدار الخطي باستخدام “الدقائق” كمتغير متوقع و”النقاط” كمتغير الاستجابة:

 #attempt to fit regression model
lm(points ~ minutes, data=df)

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...): 
  NA/NaN/Inf in 'y'

نتلقى خطأً لأن قيم NaN و Inf موجودة في إطار البيانات.

كيفية اصلاح الخطأ

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

سبب المشكلة الحقيقية هو قيم NaN و Inf .

أسهل طريقة لإصلاح ذلك هي استبدال قيم NaN و Inf بقيم NA :

 #Replace NaN & Inf with NA
df[is. na (df) | df==" Inf "] = NA

#view updated data frame
df

  minutes points
1 4 12
2 NA NA
3 28 30
4 12 NA
5 30 43
6 21 25
7 14 17

يمكننا الآن تكييف نموذج الانحدار:

 #fit regression model
lm(points ~ minutes, data=df)

Call:
lm(formula = points ~ minutes, data = df)

Coefficients:
(Intercept) minutes  
      5,062 1,048

وتظهر النتيجة معاملات نموذج الانحدار.

لاحظ أننا لا نتلقى أي أخطاء منذ أن قمنا باستبدال قيم NaN و Inf في إطار البيانات.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:

كيفية الإصلاح في R: ثابت السلسلة غير المتوقع
كيفية الإصلاح في R: صيغة القالب غير صالحة في ExtractVars
كيفية الإصلاح في R: الوسيطة ليست رقمية ولا منطقية: return na

Add a Comment

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