Як виправити: прогнозування поганого коригування рангу може ввести в оману
Загальне попередження, яке ви можете зустріти в 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
Ми отримуємо попередження, оскільки ми намагалися підібрати регресійну модель із семи загальних коефіцієнтів моделі:
- x1
- x2
- x3
- х1*х2
- х1*3
- х2*х3
- х1*х2*х3
Однак ми маємо всього чотири спостереження в наборі даних.
Оскільки кількість параметрів моделі більша за кількість спостережень у наборі даних, ми називаємо ці дані великої розмірності .
З високовимірними даними стає неможливим знайти модель, яка може описати зв’язок між змінними-прогнозами та змінною-відповіддю, оскільки у нас недостатньо спостережень, на яких можна навчити модель.
Найпростіший спосіб вирішити цю проблему — зібрати більше спостережень для нашого набору даних або використати простішу модель із меншою кількістю коефіцієнтів для оцінки.
Додаткові ресурси
У наступних посібниках пояснюється, як обробляти інші типові помилки в R:
Як впоратися: glm.fit: алгоритм не зійшовся
Як обробляти: glm.fit: виникла чисельно скоригована ймовірність 0 або 1