Provádění t-testů

Testování hypotéz v Pythonu

James Chapman

Curriculum Manager, DataCamp

Dvouvýběrové problémy

  • Porovnání výběrových statistik napříč skupinami proměnné
  • converted_comp je numerická proměnná
  • age_first_code_cut je kategorická proměnná s úrovněmi ("child" a "adult")
  • Jsou uživatelé, kteří programovali poprvé jako děti, lépe odměňováni než ti, kteří začali jako dospělí?
Testování hypotéz v Pythonu

Hypotézy

$H_{0}$: Průměrná odměna (v USD) je stejná pro ty, kteří začali programovat jako děti, i pro ty, kteří začali jako dospělí.

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

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

$H_{A}$: Průměrná odměna (v USD) je vyšší pro ty, kteří začali programovat jako děti, než pro ty, kteří začali jako dospělí.

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

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

Testování hypotéz v Pythonu

Výpočet skupinových souhrnných statistik

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
Testování hypotéz v Pythonu

Testové statistiky

  • Výběrový průměr odhaduje populační průměr
  • $\bar{x}$ – výběrový průměr
  • $\bar{x}_{child}$ – průměrná odměna pro ty, kteří začali programovat jako děti
  • $\bar{x}_{adult}$ – průměrná odměna pro ty, kteří začali programovat jako dospělí
  • $\bar{x}_{child} - \bar{x}_{adult}$ – testová statistika
  • z-skóre – (standardizovaná) testová statistika
Testování hypotéz v Pythonu

Standardizace testové statistiky

$z = \dfrac{\text{výběrová statistika} - \text{populační parametr}}{\text{standardní chyba}}$

$t = \dfrac{\text{rozdíl výběrových statistik} - \text{rozdíl populačních parametrů}}{\text{standardní chyba}}$

$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}})}$

Testování hypotéz v Pythonu

Standardní chyba

$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$ je směrodatná odchylka proměnné

$n$ je velikost výběru (počet pozorování/řádků ve výběru)

Testování hypotéz v Pythonu

Za předpokladu platnosti nulové hypotézy

$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}}}}}$

Testování hypotéz v Pythonu

Výpočty za předpokladu platnosti nulové hypotézy

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
Testování hypotéz v Pythonu

Výpočet testové statistiky

$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
Testování hypotéz v Pythonu

Pojďme si procvičit!

Testování hypotéz v Pythonu

Preparing Video For Download...