Przejdź do treści

Testowanie rozkładu, hipotez i regresja logistyczna

Dzisiaj trochę nadrabiana statystyki za pomogą R. Zobaczymy jak przetestować czy rozkład jest normalny, jak przetestować hipotezy i jak zbudować prosty model.

Za dane przykładowe posłużą nam dane o wzroście i wadze w podziale na płeć. Wczytujemy dane – użyjemy zestawu danych z Kaggle (ściągnąłem je wcześniej na dysk):

Dziwne te liczby: wzrost w okolicach 70? Waga blisko 200? Dane są amerykańskie, więc wzrost mamy w calach, a wagę w funtach. Nie musimy, ale możemy przeliczyć to na jednostki metryczne – będzie nam łatwiej interpretować wyniki.

Teraz wygląda to normlanie. Zobaczmy kilka rozkładów, od razu w podziale na płeć.

Zaleźność wagi od wzrostu:

Rozkład wagi:

Rozkład wzrostu:

Zobaczmy teraz jakie właściwości mają te rozkłady. Jaka jest średnia, jakie są kwartyle, jakie jest odchylenie standardowe

Feature Param Female Male
Height Minimum 137.8 148.4
Height Mean 161.8 175.3
Height Median 161.9 175.3
Height Maximum 186.4 200.7
Height Std. dev. 6.8 7.3
Weight Minimum 29.3 51.2
Weight Mean 61.6 84.8
Weight Median 61.7 84.8
Weight Maximum 91.7 122.5
Weight Std. dev. 8.6 9.0

Ciekawe nie ma wiekich ciekawostek, ale warto zwrócić uwagę na dwie liczby, które za chwilę będziemy porównywać (nie wprost) – średni wzrost kobiet to około 162 cm, a mężczyzn – 175 cm.

Test normalności

Widać to co prawda od razu, ale sprawdźmy czy rozkład wzrostu i wagi jest rozkładem normalnym. Przy zastosowaniu wielu metod statystycznych ważne jest, aby zbiór był zbiorem podlegającym rozkładowi normalnemu. Szczegóły w podręcznikach ;)

Hipotezy zerowa oraz alternatywna są następującej postaci:

  • H0: Rozkład badanej cechy jest rozkładem normalnym.
  • H1: Rozkład badanej cechy nie jest rozkładem normalnym.

Test Shapiro-Wilka

To jeden z najbardziej popularnych testów i najczęściej wykorzystywanych. Funkcja shapiro.test() z pakietu stats (wbudowany w R, nie trzeba go instalować) pozwala na przetestowania od 3 do 5000 próbek. Na szczęście mamy po 5000 pomiarów dla każdej z płci.

Gender shapiro_Height shapiro_Weight
Female 0.9022 0.9134
Male 0.1402 0.3828

Za chwilę omówimy wyniki, ale prosta znajomość zasad testowania hipotez już pozwala rozpoznać odpowiedź.

Test Kołmogorowa-Smirnowa

Drugi test jest również często spotykany, nad testem Shapiro-Wilka ma tą przewagę, że pozwala porównać dwa rozkłady (czyli sprawdzić czy dana próbka ma rozkład jaki znamy). Tutaj jednak wcześniej potrzebne jest skalowanie zmiennych, bez którego wartość zwracana w $p.value funkcji ks.test() jest równa zero (mimo że wynik wyświetlany na ekranie jest taki sam).

Gender ks_Height ks_Weight
Female 0.9127 0.9525
Male 0.6088 0.9834

We wszystkich przypadkach (dla każdej płci, obu cech i w obu testach) wartość p-value jest większa od naszego (standardowo zakładanego) przedziału ufności 0.05, zatem nie możemy odrzucić hipotezy H0, czyli – mamy do czynienia z rozkładami normalnymi.

Więcej (z opisem i matematyką za nimi stojącą) o testach na normalność rozkładu znajdziecie na blogu SmarterPoland.pl.

Czy mężczyźni są wyżsi od kobiet?

To wiemy z doświadczenia, z powyższych wykresów z rozkładem oraz tabelki z podstawowymi liczbami opisującymi statystykę: średnie wzrostu są różne. Ale jak to zbadać w R? Użyjemy testu t-Studenta. Hipotezy tym razem wyglądają następująco:

  • H0: kobiety i mężczyźni są średnio tego samego wzrostu
  • H1: średni wzrost różni się pomiędzy płciami

Do testu użyjemy funkcji t.test():

p-value jest dużo mniejsze od 0.05, zatem na 95% możemy odrzucić H0 i przyznać, że średni wzrost różni się między płciami.

Ale czy kobiety są wyższe czy niższe? Ponownie użyjemy tego samego testu z jednym dodatkowym parametrem alternative. Tutaj hipotezy mamy następujące:

  • H0: mężczyźni są wyższi od kobiet
  • H1: mężczyźni nie są wyżsi od kobiet

Zatem porównujemy czy pierwszy zbiór (wzrost mężczyzn) ma średnią większą od średniej drugiego zbioru (wzrost kobiet):

p-value < 0.05 więc na 95% nie możemy odrzucić H0 co oznacza, że średnio mężczyźni są wyżsi od kobiet.

Model – regresja logistyczna

Czy na podstawie wzrostu i wagi możemy określić płeć? Spróbujmy zbudować stosowny, prosty, model.

Do wyboru mamy wynik będący jedną z dwóch płci, zatem zastosujemy regresję logistyczną.

W pierwszym kroku jednak podzielmy dane na uczące train i testowe test na których zbadany dokładność działania modelu.

Teraz zbudujemy prosty model. Odpowiedź musi być factorem:

Mając model możemy dokonać predykcji na danych testowych:

Sprwadźmy wynik:

I skuteczność dopasowania:

W 92.2 procentach model przewidział trafnie wynik.

Model – las losowy

Spróbujmy z innym modelem – na przykład z lasem losowym.

Wynik:

W tym przypadku poprawdność przewidywań to 91.1 procent, a zatem gorzej niż regresja logistyczna.

Nie zawsze więc wielki kombajn (jakim są lasy losowe) jest nam potrzebny.

5 komentarzy do “Testowanie rozkładu, hipotez i regresja logistyczna”

  1. Panie Łukaszu,
    niepoprawnie odczytuje Pan wyniki testów statystycznych.
    1. Przy testach na normalność rozkładu „zatem nie możemy odrzucić hipotezy alternatywnej H1” – nie jest to prawda. W tamtym wypadku „nie możemy odrzucić hipotezy zerowej H0”
    2. Ma Pan również złe założenia przy teście t studenta z „greater = TRUE”. Tutaj hipoteza zerowa zostaje ta sama, zmienia się tylko hipoteza alternatywna (jedno większe niż drugie).
    3. Nie można „pozostać przy” H0 (co najwyżej można jej nie odrzucić)
    Pozdrawiam,
    DK

    1. Dzięki za komentarz. W 1. i 3. to faktycznie prawda – poprawiłem w tekście.
      Co do 2 – nie bardzo rozumiem? Jak powinny zatem wyglądać te hipotezy?

      (tak, ze statystyki zawsze byłem cieniasem ;))

  2. > Ad2. Powinno to wyglądać mniej więcej tak:
    H0: kobiety i mężczyźni są średnio tego samego wzrostu
    H1: mężczyźni są średnio wyżsi od kobiet

    > „p-value < 0.05 więc na 95% nie możemy odrzucić H0 co oznacza, że średnio mężczyźni są wyżsi od kobiet."
    Zamiast tego można (powinno się) napisać "p-value Nie powinno się też mówić, że na „95%” odrzucamy coś. (Co to znaczy!?).

  3. Ucięło mi część komentarza:

    – „p-value < 0.05 więc na 95% nie możemy odrzucić H0 co oznacza, że średnio mężczyźni są wyżsi od kobiet."
    Zamiast tego można (powinno się) napisać "p-value < 0.05 więc odrzucamy H0 i przyjmujemy HA co oznacza, że średnio mężczyźni są wyżsi od kobiet."

    – Nie powinno się też mówić, że na „95%” odrzucamy coś. (Co to znaczy!?)

  4. Witam,
    Zgadzam się całkowicie z dk, zawsze odrzucamy H0 na korzyść HA, gdy p-value < 0.05. Warto jeszcze dodać, że w H0 w zasadzie zawsze mamy znak równości i nie możemy zakładać czegoś innego.
    Natomiast taka rzecz jeszcze przyszła mi do głowy: skoro porównujemy dwie tylko grupy i test t-Studenta wykazał między nimi różnice statystycznie istotne, to nie potrzebujemy już dodatkowego testowania typu „która płeć jest tą wyższą”. Skoro są tylko dwie i się różnią, to wystarczy spojrzeć na średnie arytmetyczne i już to wiemy. Oczywiście dla udzielenia szczegółowej odpowiedzi profesjonalnej jest mieć HA jednostronną, czyli „większe” lub „mniejsze” niż dwustronną, czyli „różne”.

Skomentuj Łukasz Anuluj pisanie odpowiedzi

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