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