R - QQPlot: jak sprawdzić, czy dane są zwykle dystrybuowane

47

Zrobiłem to po wykonaniu testu normalności Shapiro-Wilka. Test wykazał, że populacja jest zwykle podzielona. Jak jednak zobaczyć to „zachowanie” na tej fabule?wprowadź opis zdjęcia tutaj

AKTUALIZACJA

Prosty histogram danych:

wprowadź opis zdjęcia tutaj

AKTUALIZACJA

Test Shapiro-Wilka mówi:

wprowadź opis zdjęcia tutaj

Le Max
źródło
6
Re edycja: wynik testu SW odrzuca hipotezę, że dane te zostały niezależnie wyciągnięte ze wspólnego rozkładu normalnego: wartość p jest bardzo mała. (Jest to widoczne zarówno na wykresie qq, który wykazuje krótki lewy ogon, jak i na histogramie, który wykazuje dodatnią skośność.) To sugeruje, że źle zinterpretowałeś test. Czy poprawnie interpretując test, wciąż masz pytanie?
whuber
4
Wręcz przeciwnie: oprogramowanie i wszystkie wykresy są spójne w tym, co mówią. Wykres qq i histogram pokazują konkretne sposoby, w jakie dane odbiegają od normalności; test SW stwierdza, że ​​jest mało prawdopodobne, aby takie dane pochodziły z normalnego rozkładu.
whuber
1
Dlaczego wykresy mówią, że nie są normalnie dystrybuowane? Qqplot tworzy linię prostą, a histogram wygląda również normalnie rozłożony? Nie rozumiem; (
Le Max
7
Wykres qq wyraźnie nie jest prosty, a histogram wyraźnie nie jest symetryczny (co jest być może najbardziej podstawowym z wielu kryteriów, które musi spełniać histogram o rozkładzie normalnym). Odpowiedź Svena Hohensteina wyjaśnia, jak czytać wykres qq.
whuber
1
Pomocne może być wygenerowanie normalnego wektora o tym samym rozmiarze i utworzenie wykresu QQ z normalnymi danymi, aby zobaczyć, jak może wyglądać, gdy dane faktycznie pochodzą z rozkładu normalnego.
StatsStudent

Odpowiedzi:

31

Test wykazał, że prawdopodobne jest, że populacja jest normalnie rozmieszczona ”.

Nie; to nie pokazało tego.

Testy hipotez nie mówią ci, jak prawdopodobne jest zero. W rzeczywistości możesz założyć się, że to zero jest fałszywe.

Wykres QQ nie daje wyraźnego wskazania na nienormalność (wykres jest dość prosty); Być może lewy ogon jest nieco krótszy, niż można się spodziewać, ale to naprawdę nie będzie miało większego znaczenia.

Histogram „jak jest” prawdopodobnie też niewiele mówi; wskazuje również na nieco krótszy lewy ogon. Ale patrz tutaj

Rozkład populacji, z którego pochodzą Twoje dane, nie będzie dokładnie normalny. Jednak wykres QQ pokazuje, że normalność jest prawdopodobnie dość dobrym przybliżeniem.

Gdyby wielkość próbki nie była zbyt mała, brak odrzucenia Shapiro-Wilka prawdopodobnie powiedziałby to samo.

Aktualizacja: zmiana uwzględniająca rzeczywistą wartość p Shapiro-Wilka jest ważna, ponieważ w rzeczywistości oznaczałoby to odrzucenie wartości null na typowych znaczących poziomach. Ten test wskazuje, że twoje dane nie są normalnie dystrybuowane, a łagodna skośność wskazana przez wykresy jest prawdopodobnie tym, co jest wykrywane przez test. W przypadku typowych procedur, które mogą zakładać normalność samej zmiennej (przychodzi na myśl test t dla jednej próby), przy czym wydaje się, że jest to dość duża próbka, ta łagodna nienormalność nie będzie miała prawie żadnego wpływu na wszystko - jednym z problemów z dobrością testów dopasowania jest to, że częściej odrzucają je, gdy nie ma to znaczenia (gdy wielkość próbki jest wystarczająco duża, aby wykryć niewielką nienormalność); podobnie częściej nie odrzucają, gdy ma to największe znaczenie (gdy próbka jest mała).

Glen_b
źródło
W rzeczywistości sprawiło to, że źle odczytałem oświadczenie OP: myślałem, że powiedział mało prawdopodobne. Należy zauważyć, że nieznacznie zgadzam z wami podczas testu zwykle mówi, jak mało obserwacja byłoby, gdyby hipoteza zerowa były prawdziwe, używamy tego argumentować, że skoro my nie dostać tę obserwację, hipoteza zerowa jest mało prawdopodobne, aby mogło być prawdziwe.
Nick Sabbe,
Dziękuję za odpowiedź! Jestem nieco zdezorientowany wszystkimi oświadczeniami, które idą w innym kierunku. Mówiąc jasno, moim ćwiczeniem jest wypowiedzenie się na temat normalności próbki. Co byś powiedział jako odpowiedź dla mojego profesora? A jak pokazać normalność, nawet wielkość próby jest ogromna
Le Max
2
Najsilniejszy, jaki można by powiedzieć, to coś w stylu: „Wykres QQ jest dość zgodny z normalnością, ale lewy ogon jest trochę„ krótki ”; jest łagodny ślad skosu”.
Glen_b 17.03.13
37

Jeśli dane są normalnie rozmieszczone, punkty na wykresie QQ-normal leżą na prostej linii ukośnej. Możesz dodać tę linię do wykresu QQ za pomocą polecenia qqline(x), gdzie xjest wektorem wartości.

Przykłady rozkładu normalnego i niestandardowego:

Normalna dystrybucja

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

Wykres QQ-normal z linią:

qqnorm(x); qqline(x)

wprowadź opis zdjęcia tutaj

Odchylenia od linii prostej są minimalne. Oznacza to rozkład normalny.

Histogram:

hist(x)

wprowadź opis zdjęcia tutaj

Rozkład niestandardowy (gamma)

y <- rgamma(100, 1)

Wykres QQ-normal:

qqnorm(y); qqline(y)

wprowadź opis zdjęcia tutaj

Punkty wyraźnie mają inny kształt niż linia prosta.

Histogram potwierdza nienormalność. Rozkład nie ma kształtu dzwonu, ale jest dodatnio wypaczony (tzn. Większość punktów danych znajduje się w dolnej połowie). Histogramy rozkładów normalnych pokazują najwyższą częstotliwość w środku rozkładu.

hist(y)

wprowadź opis zdjęcia tutaj

Sven Hohenstein
źródło
Uważam, że umieszczenie przedziałów ufności na qqplot jest przydatne. Nic nie jest „idealnie” normalne, a wielkość próbki może decydować o tym, jak daleko coś może być niedokładne i nadal mieści się w normie.
EngrStudent - Przywróć Monikę
@EngrStudent Czy masz kod do udostępnienia, aby uwzględnić przedział ufności w qqplot?
Danno
1
@danno Sprawdź qqPlotfunkcję w carpakiecie.
Sven Hohenstein,
@danno - spójrz na „qqPlot” w bibliotece „car”. Jest już od jakiegoś czasu i nie udało mi się. Dodaje przedziały ufności. Możesz również określić rozkład podstawowy dla niektórych niestandardowych rozkładów. To jest w mojej odpowiedzi poniżej.
EngrStudent - Przywróć Monikę
1
approximately
23

Niektóre narzędzia do sprawdzania poprawności założenia normalności w 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)
Andres Henestrosa
źródło
11

Chociaż dobrze jest wizualnie sprawdzić, czy intuicja pasuje do wyniku jakiegoś testu, nie można oczekiwać, że będzie to łatwe za każdym razem. Jeśli ludzie próbujący wykryć bozon Higgsa zaufaliby swoim wynikom, gdyby mogli je wizualnie ocenić, potrzebowaliby bardzo bystrego oka.

Zwłaszcza w przypadku dużych zestawów danych (a tym samym zwykle ze wzrostem mocy) statystyki zwykle wychwytują najmniejsze różnice, nawet jeśli trudno je dostrzec gołym okiem.

To powiedziawszy: dla normalności twój wykres QQ powinien pokazywać linię prostą: powiedziałbym, że nie. Ogony mają wyraźne zakręty, a nawet w środkowej części występuje zamieszanie. Wizualnie nadal mogę chcieć powiedzieć (w zależności od celu sprawdzenia normalności), że dane te są „w miarę” normalne.

Zauważ jednak: dla większości celów, w których chcesz sprawdzić normalność, potrzebujesz tylko normalności środków zamiast normalności obserwacji, więc centralne twierdzenie o granicy może wystarczyć. Ponadto: chociaż normalność jest często założeniem, że należy sprawdzić „oficjalnie”, wiele testów okazało się dość niewrażliwych na niespełnienie tego założenia.

Nick Sabbe
źródło
2

Podoba mi się wersja z biblioteki „R” „car”, ponieważ zapewnia ona nie tylko centralną tendencję, ale także przedziały ufności. Daje wizualne wskazówki, które pomagają potwierdzić, czy zachowanie danych jest zgodne z hipotetycznym rozkładem.

library(car)

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

niektóre linki:

EngrStudent - Przywróć Monikę
źródło