Как исправить: прогнозирование плохой корректировки ранга может ввести в заблуждение.


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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *