Estoy usando rlm en el paquete R MASS para hacer retroceder un modelo lineal multivariante. Funciona bien para varias muestras, pero obtengo coeficientes casi nulos para un modelo en particular:
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)
A modo de comparación, estos son los coeficientes calculados por 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
El diagrama de mm no muestra valores atípicos particularmente altos, medidos por la distancia de Cook:
EDITAR
Como referencia y después de confirmar los resultados basados en la respuesta proporcionada por Macro, el comando R para establecer el parámetro de ajuste k
, en el estimador Huber es ( k=100
en este caso):
rlm(y ~ x, psi = psi.huber, k = 100)
r
multiple-regression
robust
Robert Kubrick
fuente
fuente
rlm
función de peso está descartando casi todas las observaciones. ¿Estás seguro de que es la misma Y en las dos regresiones? (Solo verificando ...) Intentemethod="MM"
en surlm
llamada, luego intente (si eso falla)psi=psi.huber(k=2.5)
(2.5 es arbitrario, solo más grande que el predeterminado 1.345) que extiende lalm
región similar a la función de peso.Respuestas:
La diferencia es que seM
rlm()
ajusta a los modelos usando su elección de varios estimadores diferentes , mientras que usa mínimos cuadrados ordinarios.lm()
En general, el estimador para un coeficiente de regresión minimizaM
en función de , donde Y i es la i -ésima respuesta y X i son los predictores para el individuo i . Mínimos cuadrados es un caso especial de esto donde ρ ( x ) = x 2β Yi i Xi i
rlm()
rlm()
Editar: desde el gráfico QQ que se muestra arriba, parece que tiene una distribución de error de cola muy larga. Este es el tipo de situación para la cual está diseñado el estimador M de Huber y, en esa situación, puede dar estimaciones bastante diferentes:
fuente
psi.huber
lm
estimaciones. Además, es posible que la estimación inicial de propagación (MAD) con este conjunto de datos sea muy, muy pequeña, lo que puede verificar calculando MAD en los residuos a partir derlm
; en este caso, se descarta todo de cualquier magnitud porque la estimación de propagación es demasiado pequeña, y variar k algunos no hará la diferencia.