Nasıl düzeltilir: lm.fit(x, y, offset = offset, …): 'y'de na/nan/inf hatası
R kullanırken karşılaşabileceğiniz bir hata:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...):
NA/NaN/Inf in 'y'
Bu hata, R’de doğrusal bir regresyon modelini sığdırmak için lm() işlevini kullanmaya çalıştığınızda, ancak öngörücü veya yanıt değişkeni NaN veya Inf değerlerini içerdiğinde ortaya çıkar.
Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
R’de çeşitli basketbol oyuncularının oynadığı dakikalar ve attığı puanlar hakkında bilgi içeren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:
#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
Veri çerçevesinin NaN ve Inf değerlerini içerdiğini unutmayın.
Şimdi, tahmin değişkeni olarak “dakikaları” ve yanıt değişkeni olarak “puanları” kullanarak doğrusal bir regresyon modeli uydurmaya çalıştığımızı varsayalım:
#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'
Veri çerçevesinde NaN ve Inf değerleri mevcut olduğundan hata alıyoruz.
Hata nasıl düzeltilir?
Veri çerçevesindeki NA değerlerinin sorun teşkil etmediğini belirtmek gerekir. Aslında R, doğrusal regresyon modelini yerleştirirken NA değerlerini göz ardı eder.
Asıl sorun NaN ve Inf değerlerinden kaynaklanmaktadır.
Bunu düzeltmenin en kolay yolu NaN ve Inf değerlerini NA değerleriyle değiştirmektir:
#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
Artık regresyon modelini uyarlayabiliriz:
#fit regression model
lm(points ~ minutes, data=df)
Call:
lm(formula = points ~ minutes, data = df)
Coefficients:
(Intercept) minutes
5,062 1,048
Sonuç regresyon modelinin katsayılarını gösterir.
NaN ve Inf değerlerini veri çerçevesinde değiştirdiğimiz için herhangi bir hata almadığımızı unutmayın.
Ek kaynaklar
Aşağıdaki eğitimlerde R’deki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
R’de nasıl düzeltilir: beklenmeyen dize sabiti
R’de nasıl düzeltilir: ExtractVars’ta geçersiz şablon formülü
R’de nasıl düzeltilir: argüman ne sayısal ne de mantıksal: return na