Jak naprawić: przewidywanie słabej korekty rangi może wprowadzać w błąd
Typowym ostrzeżeniem, które możesz napotkać w R, jest:
Warning message:
In predict.lm(model, df):
prediction from a rank-deficient fit may be misleading
To ostrzeżenie może wystąpić z dwóch powodów:
Powód 1 : Dwie zmienne predykcyjne są doskonale skorelowane.
Powód 2 : Masz więcej parametrów modelu niż obserwacji w zbiorze danych.
Poniższe przykłady pokazują, jak każdy problem może pojawić się w praktyce.
Powód nr 1: Dwie zmienne predykcyjne są doskonale skorelowane
Załóżmy, że dopasujemy następujący model regresji liniowej do R i spróbujemy użyć go do przewidywania:
#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
Otrzymujemy komunikat ostrzegawczy, ponieważ zmienne predykcyjne x1 i x2 są doskonale skorelowane .
Zauważ, że wartości x2 są po prostu równe wartościom x1 pomnożonym przez dwa. Jest to przykład doskonałej wielowspółliniowości .
Oznacza to, że x1 i x2 nie dostarczają unikalnych i niezależnych informacji w modelu regresji, co powoduje problemy przy dopasowywaniu i interpretacji modelu.
Najłatwiejszym sposobem rozwiązania tego problemu jest po prostu usunięcie jednej ze zmiennych predykcyjnych z modelu, ponieważ niepotrzebne jest posiadanie obu zmiennych predykcyjnych w modelu.
Powód nr 2: Istnieje więcej parametrów modelu niż obserwacji
Załóżmy, że dopasujemy następujący model regresji liniowej do R i spróbujemy użyć go do przewidywania:
#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
Otrzymujemy komunikat ostrzegawczy, ponieważ próbowaliśmy dopasować model regresji z siedmioma całkowitymi współczynnikami modelu:
- x1
- x2
- x3
- x1*x2
- x1*3
- x2*x3
- x1*x2*x3
Jednakże w zbiorze danych mamy w sumie tylko cztery obserwacje.
Ponieważ liczba parametrów modelu jest większa niż liczba obserwacji w zbiorze danych, nazywamy to danymi wielowymiarowymi .
W przypadku danych wielowymiarowych znalezienie modelu, który mógłby opisać związek między zmiennymi predykcyjnymi a zmienną odpowiedzi, staje się niemożliwe, ponieważ nie mamy wystarczającej liczby obserwacji, na podstawie których można by wytrenować model.
Najprostszym sposobem rozwiązania tego problemu jest zebranie większej liczby obserwacji dla naszego zbioru danych lub użycie prostszego modelu z mniejszą liczbą współczynników do oszacowania.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak radzić sobie z innymi typowymi błędami w R:
Jak sobie poradzić: glm.fit: algorytm nie osiągnął zbieżności
Jak sobie radzić z: glm.fit: wystąpiło prawdopodobieństwo skorygowane numerycznie 0 lub 1