R - QQPlot: come vedere se i dati sono normalmente distribuiti


47

L'ho tracciato dopo aver fatto un test di normalità Shapiro-Wilk. Il test ha dimostrato che è probabile che la popolazione sia normalmente distribuita. Tuttavia, come vedere questo "comportamento" su questa trama?inserisci qui la descrizione dell'immagine

AGGIORNARE

Un semplice istogramma dei dati:

inserisci qui la descrizione dell'immagine

AGGIORNARE

Il test Shapiro-Wilk dice:

inserisci qui la descrizione dell'immagine


6
Per quanto riguarda la modifica: il risultato del test SW rifiuta l'ipotesi che questi dati siano stati ricavati indipendentemente da una distribuzione normale comune: il valore p è molto piccolo. (Ciò è evidente sia nel diagramma qq, che presenta una corta coda sinistra, sia nell'istogramma, che mostra un'asimmetria positiva.) Ciò suggerisce che hai interpretato male il test. Quando interpreti correttamente il test, hai ancora una domanda da porre?
whuber

4
Al contrario: il software e tutte le trame sono coerenti in quello che dicono. Il diagramma qq e l'istogramma mostrano modi specifici in cui i dati si discostano dalla normalità; il test SW afferma che è improbabile che tali dati provengano da una distribuzione normale.
whuber

1
Perché le trame dicono che non è distribuito normalmente? Il qqplot crea una linea retta e l'istogramma sembra anche distribuito normalmente? Non capisco; (
Le Max

7
La trama qq chiaramente non è lineare e l'istogramma chiaramente non è simmetrico (che è forse il più basilare dei molti criteri che un istogramma normalmente distribuito deve soddisfare). La risposta di Sven Hohenstein spiega come leggere la trama qq.
whuber

1
Potresti trovare utile generare un vettore normale della stessa dimensione e creare un diagramma QQ con i dati normali per vedere come potrebbe apparire quando i dati provengono, infatti, da una distribuzione normale.
StatStudent

Risposte:


31

" Il test ha dimostrato che è probabile che la popolazione sia normalmente distribuita " .

No; non lo ha mostrato.

I test di ipotesi non indicano la probabilità del valore null. In effetti puoi scommettere che questo null è falso.

La trama QQ non fornisce una forte indicazione di non normalità (la trama è abbastanza semplice); c'è forse una coda sinistra leggermente più corta di quanto ti aspetteresti, ma non importa molto.

L'istogramma così com'è probabilmente non dice molto neanche; suggerisce anche una coda sinistra leggermente più corta. Ma vedi qui

La distribuzione della popolazione da cui provengono i tuoi dati non sarà esattamente normale. Tuttavia, il diagramma QQ mostra che la normalità è probabilmente un'approssimazione ragionevolmente buona.

Se la dimensione del campione non fosse troppo piccola, una mancanza di rifiuto dello Shapiro-Wilk probabilmente direbbe lo stesso.

Aggiornamento: la modifica per includere l'effettivo valore p di Shapiro-Wilk è importante perché in realtà ciò indicherebbe che si rifiuterà il null a livelli significativi tipici. Quel test indica che i tuoi dati non sono normalmente distribuiti e la lieve inclinazione indicata dai grafici è probabilmente ciò che viene raccolto dal test. Per le procedure tipiche che potrebbero assumere la normalità della variabile stessa (il test t di un campione è quello che viene in mente), a quella che sembra essere una dimensione del campione abbastanza grande, questa lieve non normalità non avrà quasi alcuna conseguenza a tutto - uno dei problemi con la bontà dei test di adattamento è che sono più propensi a rifiutare proprio quando non importa (quando la dimensione del campione è abbastanza grande da rilevare una modesta non normalità); allo stesso modo è più probabile che non riescano a rifiutare quando conta di più (quando la dimensione del campione è piccola).


In effetti, questo mi ha fatto fraintendere l'affermazione del PO: ho pensato che fosse improbabile. Si noti che ho un po 'd'accordo con te: mentre un test di solito ti dice come improbabile un'osservazione sarebbe se l'ipotesi nulla fosse vera, usiamo questo per sostenere che da quando abbiamo fatto ottenere questa osservazione, l'ipotesi nulla è improbabile che sia vero.
Nick Sabbe,

Grazie per la tua risposta! Sono un po 'confuso da tutte le affermazioni che vanno nella direzione opposta. Per dirlo chiaramente, il mio esercizio è quello di fare una dichiarazione sulla normalità del campione. Cosa suggeriresti di dire come risposta al mio professore? E come mostrare la normalità anche se la dimensione del campione è enorme?; S
Le Max

2
Il più forte che potresti dire sarebbe qualcosa del tipo: "La trama del QQ è ragionevolmente coerente con la normalità, ma la coda sinistra è un po '" corta "; c'è una leggera indicazione di asimmetria."
Glen_b

37

Se i dati sono normalmente distribuiti, i punti nel diagramma QQ-normale si trovano su una linea diagonale diritta. È possibile aggiungere questa riga al diagramma QQ con il comando qqline(x), dove xè il vettore dei valori.

Esempi di distribuzione normale e non normale:

Distribuzione normale

set.seed(42)
x <- rnorm(100)

Il diagramma QQ-normale con la linea:

qqnorm(x); qqline(x)

inserisci qui la descrizione dell'immagine

Le deviazioni dalla linea retta sono minime. Questo indica una distribuzione normale.

L'istogramma:

hist(x)

inserisci qui la descrizione dell'immagine

Distribuzione non normale (gamma)

y <- rgamma(100, 1)

La trama QQ-normale:

qqnorm(y); qqline(y)

inserisci qui la descrizione dell'immagine

I punti seguono chiaramente un'altra forma rispetto alla linea retta.

L'istogramma conferma la non normalità. La distribuzione non è a forma di campana ma inclinata positivamente (ovvero, la maggior parte dei punti di dati si trova nella metà inferiore). Gli istogrammi delle distribuzioni normali mostrano la frequenza più alta al centro della distribuzione.

hist(y)

inserisci qui la descrizione dell'immagine


Trovo che sia utile mettere gli intervalli di confidenza su qqplot. Niente è "perfettamente" normale e la dimensione del campione può determinare fino a che punto qualcosa può essere inesatto e ancora all'interno della normalità.
EngrStudent - Ripristina Monica il

@EngrStudent Hai un codice da condividere per includere l'intervallo di confidenza nel qqplot?
danno,

1
@danno Scopri la qqPlotfunzione nel carpacchetto.
Sven Hohenstein,

@danno - guarda "qqPlot" nella libreria "auto". È in circolazione da un po 'e non ce l'ho fatta. Aggiunge gli intervalli di confidenza. È inoltre possibile specificare la distribuzione di base per alcune distribuzioni non normali. È nella mia risposta di seguito.
EngrStudent - Ripristina Monica il

1
Penso che probabilmente sia meglio anche per il principiante indicare che i punti devono trovarsi su una linea retta affinché il presupposto della normalità verifichi davvero. approximately
StatStudent

23

Alcuni strumenti per verificare la validità dell'assunzione di normalità in R

library(moments)
library(nortest)
library(e1071)

set.seed(777)
x <- rnorm(250,10,1)

# skewness and kurtosis, they should be around (0,3)
skewness(x)
kurtosis(x)

# Shapiro-Wilks test
shapiro.test(x)

# Kolmogorov-Smirnov test
ks.test(x,"pnorm",mean(x),sqrt(var(x)))

# Anderson-Darling test
ad.test(x)

# qq-plot: you should observe a good fit of the straight line
qqnorm(x)
qqline(x)

# p-plot: you should observe a good fit of the straight line
probplot(x, qdist=qnorm)

# fitted normal density
f.den <- function(t) dnorm(t,mean(x),sqrt(var(x)))
curve(f.den,xlim=c(6,14))
hist(x,prob=T,add=T)

11

Sebbene sia una buona idea verificare visivamente se l'intuizione corrisponde al risultato di alcuni test, non puoi aspettarti che sia facile ogni volta. Se le persone che cercano di rilevare il bosone di Higgs si fidassero dei loro risultati solo se fossero in grado di valutarli visivamente, avrebbero bisogno di un occhio molto acuto.

Soprattutto con grandi set di dati (e quindi, in genere con potenza crescente), le statistiche tendono a rilevare le più piccole differenze, anche quando sono difficilmente riconoscibili a occhio nudo.

Detto questo: per la normalità, la tua trama QQ dovrebbe mostrare una linea retta: direi di no. Ci sono curve chiare nelle code e anche vicino al centro c'è un po 'di confusione. Visivamente, potrei comunque essere disposto a dire (a seconda dell'obiettivo del controllo della normalità) che questi dati sono "ragionevolmente" normali, però.

Nota tuttavia: per la maggior parte degli scopi in cui si desidera verificare la normalità, è necessaria solo la normalità dei mezzi anziché la normalità delle osservazioni, quindi il teorema del limite centrale potrebbe essere sufficiente per salvarti. Inoltre: mentre la normalità è spesso un presupposto che è necessario controllare "ufficialmente", molti test hanno dimostrato di essere abbastanza insensibili al fatto che tale presupposto non sia soddisfatto.


2

Mi piace la versione fuori dalla macchina "R" della libreria perché fornisce non solo la tendenza centrale, ma gli intervalli di confidenza. Fornisce una guida visiva per aiutare a confermare se il comportamento dei dati è coerente con la distribuzione ipotetica.

library(car)

qqPlot(lm(prestige ~ income + education + type, data=Duncan), 
       envelope=.99)

alcuni link:

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.