Непараметричні тести

Тестування гіпотез у Python

James Chapman

Curriculum Manager, DataCamp

Параметричні тести

  • z-тест, t-тест і ANOVA — це параметричні тести
  • Припускають нормальний розподіл
  • Потребують достатньо великої вибірки
Тестування гіпотез у Python

Менший набір голосів за республіканців

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
Тестування гіпотез у Python

Результати з pingouin.ttest()

  • 5 пар — замало, щоб виконати умову обсягу вибірки для парного t-тесту:
  • Щонайменше 30 пар спостережень у вибірках.
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
Тестування гіпотез у Python

Непараметричні тести

  • Непараметричні тести уникають параметричних припущень і умов
  • Багато непараметричних тестів використовують ранги даних
x = [1, 15, 3, 10, 6]
from scipy.stats import rankdata
rankdata(x)
array([1., 5., 2., 4., 3.])
Тестування гіпотез у Python

Непараметричні тести

  • Непараметричні тести надійніші за параметричні для малих вибірок і коли дані не мають нормального розподілу
Тестування гіпотез у Python

Непараметричні тести

  • Непараметричні тести надійніші за параметричні для малих вибірок і коли дані не мають нормального розподілу

 

Критерій Вілкоксона з підписами рангів
  • Розроблений Френком Вілкоксоном у 1945 році
  • Один із перших непараметричних методів
Тестування гіпотез у Python

Критерій Вілкоксона (Крок 1)

  • Працює з ранжованими абсолютними різницями між парами даних
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
Тестування гіпотез у Python

Критерій Вілкоксона (Крок 2)

  • Працює з ранжованими абсолютними різницями між парами даних
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
Тестування гіпотез у Python

Критерій Вілкоксона (Крок 3)

  • Працює з ранжованими абсолютними різницями між парами даних
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
Тестування гіпотез у Python

Критерій Вілкоксона (Крок 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
  • Підсумуйте ранги для від'ємних і додатних різниць
T_minus = 1 + 4 + 5 + 2 + 3

T_plus = 0
W = np.min([T_minus, T_plus])
0
Тестування гіпотез у Python

Реалізація з 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

Не відхиляємо $H_0$, оскільки 0.03125 > 0.01

Тестування гіпотез у Python

Давайте потренуємось!

Тестування гіпотез у Python

Preparing Video For Download...