Oplossing: het voorspellen van een slechte rangschikking kan misleidend zijn
Een veel voorkomende waarschuwing die u in R kunt tegenkomen is:
Warning message:
In predict.lm(model, df):
prediction from a rank-deficient fit may be misleading
Deze waarschuwing kan om twee redenen optreden:
Reden 1 : Twee voorspellende variabelen zijn perfect gecorreleerd.
Reden 2 : U heeft meer modelparameters dan waarnemingen in de dataset.
De volgende voorbeelden laten zien hoe elk probleem in de praktijk kan ontstaan.
Reden #1: Twee voorspellende variabelen zijn perfect gecorreleerd
Stel dat we het volgende meervoudige lineaire regressiemodel in R passen en proberen het te gebruiken om voorspellingen te doen:
#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
We ontvangen een waarschuwingsbericht omdat de voorspellende variabelen x1 en x2 perfect gecorreleerd zijn.
Merk op dat de x2-waarden eenvoudigweg gelijk zijn aan de x1-waarden vermenigvuldigd met twee. Dit is een voorbeeld van perfecte multicollineariteit .
Dit betekent dat x1 en x2 geen unieke of onafhankelijke informatie bieden in het regressiemodel, wat problemen veroorzaakt bij het aanpassen en interpreteren van het model.
De eenvoudigste manier om dit probleem op te lossen is door eenvoudigweg één van de voorspellende variabelen uit het model te verwijderen, aangezien het overbodig is om beide voorspellende variabelen in het model te hebben.
Reden #2: Er zijn meer modelparameters dan waarnemingen
Stel dat we het volgende meervoudige lineaire regressiemodel in R passen en proberen het te gebruiken om voorspellingen te doen:
#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
We ontvangen een waarschuwingsbericht omdat we hebben geprobeerd een regressiemodel te fitten met zeven totale modelcoëfficiënten:
- x1
- x2
- x3
- x1*x2
- x1*3
- x2*x3
- x1*x2*x3
We hebben echter in totaal slechts vier waarnemingen in de dataset.
Omdat het aantal modelparameters groter is dan het aantal waarnemingen in de dataset, noemen we dit hoogdimensionale gegevens .
Met hoogdimensionale gegevens wordt het onmogelijk om een model te vinden dat de relatie tussen de voorspellende variabelen en de responsvariabele kan beschrijven, omdat we niet genoeg observaties hebben waarop we het model kunnen trainen.
De eenvoudigste manier om dit probleem op te lossen is door meer waarnemingen te verzamelen voor onze dataset of door een eenvoudiger model te gebruiken met minder te schatten coëfficiënten.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u met andere veelvoorkomende fouten in R omgaat:
Hoe te handelen: glm.fit: het algoritme is niet geconvergeerd
Hoe te handelen: glm.fit: numeriek aangepaste kansen 0 of 1 zijn opgetreden