Как исправить: прогноз на основе соответствия с недостаточным рангом может вводить в заблуждение


Одним из распространенных предупреждений, с которыми вы можете столкнуться в R, является:

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

Это предупреждение может появиться по двум причинам:

Причина 1 : Две переменные-предикторы идеально коррелированы.

Причина 2 : у вас больше параметров модели, чем наблюдений в наборе данных.

Следующие примеры показывают, как каждая проблема может возникнуть на практике.

Причина № 1: две переменные-предикторы идеально коррелированы

Предположим, мы подгоняем следующую модель множественной линейной регрессии в R и пытаемся использовать ее для прогнозирования:

#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

Мы получаем предупреждающее сообщение, потому что переменные-предикторы x1 и x2 полностью коррелированы .

Обратите внимание, что значения x2 просто равны значениям x1, умноженным на два. Это пример идеальной мультиколлинеарности .

Это означает, что x1 и x2 не предоставляют уникальную или независимую информацию в регрессионной модели, что вызывает проблемы при подгонке и интерпретации модели.

Самый простой способ справиться с этой проблемой — просто удалить одну из переменных-предикторов из модели, поскольку обе переменные-предикторы в модели избыточны.

Причина № 2: Параметров модели больше, чем наблюдений

Предположим, мы подгоняем следующую модель множественной линейной регрессии в R и пытаемся использовать ее для прогнозирования:

#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

Мы получаем предупреждающее сообщение, потому что мы попытались подогнать регрессионную модель с семью общими коэффициентами модели:

  • х1
  • х2
  • х3
  • х1*х2
  • х1*3
  • х2*х3
  • х1*х2*х3

Однако у нас всего четыре наблюдения в наборе данных.

Поскольку количество параметров модели больше, чем количество наблюдений в наборе данных, мы называем это данными высокой размерности .

С данными высокой размерности становится невозможным найти модель, которая может описать взаимосвязь между переменными-предикторами и переменной-ответом, потому что у нас недостаточно наблюдений для обучения модели.

Самый простой способ решить эту проблему — собрать больше наблюдений для нашего набора данных или использовать более простую модель с меньшим количеством коэффициентов для оценки.

Дополнительные ресурсы

В следующих руководствах объясняется, как обрабатывать другие распространенные ошибки в R:

Что делать: glm.fit: алгоритм не сошелся
Как справиться: glm.fit: подогнанные вероятности численно 0 или 1 произошли

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.