Jak utworzyć i zinterpretować wykres qq w r


Wykres QQ , skrót od „kwantyl-kwantyl”, to rodzaj wykresu, którego możemy użyć do określenia, czy zbiór danych potencjalnie pochodzi z rozkładu teoretycznego.

W wielu testach statystycznych zakłada się, że zbiór danych ma rozkład normalny, a do oceny, czy założenie to jest spełnione, często stosuje się wykres QQ.

Chociaż wykres QQ nie jest formalnym testem statystycznym, zapewnia prosty sposób wizualnego sprawdzenia, czy zbiór danych ma rozkład normalny, a jeśli nie, to w jaki sposób naruszone jest to założenie i które punkty danych są potencjalnie przyczyną tego naruszenia.

Możemy utworzyć wykres QQ, wykreślając względem siebie dwa zestawy kwantyli. Jeżeli oba zbiory kwantyli pochodzą z tego samego rozkładu, wówczas punkty na wykresie powinny w przybliżeniu tworzyć prostą ukośną linię.

Przykład wykresu QQ

Kwantyle reprezentują punkty w zbiorze danych, poniżej których znajduje się określona część danych. Na przykład kwantyl 0,9 reprezentuje punkt, poniżej którego znajduje się 90% danych. Kwantyl 0,5 reprezentuje punkt, poniżej którego znajduje się 50% danych i tak dalej.

Wykresy QQ identyfikują kwantyle próbek danych i porównują je z kwantylami rozkładu teoretycznego. W większości przypadków używany jest rozkład normalny, ale w rzeczywistości wykres QQ można utworzyć dla dowolnego rozkładu teoretycznego.

Jeśli punkty danych leżą wzdłuż prostej linii ukośnej na wykresie QQ, wówczas zbiór danych prawdopodobnie ma rozkład normalny.

Jak utworzyć wykres QQ w R

Możemy łatwo utworzyć wykres QQ, aby sprawdzić, czy zbiór danych ma rozkład normalny, korzystając z wbudowanej funkcji qqnorm() .

Na przykład poniższy kod generuje wektor 100 losowych wartości zgodnych z rozkładem normalnym i tworzy wykres QQ dla tego zbioru danych w celu sprawdzenia, czy rzeczywiście ma on rozkład normalny:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a normal distribution
data <- rnorm(100)

#create QQ plot to compare this dataset to a theoretical normal distribution
qqnorm(data)

Aby jeszcze łatwiej było sprawdzić, czy dane układają się po linii prostej, możemy użyć funkcji qqline() :

 #create QQ plot
qqnorm(data)

#add straight diagonal line to plot
qqline(data)

Widzimy, że punkty danych w pobliżu ogonów nie pokrywają się dokładnie z linią prostą, ale w większości te przykładowe dane wydają się mieć rozkład normalny (tak jak powinno być, ponieważ poprosiliśmy R o wygenerowanie danych z rozkładu normalnego ). ).

Zamiast tego rozważ poniższy kod, który generuje wektor 100 losowych wartości zgodnych z rozkładem gamma i tworzy wykres QQ dla tych danych, aby sprawdzić, czy mają one rozkład normalny:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a gamma distribution
data <- rgamma(100, 1)

#create QQ plot to compare this dataset to a theoretical normal distribution
qqnorm(data)
qqline(data)

Na tym wykresie QQ widzimy wyraźne odchylenie od linii prostej, co wskazuje, że ten zestaw danych prawdopodobnie nie ma rozkładu normalnego.

Rozważmy inny fragment kodu, który generuje wektor 100 losowych wartości zgodny z rozkładem Chi-kwadrat z 5 stopniami swobody i tworzy wykres QQ dla tych danych, aby sprawdzić, czy mają one rozkład normalny:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a Chi-Square distribution
data <- rchisq(100, 5)

#create QQ plot to compare this dataset to a theoretical normal distribution
qqnorm(data)
qqline(data)

Po raz kolejny widzimy, że ten zbiór danych nie wydaje się mieć rozkładu normalnego, szczególnie w pobliżu ogonów.

Zmień estetykę wykresu QQ w R

Możemy zmienić pewną estetykę wykresu QQ w R, w tym tytuł, etykiety osi, kolory punktów danych, kolor linii i szerokość linii.

Poniższy kod zmienia tytuły, etykiety osi i kolor punktów wykresu:

 #make this example reproducible
set.seed(11)

#generate vector of 100 values that follows a normal distribution
data <- rnorm(100)

#create QQ plot
qqnorm(data, main = 'QQ Plot for Normality', xlab = 'Theoretical Dist',
       ylab = 'Sample dist', col = 'steelblue')

Następnie poniższy kod dodaje do wykresu prostą ukośną linię w kolorze czerwonym, szerokość linii 2 (lwd = 2, wartość domyślna to 1) i linię przerywaną (lty = 2, wartość domyślna to 1):

 qqline(data, col = 'red', lwd = 2, lty = 2)

Uwagi techniczne

Należy pamiętać, że wykres QQ to po prostu sposób wizualnego sprawdzenia, czy zbiór danych ma rozkład teoretyczny. Aby formalnie sprawdzić, czy zbiór danych ma określony rozkład, można przeprowadzić następujące testy (zakładając, że porównujesz zbiór danych z rozkładem normalnym):

Test Andersona-Darlinga
Test Shapiro-Wilka
Test Kołmogorowa-Smirnowa

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *