Tenga en cuenta que el Shapiro-Wilk es una poderosa prueba de normalidad.
El mejor enfoque es realmente tener una buena idea de cuán sensible es cualquier procedimiento que desee utilizar a varios tipos de no normalidad (cuán gravemente no normal tiene que ser de esa manera para que afecte su inferencia más que usted poder aceptar).
Un enfoque informal para observar las gráficas sería generar una serie de conjuntos de datos que en realidad son normales del mismo tamaño de muestra que el que tiene usted (por ejemplo, digamos 24 de ellos). Trace sus datos reales entre una cuadrícula de tales tramas (5x5 en el caso de 24 conjuntos aleatorios). Si no tiene un aspecto especialmente inusual (el peor aspecto, por ejemplo), es razonablemente consistente con la normalidad.
En mi opinión, el conjunto de datos "Z" en el centro se ve más o menos a la par con "o" y "v" y tal vez incluso "h", mientras que "d" y "f" se ven un poco peor. "Z" son los datos reales. Si bien no creo por un momento que sea realmente normal, no es particularmente inusual cuando se compara con datos normales.
[Editar: Acabo de realizar una encuesta aleatoria, bueno, le pregunté a mi hija, pero en un momento bastante aleatorio , y su elección por lo menos como una línea recta fue "d". Entonces, el 100% de los encuestados pensó que "d" era la más extraña.]
Un enfoque más formal sería hacer una prueba de Shapiro-Francia (que se basa efectivamente en la correlación en el diagrama QQ), pero (a) ni siquiera es tan potente como la prueba de Shapiro Wilk, y (b) las pruebas formales responden a pregunta (a veces) a la que ya debería saber la respuesta de todos modos (la distribución de la que se extrajeron sus datos no es exactamente normal), en lugar de la pregunta que necesita respuesta (¿qué tan importante es eso?).
Según lo solicitado, codifique la pantalla anterior. Nada lujoso involucrado:
z = lm(dist~speed,cars)$residual
n = length(z)
xz = cbind(matrix(rnorm(12*n),nr=n),z,matrix(rnorm(12*n),nr=n))
colnames(xz) = c(letters[1:12],"Z",letters[13:24])
opar = par()
par(mfrow=c(5,5));
par(mar=c(0.5,0.5,0.5,0.5))
par(oma=c(1,1,1,1));
ytpos = (apply(xz,2,min)+3*apply(xz,2,max))/4
cn = colnames(xz)
for(i in 1:25) {
qqnorm(xz[,i],axes=FALSE,ylab= colnames(xz)[i],xlab="",main="")
qqline(xz[,i],col=2,lty=2)
box("figure", col="darkgreen")
text(-1.5,ytpos[i],cn[i])
}
par(opar)
Tenga en cuenta que esto fue solo con fines ilustrativos; Quería un pequeño conjunto de datos que pareciera ligeramente no normal, por eso utilicé los residuos de una regresión lineal en los datos de los automóviles (el modelo no es del todo apropiado). Sin embargo, si realmente estuviera generando una visualización de este tipo para un conjunto de residuos para una regresión, haría una regresión de los 25 conjuntos de datos en las mismas que en el modelo, y mostraría gráficos QQ de sus residuos, ya que los residuos tienen algunos estructura no presente en números aleatorios normales.X
(He estado haciendo series de tramas como esta desde mediados de los años 80 al menos. ¿Cómo puedes interpretar las tramas si no estás familiarizado con cómo se comportan cuando se cumplen los supuestos y cuándo no?)
Ver más:
Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne, DF y Wickham, H. (2009) Inferencia estadística para análisis de datos exploratorios y diagnóstico de modelos Phil. Trans. R. Soc. A 2009 367, 4361-4383 doi: 10.1098 / rsta.2009.0120