Przeprowadzanie testów t

Testowanie hipotez w Pythonie

James Chapman

Curriculum Manager, DataCamp

Problemy dwóch prób

  • Porównywanie statystyk próby między grupami zmiennej
  • converted_comp to zmienna numeryczna
  • age_first_code_cut to zmienna kategoryczna z poziomami ("child" i "adult")
  • Czy użytkownicy, którzy zaczęli programować jako dzieci, zarabiają więcej niż ci, którzy zaczęli jako dorośli?
Testowanie hipotez w Pythonie

Hipotezy

$H_{0}$: Średnie wynagrodzenie (w USD) jest takie samo dla osób, które zaczęły programować jako dzieci, i dla tych, które zaczęły jako dorośli.

$H_{0}$: $\mu_{child} = \mu_{adult}$

$H_{0}$: $\mu_{child} - \mu_{adult} = 0$

$H_{A}$: Średnie wynagrodzenie (w USD) jest wyższe dla osób, które zaczęły programować jako dzieci, niż dla tych, które zaczęły jako dorośli.

$H_{A}$: $\mu_{child} > \mu_{adult}$

$H_{A}$: $\mu_{child} - \mu_{adult} > 0$

Testowanie hipotez w Pythonie

Obliczanie statystyk grupowych

stack_overflow.groupby('age_first_code_cut')['converted_comp'].mean()
age_first_code_cut
adult    111313.311047
child    132419.570621
Name: converted_comp, dtype: float64
Testowanie hipotez w Pythonie

Statystyki testowe

  • Średnia próby jest estymatorem średniej populacji
  • $\bar{x}$ – średnia próby
  • $\bar{x}_{child}$ – średnie wynagrodzenie dla osób, które zaczęły programować jako dzieci
  • $\bar{x}_{adult}$ – średnie wynagrodzenie dla osób, które zaczęły programować jako dorośli
  • $\bar{x}_{child} - \bar{x}_{adult}$ – statystyka testowa
  • Wynik z – (ustandaryzowana) statystyka testowa
Testowanie hipotez w Pythonie

Standaryzacja statystyki testowej

$z = \dfrac{\text{statystyka próby} - \text{parametr populacji}}{\text{błąd standardowy}}$

$t = \dfrac{\text{różnica statystyk próby} - \text{różnica parametrów populacji}}{\text{błąd standardowy}}$

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) - (\mu_{\text{child}} - \mu_{\text{adult}})}{SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}$

Testowanie hipotez w Pythonie

Błąd standardowy

$SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) \approx \sqrt{\dfrac{s_{\text{child}}^2}{n_{\text{child}}} + \dfrac{s_{\text{adult}}^2}{n_{\text{adult}}}}$

$s$ to odchylenie standardowe zmiennej

$n$ to liczebność próby (liczba obserwacji/wierszy w próbie)

Testowanie hipotez w Pythonie

Zakładając prawdziwość hipotezy zerowej

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) - (\mu_{\text{child}} - \mu_{\text{adult}})}{SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}$

$H_{0}$: $\mu_{\text{child}} - \mu_{\text{adult}} = 0$    $\rightarrow$     $t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) }{SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}$

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}{\sqrt{\dfrac{s_{\text{child}}^2}{n_{\text{child}}} + \dfrac{s_{\text{adult}}^2}{n_{\text{adult}}}}}$

Testowanie hipotez w Pythonie

Obliczenia przy założeniu prawdziwości hipotezy zerowej

xbar = stack_overflow.groupby('age_first_code_cut')['converted_comp'].mean()
adult    111313.311047
child    132419.570621
Name: converted_comp, dtype: float64 age_first_code_cut
s = stack_overflow.groupby('age_first_code_cut')['converted_comp'].std()
adult    271546.521729
child    255585.240115
Name: converted_comp, dtype: float64 age_first_code_cut
n = stack_overflow.groupby('age_first_code_cut')['converted_comp'].count()
adult    1376
child     885
Name: converted_comp, dtype: int64
Testowanie hipotez w Pythonie

Obliczanie statystyki testowej

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}{\sqrt{\dfrac{s_{\text{child}}^2}{n_{\text{child}}} + \dfrac{s_{\text{adult}}^2}{n_{\text{adult}}}}}$

import numpy as np
numerator = xbar_child - xbar_adult
denominator = np.sqrt(s_child ** 2 / n_child + s_adult ** 2 / n_adult)
t_stat = numerator / denominator
1.8699313316221844
Testowanie hipotez w Pythonie

Czas na ćwiczenia!

Testowanie hipotez w Pythonie

Preparing Video For Download...