Testy nieparametryczne

Testowanie hipotez w Pythonie

James Chapman

Curriculum Manager, DataCamp

Testy parametryczne

  • Test z, t i ANOVA to testy parametryczne
  • Zakładają rozkład normalny
  • Wymagają odpowiednio dużych prób
Testowanie hipotez w Pythonie

Mniejszy zbiór danych wyników republikańskich

print(repub_votes_small)
            state      county  repub_percent_08  repub_percent_12
80          Texas   Red River         68.507522         69.944817
84          Texas      Walker         60.707197         64.971903
33       Kentucky      Powell         57.059533         61.727293
81          Texas  Schleicher         74.386503         77.384464
93  West Virginia      Morgan         60.857614         64.068711
Testowanie hipotez w Pythonie

Wyniki z pingouin.ttest()

  • 5 par nie spełnia warunku liczebności próby dla sparowanego testu t:
  • Co najmniej 30 par obserwacji w próbach.
alpha = 0.01

import pingouin pingouin.ttest(x=repub_votes_potus_08_12_small['repub_percent_08'], y=repub_votes_potus_08_12_small['repub_percent_12'], paired=True, alternative="less")
               T  dof alternative     p-val          CI95%   cohen-d    BF10     power
T-test -5.875753    4        less  0.002096  [-inf, -2.11]  0.500068  26.468  0.239034
Testowanie hipotez w Pythonie

Testy nieparametryczne

  • Testy nieparametryczne nie wymagają założeń parametrycznych
  • Wiele z nich wykorzystuje rangi danych
x = [1, 15, 3, 10, 6]
from scipy.stats import rankdata
rankdata(x)
array([1., 5., 2., 4., 3.])
Testowanie hipotez w Pythonie

Testy nieparametryczne

  • Testy nieparametryczne są bardziej niezawodne niż parametryczne przy małych próbach i gdy dane nie mają rozkładu normalnego
Testowanie hipotez w Pythonie

Testy nieparametryczne

  • Testy nieparametryczne są bardziej niezawodne niż parametryczne przy małych próbach i gdy dane nie mają rozkładu normalnego

 

Test rang ze znakiem Wilcoxona
  • Opracowany przez Franka Wilcoxona w 1945 r.
  • Jedna z pierwszych procedur nieparametrycznych
Testowanie hipotez w Pythonie

Test rang ze znakiem Wilcoxona (krok 1)

  • Działa na rangach wartości bezwzględnych różnic między parami
repub_votes_small['diff'] = repub_votes_small['repub_percent_08'] -
                            repub_votes_small['repub_percent_12']
print(repub_votes_small)
            state      county  repub_percent_08  repub_percent_12      diff
80          Texas   Red River         68.507522         69.944817 -1.437295
84          Texas      Walker         60.707197         64.971903 -4.264705
33       Kentucky      Powell         57.059533         61.727293 -4.667760
81          Texas  Schleicher         74.386503         77.384464 -2.997961
93  West Virginia      Morgan         60.857614         64.068711 -3.211097
Testowanie hipotez w Pythonie

Test rang ze znakiem Wilcoxona (krok 2)

  • Działa na rangach wartości bezwzględnych różnic między parami
repub_votes_small['abs_diff'] = repub_votes_small['diff'].abs()
print(repub_votes_small)
            state      county  repub_percent_08  repub_percent_12      diff  abs_diff
80          Texas   Red River         68.507522         69.944817 -1.437295  1.437295
84          Texas      Walker         60.707197         64.971903 -4.264705  4.264705
33       Kentucky      Powell         57.059533         61.727293 -4.667760  4.667760
81          Texas  Schleicher         74.386503         77.384464 -2.997961  2.997961
93  West Virginia      Morgan         60.857614         64.068711 -3.211097  3.211097
Testowanie hipotez w Pythonie

Test rang ze znakiem Wilcoxona (krok 3)

  • Działa na rangach wartości bezwzględnych różnic między parami
from scipy.stats import rankdata
repub_votes_small['rank_abs_diff'] = rankdata(repub_votes_small['abs_diff'])
print(repub_votes_small)
            state      county  repub_percent_08  repub_percent_12      diff  abs_diff  rank_abs_diff
80          Texas   Red River         68.507522         69.944817 -1.437295  1.437295            1.0
84          Texas      Walker         60.707197         64.971903 -4.264705  4.264705            4.0
33       Kentucky      Powell         57.059533         61.727293 -4.667760  4.667760            5.0
81          Texas  Schleicher         74.386503         77.384464 -2.997961  2.997961            2.0
93  West Virginia      Morgan         60.857614         64.068711 -3.211097  3.211097            3.0
Testowanie hipotez w Pythonie

Test rang ze znakiem Wilcoxona (krok 4)

            state      county  repub_percent_08  repub_percent_12      diff  abs_diff  rank_abs_diff
80          Texas   Red River         68.507522         69.944817 -1.437295  1.437295            1.0
84          Texas      Walker         60.707197         64.971903 -4.264705  4.264705            4.0
33       Kentucky      Powell         57.059533         61.727293 -4.667760  4.667760            5.0
81          Texas  Schleicher         74.386503         77.384464 -2.997961  2.997961            2.0
93  West Virginia      Morgan         60.857614         64.068711 -3.211097  3.211097            3.0
  • Sumowanie rang dla różnic ujemnych i dodatnich
T_minus = 1 + 4 + 5 + 2 + 3

T_plus = 0
W = np.min([T_minus, T_plus])
0
Testowanie hipotez w Pythonie

Implementacja z pingouin.wilcoxon()

alpha = 0.01
pingouin.wilcoxon(x=repub_votes_potus_08_12_small['repub_percent_08'],
                  y=repub_votes_potus_08_12_small['repub_percent_12'],
                  alternative="less")
          W-val alternative    p-val  RBC  CLES
Wilcoxon    0.0        less  0.03125 -1.0  0.72

Brak podstaw do odrzucenia $H_0$, ponieważ 0.03125 > 0.01

Testowanie hipotez w Pythonie

Czas na ćwiczenia!

Testowanie hipotez w Pythonie

Preparing Video For Download...