Uji proporsi satu sampel

Pengujian Hipotesis dengan Python

James Chapman

Curriculum Manager, DataCamp

Ringkasan Bab 1

  • Apakah klaim tentang proporsi populasi yang tidak diketahui masuk akal?

 

  1. Galat baku statistik sampel dari distribusi bootstrap
  2. Hitung statistik uji terdistor
  3. Hitung p-value
  4. Tentukan hipotesis mana yang paling masuk akal

 

  • Sekarang, hitung statistik uji tanpa distribusi bootstrap
Pengujian Hipotesis dengan Python

Statistik uji terdistor untuk proporsi

$p$: proporsi populasi (parameter populasi tidak diketahui)

$\hat{p}$: proporsi sampel (statistik sampel)

$p_{0}$: proporsi populasi yang dihipotesiskan

$$ z = \frac{\hat{p} - \text{mean}(\hat{p})}{\text{SE}(\hat{p})} = \frac{\hat{p} - p}{\text{SE}(\hat{p})} $$

Dengan asumsi $H_{0}$ benar, $p = p_{0}$, sehingga

$$ z = \dfrac{\hat{p} - p_{0}}{\text{SE}(\hat{p})} $$

Pengujian Hipotesis dengan Python

Menyederhanakan perhitungan galat baku

$SE_{\hat{p}} = \sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}$ $\rightarrow$ Di bawah $H_0$, $SE_{\hat{p}}$ bergantung pada $p_0$ yang dihipotesiskan dan ukuran sampel $n$

Dengan asumsi $H_{0}$ benar,

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

  • Hanya menggunakan informasi sampel ($\hat{p}$ dan $n$) dan parameter yang dihipotesiskan ($p_{0}$)
Pengujian Hipotesis dengan Python

Mengapa z bukan t?

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

  • $s$ dihitung dari $\bar{x}$
    • $\bar{x}$ mengestimasi mean populasi
    • $s$ mengestimasi simpangan baku populasi
    • Ketidakpastian estimasi parameter meningkat
  • Distribusi t: ekor lebih gemuk daripada normal
  • $\hat{p}$ hanya di pembilang, jadi z-score memadai
Pengujian Hipotesis dengan Python

Kategori usia Stack Overflow

$H_{0}$: Proporsi pengguna Stack Overflow di bawah 30 tahun $=0{.}5$

$H_{A}$: Proporsi pengguna Stack Overflow di bawah 30 tahun $\neq0{.}5$

alpha = 0.01
stack_overflow['age_cat'].value_counts(normalize=True)
Under 30       0.535604
At least 30    0.464396
Name: age_cat, dtype: float64
Pengujian Hipotesis dengan Python

Variabel untuk z

p_hat = (stack_overflow['age_cat'] == 'Under 30').mean()
0.5356037151702786
p_0 = 0.50
n = len(stack_overflow)
2261
Pengujian Hipotesis dengan Python

Menghitung skor z

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

import numpy as np
numerator = p_hat - p_0
denominator = np.sqrt(p_0 * (1 - p_0) / n)
z_score = numerator / denominator
3.385911440783663
Pengujian Hipotesis dengan Python

Menghitung p-value

CDF distribusi normal. Bagian garis kurang dari -2 berwarna merah dan lebih dari 2 berwarna hijau. Uji ekor kiri ("kurang dari"):

from scipy.stats import norm
p_value = norm.cdf(z_score)

Uji ekor kanan ("lebih dari"):

p_value = 1 - norm.cdf(z_score)

Uji dua ekor ("tidak sama dengan"):

p_value = norm.cdf(-z_score) + 
  1 - norm.cdf(z_score)
p_value = 2 * (1 - norm.cdf(z_score))
0.0007094227368100725
p_value <= alpha
True
Pengujian Hipotesis dengan Python

Ayo berlatih!

Pengujian Hipotesis dengan Python

Preparing Video For Download...