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