Interpretazione di QQplot - Esiste qualche regola empirica per decidere di non normalità?


47

Ho letto abbastanza thread su QQplot qui per capire che un QQplot può essere più informativo rispetto ad altri test di normalità. Tuttavia, non ho esperienza con l'interpretazione di QQplot. Ho cercato su Google molto; Ho trovato molti grafici di QQ non normali, ma nessuna regola chiara su come interpretarli, oltre a quello che sembra essere un confronto con le distribuzioni conosciute più il "feeling istintivo".

Vorrei sapere se hai (o conosci) una regola empirica che ti aiuti a decidere per la non normalità.

Questa domanda è emersa quando ho visto questi due grafici: grafico 2 grafico 1

Comprendo che la decisione di non normalità dipende dai dati e da cosa voglio farne; tuttavia, la mia domanda è: in generale, quando le deviazioni osservate dalla linea retta costituiscono prove sufficienti per rendere irragionevole l'approssimazione della normalità?

Per quello che vale, il test di Shapiro-Wilk non è riuscito a respingere l'ipotesi di non normalità in entrambi i casi.


3
le bande di confidenza attorno alla linea QQ sono piuttosto interessanti. Puoi condividere il codice R che hai usato per ottenerli?
user603

7
È solo qqPlot () da {qualityTools} :)
greymatter0

Risposte:


43

Si noti che Shapiro-Wilk è un potente test di normalità.

L'approccio migliore è davvero avere una buona idea di quanto sia delicata ogni procedura che si desidera utilizzare nei confronti di vari tipi di non normalità (quanto gravemente non normale deve essere in quel modo affinché influisca sulla propria inferenza più di te può accettare).

Un approccio informale per guardare i grafici sarebbe quello di generare un numero di set di dati che sono effettivamente normali della stessa dimensione del campione di quello che hai - (ad esempio, diciamo 24 di essi). Traccia i tuoi dati reali in una griglia di tali grafici (5x5 nel caso di 24 set casuali). Se non è particolarmente insolito (il peggiore, diciamo), è ragionevolmente coerente con la normalità.

inserisci qui la descrizione dell'immagine

A mio avviso, il set di dati "Z" al centro appare approssimativamente alla pari di "o" e "v" e forse anche "h", mentre "d" e "f" sembrano leggermente peggiori. "Z" è il dato reale. Anche se non credo per un momento che sia effettivamente normale, non è particolarmente insolito quando lo confronti con i dati normali.

[Modifica: ho appena condotto un sondaggio casuale - beh, ho chiesto a mia figlia, ma in un momento abbastanza casuale - e la sua scelta per il minimo come una linea retta è stata "d". Quindi il 100% degli intervistati pensava che "d" fosse la più strana.]

Un approccio più formale sarebbe quello di fare un test di Shapiro-Francia (che si basa effettivamente sulla correlazione nel diagramma QQ), ma (a) non è nemmeno potente come il test di Shapiro Wilk, e (b) il test formale risponde a domanda (a volte) a cui dovresti già conoscere la risposta (la distribuzione da cui i tuoi dati sono stati estratti non è esattamente normale), invece della domanda a cui devi rispondere (quanto conta davvero?).


Come richiesto, codice per il display sopra. Niente di speciale:

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)

Si noti che questo era solo a scopo illustrativo; Volevo un piccolo set di dati che sembrava leggermente non normale, motivo per cui ho usato i residui di una regressione lineare sui dati delle auto (il modello non è del tutto appropriato). Tuttavia, se in realtà stavo generando un tale display per un set di residui per una regressione, regredirei a tutti e 25 i set di dati sugli stessi del modello e visualizzerei i grafici QQ dei loro residui, poiché i residui hanno alcuni struttura non presente in normali numeri casuali.x

(Ho creato serie di trame come questa almeno dalla metà degli anni '80. Come si possono interpretare le trame se non si ha familiarità con il modo in cui si comportano quando le ipotesi valgono - e quando non lo fanno?)

Vedi altro:

Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne, DF e Wickham, H. (2009) Inferenza statistica per analisi di dati esplorativi e diagnostica dei modelli Phil. Trans. R. Soc. A 2009 367, 4361-4383 doi: 10.1098 / rsta.2009.0120


8
+1. Mi piace molto l'idea di confrontare i grafici QQ del tuo campione con alcuni generati casualmente!
COOLSerdash

Grazie @Glen_b. Posso chiederti come hai prodotto la griglia dei grafici?
greymatter0

3
Ho appena scoperto di non aver mai risposto alla tua richiesta, greymatter0. Non c'è davvero spazio, per dirla tutta la mia sceneggiatura, ma ne descriverò l'essenza. Ho giocato con le opzioni della trama - 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))poi in un ciclo iho fatto qqnorm(xz[,i],axes=FALSE,ylab= colnames(xz)[i],xlab="",main=""); qqline(xz[,i],col=2,lty=2); box("figure", col="darkgreen")poi alla fine par(opar)per riportare le opzioni a quello che erano prima. Questo lascia fuori alcuni dettagli ma dovresti essere in grado di gestirlo da lì.
Glen_b,

@ greymatter0 ... e ora scopro di non averti eseguito correttamente il ping prima quando finalmente ho risposto. Mie scuse.
Glen_b

Non ti preoccupare Glen_b, grazie mille per averlo ricordato!
greymatter0

22

Senza contraddire nessuna delle risposte eccellenti qui, ho una regola empirica che è spesso (ma non sempre) decisiva. (Anche un commento di passaggio nella risposta di @Dante sembra pertinente.)

A volte sembra troppo ovvio affermare, ma eccoti qui.

Sono felice di chiamare una distribuzione non normale se penso di poter offrire una descrizione diversa che è chiaramente più appropriata.

Quindi, se c'è una piccola curvatura e / o irregolarità nelle code di un normale diagramma quantile-quantile, ma rettilineità approssimativa su un diagramma gamma quantile-quantile, posso dire "Non è ben caratterizzato come normale; è più simile a una gamma ".

Non è un caso che ciò rispecchi un argomento standard nella storia e nella filosofia della scienza, per non parlare della pratica scientifica generale, secondo cui un'ipotesi viene confutata in modo più chiaro ed efficace quando ne hai una migliore da mettere al suo posto. (Indicazione: allusioni a Karl Popper, Thomas S. Kuhn e così via.)

È vero che per i principianti, e in effetti per tutti, esiste una gradazione graduale tra "Questo è normale, tranne che per le piccole irregolarità che ci aspettiamo sempre" e "Questo è molto diverso dal normale, ad eccezione di alcune somiglianze grossolane che spesso otteniamo ".

Le buste di confidenza (simil-simili) e più campioni simulati possono essere di grande aiuto, e io uso e consiglio entrambi, ma può anche essere utile. (Per inciso, il confronto con un portafoglio di simulazioni è una recente reinvenzione ripetuta, ma risale almeno fino a Shewhart nel 1931.)

Farò eco alla mia linea superiore. A volte nessuna distribuzione di marca sembra adattarsi affatto e devi andare avanti nel miglior modo possibile.


12

Come ha detto @Glen_b, puoi confrontare i tuoi dati con quelli che sei sicuro siano normali - i dati che hai generato tu stesso e quindi fare affidamento sul tuo istinto :)

Quello che segue è un esempio del libro di testo OpenIntro Statistics

Diamo un'occhiata a questo diagramma QQ:

QQ1

È normale? Confrontiamolo con i dati normalmente distribuiti:

QQ2

Questo sembra migliore dei nostri dati, quindi i nostri dati non sembrano normali. Assicuriamoci simulandolo più volte e tracciando fianco a fianco

QQ3

Quindi il nostro istinto ci dice che è improbabile che il campione venga distribuito normalmente.

Ecco il codice R per farlo

load(url("http://www.openintro.org/stat/data/bdims.RData"))
fdims = subset(bdims, bdims$sex == 0)

qqnorm(fdims$wgt, col=adjustcolor("orange", 0.4), pch=19)
qqline(fdims$wgt)

qqnormsim = function(dat, dim=c(2,2)) {
  par(mfrow=dim)
  qqnorm(dat, col=adjustcolor("orange", 0.4), 
         pch=19, cex=0.7, main="Normal QQ Plot (Data)")
  qqline(dat)
  for (i in 1:(prod(dim) - 1)) {
    simnorm = rnorm(n=length(dat), mean=mean(dat), sd=sd(dat))
    qqnorm(simnorm, col=adjustcolor("orange", 0.4), 
           pch=19, cex=0.7,
           main="Normal QQ Plot (Sim)")
    qqline(simnorm)
  }
  par(mfrow=c(1, 1))
}
qqnormsim(fdims$wgt)

9

H0:F=Normal

Tipicamente, i test che considerano qualsiasi altra distribuzione come ipotesi alternativa hanno una bassa potenza rispetto ai test con la giusta ipotesi alternativa (vedere, ad esempio, 1 e 2 ).

Esiste un interessante pacchetto R con l'implementazione di numerosi test di normalità non parametrici ('nortest', http://cran.r-project.org/web/packages/nortest/index.html). Come menzionato negli articoli sopra, il test del rapporto di verosimiglianza, con appropriate ipotesi alternative, è più potente di questi test.

L'idea menzionata da @Glen_b sul confronto del campione con campioni casuali del modello (montato) è menzionata nel mio secondo riferimento. Sono chiamati "QQ-Envelopes" o "QQ-Fans". Ciò implica implicitamente un modello per generare i dati da e, di conseguenza, un'ipotesi alternativa.


4

nY


1
+1. Se hai cinque minuti di @Franck, potresti dare un'occhiata a questa discussione: stats.meta.stackexchange.com/questions/4743 e pesare lì? Riguarda i nostri tag per ordinale / ordinato logit / probit - c'è un intero gruppo o tag correlati, e alcune incongruenze nel modo in cui viene usato il tag [ordinale], quindi sto suggerendo di riordinare questi tag. Sarebbe bello conoscere la tua opinione sul modo migliore per organizzarli.
ameba dice di reintegrare Monica il

1
Y
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.