Come risolvere il problema: prevedere uno scarso aggiustamento del ranking può essere fuorviante


Un avviso comune che potresti incontrare in R è:

 Warning message:
In predict.lm(model, df):
  prediction from a rank-deficient fit may be misleading

Questo avviso può verificarsi per due motivi:

Motivo 1 : due variabili predittive sono perfettamente correlate.

Motivo 2 : nel set di dati sono presenti più parametri del modello che osservazioni.

Gli esempi seguenti mostrano come ciascun problema potrebbe presentarsi nella pratica.

Motivo n. 1: due variabili predittive sono perfettamente correlate

Supponiamo di adattare il seguente modello di regressione lineare multipla in R e di provare a utilizzarlo per fare previsioni:

 #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

Riceviamo un messaggio di avviso perché le variabili predittive x1 e x2 sono perfettamente correlate .

Nota che i valori x2 sono semplicemente uguali ai valori x1 moltiplicati per due. Questo è un esempio di multicollinearità perfetta .

Ciò significa che x1 e x2 non forniscono informazioni univoche o indipendenti nel modello di regressione, il che causa problemi durante l’adattamento e l’interpretazione del modello.

Il modo più semplice per risolvere questo problema è rimuovere semplicemente una delle variabili predittive dal modello, poiché è ridondante avere entrambe le variabili predittive nel modello.

Motivo n. 2: ci sono più parametri del modello che osservazioni

Supponiamo di adattare il seguente modello di regressione lineare multipla in R e di provare a utilizzarlo per fare previsioni:

 #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

Riceviamo un messaggio di avviso perché abbiamo tentato di adattare un modello di regressione con sette coefficienti del modello totale:

  • x1
  • x2
  • x3
  • x1*x2
  • x1*3
  • x2*x3
  • x1*x2*x3

Tuttavia, abbiamo solo quattro osservazioni in totale nel set di dati.

Poiché il numero di parametri del modello è maggiore del numero di osservazioni nel set di dati, li chiamiamo dati ad alta dimensione .

Con dati ad alta dimensione diventa impossibile trovare un modello in grado di descrivere la relazione tra le variabili predittive e la variabile di risposta perché non disponiamo di osservazioni sufficienti su cui addestrare il modello.

Il modo più semplice per risolvere questo problema è raccogliere più osservazioni per il nostro set di dati o utilizzare un modello più semplice con meno coefficienti da stimare.

Risorse addizionali

I seguenti tutorial spiegano come gestire altri errori comuni in R:

Come gestire: glm.fit: l’algoritmo non converge
Come gestire: glm.fit: si sono verificate probabilità corrette numericamente 0 o 1

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *