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