Como corrigir: prever um ajuste de classificação ruim pode ser enganoso


Um aviso comum que você pode encontrar em R é:

 Warning message:
In predict.lm(model, df):
  prediction from a rank-deficient fit may be misleading

Este aviso pode ocorrer por dois motivos:

Razão 1 : Duas variáveis preditoras estão perfeitamente correlacionadas.

Razão 2 : você tem mais parâmetros de modelo do que observações no conjunto de dados.

Os exemplos a seguir mostram como cada problema pode surgir na prática.

Razão nº 1: duas variáveis preditoras estão perfeitamente correlacionadas

Suponha que ajustemos o seguinte modelo de regressão linear múltipla em R e tentemos usá-lo para fazer previsões:

 #create data frame
df <- data. frame (x1=c(1, 2, 3, 4),
                 x2=c(2, 4, 6, 8),
                 y=c(6, 10, 19, 26))

#fit multiple linear regression model
model <- lm(y~x1+x2, data=df)

#use model to make predictions
predict(model, df)

   1 2 3 4 
 4.9 11.8 18.7 25.6 
Warning message:
In predict.lm(model, df):
  prediction from a rank-deficient fit may be misleading

Recebemos uma mensagem de aviso porque as variáveis preditoras x1 e x2 estão perfeitamente correlacionadas .

Observe que os valores de x2 são simplesmente iguais aos valores de x1 multiplicados por dois. Este é um exemplo de multicolinearidade perfeita .

Isso significa que x1 e x2 não fornecem informações únicas ou independentes no modelo de regressão, o que causa problemas no ajuste e interpretação do modelo.

A maneira mais fácil de resolver este problema é simplesmente remover uma das variáveis preditoras do modelo, pois é redundante ter ambas as variáveis preditoras no modelo.

Razão nº 2: existem mais parâmetros de modelo do que observações

Suponha que ajustemos o seguinte modelo de regressão linear múltipla em R e tentemos usá-lo para fazer previsões:

 #create data frame
df <- data. frame (x1=c(1, 2, 3, 4),
                 x2=c(3, 3, 8, 12),
                 x3=c(4, 6, 3, 11),
                 y=c(6, 10, 19, 26))

#fit multiple linear regression model
model <- lm(y~x1*x2*x3, data=df)

#use model to make predictions
predict(model, df)

 1 2 3 4 
 6 10 19 26 
Warning message:
In predict.lm(model, df):
  prediction from a rank-deficient fit may be misleading

Recebemos uma mensagem de aviso porque tentamos ajustar um modelo de regressão com sete coeficientes totais do modelo:

  • x1
  • x2
  • x3
  • x1*x2
  • x1*3
  • x2*x3
  • x1*x2*x3

No entanto, temos apenas quatro observações no total no conjunto de dados.

Como o número de parâmetros do modelo é maior que o número de observações no conjunto de dados, chamamos isso de dados de alta dimensão .

Com dados altamente dimensionais, torna-se impossível encontrar um modelo que possa descrever a relação entre as variáveis preditoras e a variável resposta porque não temos observações suficientes para treinar o modelo.

A maneira mais simples de resolver este problema é coletar mais observações para o nosso conjunto de dados ou usar um modelo mais simples com menos coeficientes para estimar.

Recursos adicionais

Os tutoriais a seguir explicam como lidar com outros erros comuns em R:

Como lidar com: glm.fit: o algoritmo não convergiu
Como lidar com: glm.fit: probabilidades ajustadas numericamente 0 ou 1 ocorreram

Add a Comment

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