Como corrigir: erro em lm.fit(x, y, offset = offset, …): na/nan/inf em 'y'


Um erro que você pode encontrar ao usar R é:

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

Este erro ocorre quando você tenta usar a função lm() para ajustar um modelo de regressão linear em R, mas o preditor ou variável de resposta contém valores NaN ou Inf .

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Suponha que temos o seguinte quadro de dados em R que contém informações sobre minutos jogados e pontos marcados por vários jogadores de basquete:

 #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

Observe que o quadro de dados contém valores NaN e Inf .

Agora suponha que estamos tentando ajustar um modelo de regressão linear usando “minutos” como variável preditora e “pontos” como variável resposta:

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

Recebemos um erro porque os valores NaN e Inf estão presentes no quadro de dados.

Como corrigir o erro

Deve-se notar que os valores de NA no quadro de dados não são um problema. Na verdade, R simplesmente ignora os valores de NA ao ajustar o modelo de regressão linear.

O verdadeiro problema é causado pelos valores NaN e Inf .

A maneira mais fácil de corrigir isso é substituir os valores NaN e Inf por valores 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

Agora podemos adaptar o modelo de regressão:

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

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

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

O resultado mostra os coeficientes do modelo de regressão.

Observe que não estamos recebendo nenhum erro, pois substituímos os valores NaN e Inf no quadro de dados.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns no R:

Como corrigir em R: constante de string inesperada
Como corrigir em R: fórmula de modelo inválida em ExtractVars
Como consertar em R: o argumento não é numérico nem lógico: return na

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *