Cara memperbaiki: kesalahan di lm.fit(x, y, offset = offset, …): na/nan/inf di 'y'


Kesalahan yang mungkin Anda temui saat menggunakan R adalah:

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

Kesalahan ini terjadi ketika Anda mencoba menggunakan fungsi lm() agar sesuai dengan model regresi linier di R, namun variabel prediktor atau respons berisi nilai NaN atau Inf .

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita memiliki kerangka data berikut di R yang berisi informasi tentang menit bermain dan poin yang dicetak oleh berbagai pemain bola basket:

 #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

Perhatikan bahwa bingkai data berisi nilai NaN dan Inf .

Sekarang misalkan kita mencoba menyesuaikan model regresi linier dengan menggunakan “menit” sebagai variabel prediktor dan “titik” sebagai variabel respons:

 #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'

Kami menerima kesalahan karena nilai NaN dan Inf ada dalam bingkai data.

Bagaimana cara memperbaiki kesalahan tersebut

Perlu diperhatikan bahwa nilai NA pada frame data tidak menjadi masalah. Faktanya, R mengabaikan nilai NA saat menyesuaikan model regresi linier.

Masalah sebenarnya disebabkan oleh nilai NaN dan Inf .

Cara termudah untuk memperbaikinya adalah dengan mengganti nilai NaN dan Inf dengan nilai 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

Sekarang kita dapat mengadaptasi model regresi:

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

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

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

Hasilnya menunjukkan koefisien model regresi.

Perhatikan bahwa kami tidak menerima kesalahan apa pun sejak kami mengganti nilai NaN dan Inf dalam bingkai data.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di R:

Cara memperbaikinya di R: konstanta string yang tidak terduga
Cara memperbaiki di R: Rumus template tidak valid di ExtractVars
Cara memperbaikinya di R: argumen bukan numerik atau logis: return na

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *