Perché le stime del coefficiente di regressione rlm () sono diverse da lm () in R?


15

Sto usando rlm nel pacchetto R MASS per regredire un modello lineare multivariato. Funziona bene per un numero di campioni ma sto ottenendo coefficienti quasi nulli per un modello particolare:

Call: rlm(formula = Y ~ X1 + X2 + X3 + X4, data = mymodel, maxit = 50, na.action = na.omit)
Residuals:
       Min         1Q     Median         3Q        Max 
-7.981e+01 -6.022e-03 -1.696e-04  8.458e-03  7.706e+01 

Coefficients:
             Value    Std. Error t value 
(Intercept)    0.0002   0.0001     1.8418
X1             0.0004   0.0000    13.4478
X2            -0.0004   0.0000   -23.1100
X3            -0.0001   0.0002    -0.5511
X4             0.0006   0.0001     8.1489

Residual standard error: 0.01086 on 49052 degrees of freedom
  (83 observations deleted due to missingness)

Per confronto, questi sono i coefficienti calcolati da lm ():

Call:
lm(formula = Y ~ X1 + X2 + X3 + X4, data = mymodel, na.action = na.omit)

Residuals:
    Min      1Q  Median      3Q     Max 
-76.784  -0.459   0.017   0.538  78.665 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -0.016633   0.011622  -1.431    0.152    
X1            0.046897   0.004172  11.240  < 2e-16 ***
X2           -0.054944   0.002184 -25.155  < 2e-16 ***
X3            0.022627   0.019496   1.161    0.246    
X4            0.051336   0.009952   5.159  2.5e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 2.574 on 49052 degrees of freedom
  (83 observations deleted due to missingness)
Multiple R-squared: 0.0182, Adjusted R-squared: 0.01812 
F-statistic: 227.3 on 4 and 49052 DF,  p-value: < 2.2e-16 

La trama lm non mostra alcun valore anomalo particolarmente elevato, come misurato dalla distanza di Cook:

Sono diagnostico

MODIFICARE

Per riferimento e dopo aver confermato i risultati in base alla risposta fornita da Macro, il comando R per impostare il parametro di ottimizzazione k, nello stimatore Huber è ( k=100in questo caso):

rlm(y ~ x, psi = psi.huber, k = 100)

Gli errori standard residui, in combinazione con le altre informazioni, fanno sembrare che la rlmfunzione peso stia eliminando quasi tutte le osservazioni. Sei sicuro che sia la stessa Y nelle due regressioni? (Basta controllare ...) Prova method="MM"a rlmchiamare, quindi prova (se fallisce) psi=psi.huber(k=2.5)(2.5 è arbitrario, appena più grande di quello predefinito 1.345) che distribuisce la lmregione simile alla funzione peso.
jbowman,

@jbowman Y è corretto. Aggiunto il metodo MM. La mia intuizione è la stessa che hai menzionato. I residui di questo modello sono relativamente compatti rispetto agli altri che ho provato. Sembra che la metodologia stia scartando la maggior parte delle osservazioni.
Robert Kubrick,

1
@RobertKubrick si capisce che cosa impostazione k a 100 mezzi , giusto?
user603

Basandoti su questo: R-quadrato multiplo: 0,0182, R-quadrato rettificato: 0,01812 dovresti esaminare il tuo modello ancora una volta. Valori anomali, trasformazione della risposta o predittori. Oppure dovresti considerare un modello non lineare. Il predittore X3 non è significativo. Quello che hai fatto non è un buon modello lineare.
Marija Milojevic,

Risposte:


15

La differenza è che si rlm()adatta ai modelli usando la tua scelta di un numero di diversi stimatori , mentre usa i minimi quadrati ordinari.Mlm()

In generale il stimatore per un coefficiente di regressione minimizzaM

i=1nρ(YiXiβσ)

in funzione di , dove Y i rappresenta l' i 'th risposta, e X i è predittori per i singoli i . I minimi quadrati sono un caso speciale in cui ρ ( x ) = x 2 Tuttavia, l'impostazione predefinita per , che sembra stia utilizzando, è lo stimatore M di Huber , che utilizzaβYiiXii

ρ(x)=x2
rlm()M

ρ(x)={12x2if |x|kk|x|12k2if |x|>k.

krlm()k=1.345

Modifica: dal diagramma QQ mostrato sopra, sembra che tu abbia una distribuzione degli errori dalla coda molto lunga. Questo è il tipo di situazione per cui lo stimatore M Huber è progettato e, in quella situazione, può fornire stime abbastanza diverse:

ρ| x | > k|x|<k|x|>k


Ho provato diversi altri modelli (stesso numero di osservazioni, stessi IV) e i coefficienti sono abbastanza simili tra rlm e lm. In questo particolare set di dati deve esserci qualcosa che sta producendo la grande differenza nei coefficienti.
Robert Kubrick,

1
K

1
K=1.5,2,2.5,3,3.5,4psi.huberKlmrlm
jbowman

1
Questo è per le informazioni aggiunte, @jbowman - questi sono commenti utili. Per quanto riguarda il tuo ultimo commento, quelle grandi osservazioni non vengono esattamente eliminate - la loro influenza viene semplicemente ridotta (come sembra che dovrebbero essere), giusto?
Macro,

1
σσ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.