Як виправити: прогнозування поганого коригування рангу може ввести в оману


Загальне попередження, яке ви можете зустріти в 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *