¿Posibles extensiones de los gráficos de diagnóstico predeterminados para lm (en R y en general)?


11

Comencé a cavar un poco en la función plot.lm , esta función da seis gráficos para lm, son:

  1. una gráfica de residuos contra valores ajustados
  2. una gráfica de ubicación de escala de sqrt (| residuales |) contra valores ajustados
  3. un gráfico QQ normal, un gráfico de distancias de Cook versus etiquetas de fila
  4. una parcela de residuos contra apalancamientos
  5. una gráfica de las distancias de Cook contra el apalancamiento / (1 apalancamiento)

Y me pregunto qué otras extensiones comunes / útiles de los gráficos actuales existen para los modelos lineales, y ¿cómo se pueden hacer en R? (También se aceptan enlaces a artículos de paquetes)

Entonces, la función boxcox (de {MASS}) es un ejemplo de otra gráfica de diagnóstico útil (y tal respuesta sería excelente), sin embargo, tengo más curiosidad acerca de las variaciones / extensiones en las gráficas de diagnóstico predeterminadas existentes para lm en R (aunque en general otras observaciones sobre el tema siempre son bienvenidas).

Aquí hay algunos ejemplos simples de lo que quiero decir:

#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)

#plot(y~x1+x2)
#summary(fit)

Para trazar los residuos frente a cada uno de los potenciales x

plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one

Para agregar la línea 0-1 (¿cómo se llama esta línea en inglés ?!) a la trama qq para ver cuánto se desvía de ella.

plot(fit, which = 2); abline(0,1, col = "green")

Para trazar el qq-plot usando residuos externamente estudiados

# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent

Básicamente hice esta pregunta para los objetos lmer: stats.stackexchange.com/questions/17785/… y espero que recibamos respuestas adicionales.
Michael Bishop

Respuestas:


17

El paquete cartiene muchas funciones útiles para diagramas de diagnóstico de modelos lineales y lineales generalizados. En comparación con las parcelas R de vainilla, a menudo se mejoran con información adicional. Le recomiendo que pruebe example("<function>")las siguientes funciones para ver cómo se ven los gráficos. Todas las parcelas se describen en detalle en el capítulo 6 de Fox & Weisberg. 2011. Un compañero R para la regresión aplicada. 2da ed.

  • residualPlots() traza los residuos de Pearson contra cada predictor (diagramas de dispersión para variables numéricas que incluyen un ajuste de Lowess, diagramas de caja para factores)
  • marginalModelPlots() muestra diagramas de dispersión de la variable de respuesta contra cada predictor numérico, incluido un ajuste de Lowess
  • avPlots() muestra gráficos de regresión parcial: para cada predictor, este es un diagrama de dispersión de a) los residuos de la regresión de la variable de respuesta en todos los demás predictores contra b) los residuos de la regresión del predictor contra todos los demás predictores
  • qqPlot() para un gráfico cuantil-cuantil que incluye un sobre de confianza
  • influenceIndexPlot() muestra cada valor para la distancia de Cook, el valor del sombrero, el valor p para la prueba de valores atípicos y el residuo estudiado en un diagrama de espigas contra el índice de observación
  • influencePlot()da un gráfico de burbujas de residuos estudiados contra valores de sombrero, con el tamaño de la burbuja correspondiente a la distancia de Cook, también vea dfbetaPlots()yleveragePlots()
  • boxCox()muestra un perfil de la probabilidad de registro para el parámetro de transformación en una transformación de potencia de Box-Coxλ
  • crPlots() es para componentes + gráficos residuales, una variante de los cuales son gráficos CERES (Combinando Expectativas condicionales y RESIDUALES), proporcionados por ceresPlots()
  • spreadLevelPlot() es para evaluar la varianza de error no constante y muestra los residuos absolutos estudiados contra los valores ajustados
  • scatterplot() proporciona diagramas de dispersión muy mejorados que incluyen diagramas de caja a lo largo de los ejes, elipses de confianza para la distribución bivariada y líneas de predicción con bandas de confianza
  • scatter3d()se basa en el paquete rgly muestra diagramas de dispersión 3D interactivos que incluyen elipsoides de confianza de malla de alambre y planos de predicción, asegúrese de ejecutarexample("scatter3d")

Además, eche un vistazo al bplot()paquete rmspara ver otro enfoque para ilustrar la distribución común de tres variables.


1
(+1) ¡Esa es una muy buena descripción que será útil para todos nosotros!
chl

Caracal: esta es una gran lista, ¡gracias! Si está bien para usted, podría terminar volviendo a publicar esto en mi blog (después de que más personas, posiblemente, agreguen sus comentarios)
Tal Galili

@TalGalili Claro, eso está bien para mí.
caracal

44
Puede ver ejemplos de algunos de estos aquí: statmethods.net/stats/rdiagnostics.html
Michael Bishop

Caracal - gracias de nuevo :) Michael - ese es un buen enlace. Si desea agregarlo como respuesta (y tal vez copiar y pegar algunas de las parcelas relevantes que no aparecieron en la respuesta caracal) - Con mucho gusto votaré ...
Tal Galili

7

Esta respuesta se centra en lo que está disponible en la base R, en lugar de los paquetes externos, aunque estoy de acuerdo en que vale la pena adoptar el paquete de Fox.

La función influence()(o su envoltorio influence.measures()) devuelve la mayor parte de lo que necesitamos para el diagnóstico del modelo, incluidas las estadísticas extraviadas. Como se indica en los modelos estadísticos de Chambers y Hastie en S (Wadsworth y Brooks, 1992), se puede usar en combinación para summary.lm(). Uno de los ejemplos proporcionados en el llamado "libro blanco" (págs. 130-131) permite calcular los residuos estandarizados (residuales con igual varianza) y estudiados (lo mismo con una estimación diferente para SE), DFBETAS (cambio en el coeficientes escalados por el SE para los coeficientes de regresión), DFFIT (cambio en el valor ajustado cuando se cae la observación) y DFFITS (lo mismo, con varianza unitaria) mide sin mucha dificultad.

Según su ejemplo, y definiendo los siguientes objetos:

lms <- summary(fit)
lmi <- influence(fit)
e <- residuals(fit)
s <- lms$sigma
xxi <- diag(lms$cov.unscaled)
si <- lmi$sigma
h <- lmi$hat
bi <- coef(fit) - coef(lmi)

Podemos calcular las cantidades anteriores de la siguiente manera:

std. residuals    e / (s * (1-h)^.5
stud. residuals   e / (si * (1-h)^.5
dfbetas           bi / (si %o% xxi^.5 
dffit             h * e / (1-h)
dffits            h^.5 * e / (si * (1-h))

(Esta es la Tabla 4.1 , p. 131.)

Chambers y Hastie dan el siguiente código S / R para computar DFBETAS:

dfbetas <- function(fit, lms = summary(fit), lmi = lm.influence(fit)) {
  xxi <- diag(lms$cov.unscaled)
  si <- lmi$sigma
  bi <- coef(fit) - coef(lmi)
  bi / (si %o% xxi^0.5)
}

¿Por qué menciono ese enfoque? Porque, primero, encuentro que esto es interesante desde una perspectiva pedagógica (eso es lo que estoy usando cuando enseño cursos introductorios de estadística) ya que permite ilustrar lo que se puede calcular a partir de la salida de un modelo lineal ajustado ajustado en R (pero lo mismo aplicar con cualquier otro paquete estadístico). En segundo lugar, como las cantidades anteriores se devolverán como vectores simples o matrices en R, eso también significa que podemos elegir el dispositivo gráfico que queramos --- retícula o ggplot --- para mostrar esas estadísticas, o usarlas para mejorar una existente gráfico (por ejemplo, resaltar valores DFFITS en un diagrama de dispersión variando el tamaño del punto cex).


Respuesta muy informativa y útil. El enfoque en R realidad no le restan de su valor desde que documentó la lógica estadística,
Dwin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.