Perhatikan bahwa Shapiro-Wilk adalah ujian normal yang kuat.
Pendekatan terbaik adalah benar-benar memiliki gagasan yang baik tentang seberapa sensitif prosedur yang ingin Anda gunakan untuk berbagai jenis ketidaknormalan (seberapa parah tidak normal yang harus dilakukan sehingga mempengaruhi pengaruh Anda lebih daripada Anda dapat menerima).
Pendekatan informal untuk melihat plot akan menghasilkan sejumlah set data yang sebenarnya normal dengan ukuran sampel yang sama dengan yang Anda miliki - (misalnya, katakan 24 di antaranya). Plot data nyata Anda di antara kisi-kisi plot seperti itu (5x5 dalam kasus 24 set acak). Jika itu bukan yang terlihat tidak biasa (yang terlihat paling buruk, katakanlah), itu cukup konsisten dengan normalitas.
Menurut saya, kumpulan data "Z" di tengah terlihat kira-kira setara dengan "o" dan "v" dan mungkin bahkan "h", sementara "d" dan "f" terlihat sedikit lebih buruk. "Z" adalah data nyata. Meskipun saya tidak percaya untuk sesaat bahwa itu sebenarnya normal, itu tidak tampak aneh ketika Anda membandingkannya dengan data normal.
[Sunting: Saya baru saja melakukan polling acak - well, saya bertanya kepada putri saya, tetapi pada waktu yang cukup acak - dan pilihannya untuk paling tidak seperti garis lurus adalah "d". Jadi 100% dari mereka yang disurvei berpikir "d" adalah yang paling aneh.]
Pendekatan yang lebih formal adalah dengan melakukan tes Shapiro-Francia (yang secara efektif didasarkan pada korelasi dalam plot QQ), tetapi (a) bahkan tidak sekuat tes Shapiro Wilk, dan (b) pengujian formal menjawab pertanyaan (kadang-kadang) bahwa Anda seharusnya sudah tahu jawabannya (distribusi data Anda berasal tidak sepenuhnya normal), alih-alih pertanyaan yang perlu Anda jawab (seberapa buruk bedanya?).
Seperti yang diminta, kode untuk tampilan di atas. Tidak ada yang terlibat:
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)
x
(Saya sudah membuat set plot seperti ini sejak pertengahan 80-an. Bagaimana Anda bisa menafsirkan plot jika Anda tidak terbiasa dengan bagaimana mereka berperilaku ketika asumsi berlaku - dan ketika mereka tidak melakukannya?)
Lihat lebih lanjut:
Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne, DF dan Wickham, H. (2009) Statistik Inferensi untuk analisis data eksplorasi dan model diagnostik Phil. Trans. R. Soc. A 2009 367, 4361-4383 doi: 10.1098 / rsta.2009.0120