Teste neparametrice

Testarea ipotezelor în Python

James Chapman

Curriculum Manager, DataCamp

Teste parametrice

  • Testul z, testul t și ANOVA sunt teste parametrice
  • Presupun o distribuție normală
  • Necesită eșantioane suficient de mari
Testarea ipotezelor în Python

Date mai mici privind voturile republicane

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
Testarea ipotezelor în Python

Rezultate cu pingouin.ttest()

  • 5 perechi nu sunt suficiente pentru condiția de dimensiune a eșantionului la testul t pereche:
  • Cel puțin 30 de perechi de observații în eșantioane.
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
Testarea ipotezelor în Python

Teste neparametrice

  • Testele neparametrice evită ipotezele și condițiile parametrice
  • Multe teste neparametrice utilizează rangurile datelor
x = [1, 15, 3, 10, 6]
from scipy.stats import rankdata
rankdata(x)
array([1., 5., 2., 4., 3.])
Testarea ipotezelor în Python

Teste neparametrice

  • Testele neparametrice sunt mai fiabile decât cele parametrice pentru eșantioane mici și când datele nu sunt distribuite normal
Testarea ipotezelor în Python

Teste neparametrice

  • Testele neparametrice sunt mai fiabile decât cele parametrice pentru eșantioane mici și când datele nu sunt distribuite normal

 

Testul rangurilor semnate Wilcoxon
  • Dezvoltat de Frank Wilcoxon în 1945
  • Unul dintre primele proceduri neparametrice
Testarea ipotezelor în Python

Testul rangurilor semnate Wilcoxon (Pasul 1)

  • Funcționează pe diferențele absolute clasificate dintre perechile de date
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
Testarea ipotezelor în Python

Testul rangurilor semnate Wilcoxon (Pasul 2)

  • Funcționează pe diferențele absolute clasificate dintre perechile de date
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
Testarea ipotezelor în Python

Testul rangurilor semnate Wilcoxon (Pasul 3)

  • Funcționează pe diferențele absolute clasificate dintre perechile de date
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
Testarea ipotezelor în Python

Testul rangurilor semnate Wilcoxon (Pasul 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
  • Incorporează suma rangurilor pentru diferențele negative și pozitive
T_minus = 1 + 4 + 5 + 2 + 3

T_plus = 0
W = np.min([T_minus, T_plus])
0
Testarea ipotezelor în Python

Implementare cu 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

Nu se respinge $H_0$, deoarece 0.03125 > 0.01

Testarea ipotezelor în Python

Să exersăm!

Testarea ipotezelor în Python

Preparing Video For Download...