Comencé a cavar un poco en la función plot.lm , esta función da seis gráficos para lm, son:
- una gráfica de residuos contra valores ajustados
- una gráfica de ubicación de escala de sqrt (| residuales |) contra valores ajustados
- un gráfico QQ normal, un gráfico de distancias de Cook versus etiquetas de fila
- una parcela de residuos contra apalancamientos
- 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
r
regression
linear-model
diagnostic
Tal Galili
fuente
fuente
Respuestas:
El paquete
car
tiene 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 pruebeexample("<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 LowessavPlots()
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 predictoresqqPlot()
para un gráfico cuantil-cuantil que incluye un sobre de confianzainfluenceIndexPlot()
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óninfluencePlot()
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 veadfbetaPlots()
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-CoxcrPlots()
es para componentes + gráficos residuales, una variante de los cuales son gráficos CERES (Combinando Expectativas condicionales y RESIDUALES), proporcionados porceresPlots()
spreadLevelPlot()
es para evaluar la varianza de error no constante y muestra los residuos absolutos estudiados contra los valores ajustadosscatterplot()
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 confianzascatter3d()
se basa en el paquetergl
y 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()
paqueterms
para ver otro enfoque para ilustrar la distribución común de tres variables.fuente
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 envoltorioinfluence.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 parasummary.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:
Podemos calcular las cantidades anteriores de la siguiente manera:
(Esta es la Tabla 4.1 , p. 131.)
Chambers y Hastie dan el siguiente código S / R para computar DFBETAS:
¿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
).fuente