Одним из распространенных предупреждений, с которыми вы можете столкнуться в 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 произошли