Jak naprawić: błąd w lm.fit(x, y, offset = offset, …): na/nan/inf w „y”


Błąd, który możesz napotkać podczas korzystania z R, to:

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

Ten błąd występuje, gdy próbujesz użyć funkcji lm() w celu dopasowania modelu regresji liniowej w języku R, ale zmienna predykcyjna lub zmienna odpowiedzi zawiera wartości NaN lub Inf .

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że mamy w R następującą ramkę danych zawierającą informacje o rozegranych minutach i punktach zdobytych przez różnych koszykarzy:

 #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

Należy pamiętać, że ramka danych zawiera wartości NaN i Inf .

Załóżmy teraz, że próbujemy dopasować model regresji liniowej, używając „minut” jako zmiennej predykcyjnej i „punktów” jako zmiennej odpowiedzi:

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

Otrzymujemy błąd, ponieważ w ramce danych znajdują się wartości NaN i Inf .

Jak naprawić błąd

Należy zaznaczyć, że wartości NA w ramce danych nie stanowią problemu. W rzeczywistości R po prostu ignoruje wartości NA podczas dopasowywania modelu regresji liniowej.

Prawdziwym problemem są wartości NaN i Inf .

Najłatwiejszym sposobem rozwiązania tego problemu jest zastąpienie wartości NaN i Inf wartościami 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

Możemy teraz dostosować model regresji:

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

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

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

Wynik pokazuje współczynniki modelu regresji.

Pamiętaj, że nie otrzymujemy żadnych błędów, ponieważ zastąpiliśmy wartości NaN i Inf w ramce danych.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:

Jak naprawić w R: nieoczekiwana stała łańcuchowa
Jak naprawić w R: Nieprawidłowa formuła szablonu w ExtractVars
Jak naprawić w R: argument nie jest ani numeryczny, ani logiczny: return na

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *