การทดสอบสัดส่วนแบบกลุ่มตัวอย่างเดียว

Hypothesis Testing in R

Richie Cotton

Data Evangelist at DataCamp

ทบทวนบทที่ 1

  • สัดส่วนประชากรที่ไม่ทราบค่านั้นสอดคล้องกับสมมติฐานหรือไม่?
  • คำนวณค่าความคลาดเคลื่อนมาตรฐานของสถิติตัวอย่างจาก bootstrap distribution
  • นำค่านี้ไปคำนวณสถิติทดสอบแบบ standardized ...
  • แล้วใช้คำนวณ p-value ...
  • เพื่อตัดสินว่าสมมติฐานใดสมเหตุสมผลกว่า
  • ในที่นี้ จะคำนวณสถิติทดสอบโดยไม่ต้องใช้ bootstrap distribution
Hypothesis Testing in R

สถิติทดสอบแบบ standardized สำหรับสัดส่วน

$p$: สัดส่วนประชากร (พารามิเตอร์ประชากรที่ไม่ทราบค่า)

$\hat{p}$: สัดส่วนตัวอย่าง (สถิติตัวอย่าง)

$p_{0}$: สัดส่วนประชากรตามสมมติฐาน

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

เมื่อสมมติว่า $H_{0}$ เป็นจริง จะได้ $p = p_{0}$ ดังนั้น

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

Hypothesis Testing in R

การคำนวณความคลาดเคลื่อนมาตรฐานที่ง่ายขึ้น

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

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

เมื่อสมมติว่า $H_{0}$ เป็นจริง

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

สูตรนี้ใช้เพียงข้อมูลตัวอย่าง ($\hat{p}$ และ $n$) กับพารามิเตอร์ตามสมมติฐาน ($p_{0}$)

Hypothesis Testing in R

ทำไมต้องใช้ z แทน 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$ คำนวณจาก $\bar{x}$ ดังนั้น $\bar{x}$ จึงใช้ประมาณทั้งค่าเฉลี่ยประชากร และ ส่วนเบี่ยงเบนมาตรฐานของประชากร
  • ส่งผลให้เกิดความไม่แน่นอนมากขึ้นในการประมาณพารามิเตอร์ประชากร
  • t-distribution มีหางที่หนากว่าการแจกแจงปกติ
  • ทำให้มีระดับความระมัดระวังเพิ่มขึ้น
  • $\hat{p}$ ปรากฏเฉพาะในตัวเศษ จึงใช้ z-score ได้เลย
Hypothesis Testing in R

หมวดอายุของ Stack Overflow

$H_{0}$: สัดส่วนผู้ใช้ SO ที่อายุต่ำกว่า 30 ปีเท่ากับ 0.5

$H_{A}$: สัดส่วนผู้ใช้ SO ที่อายุต่ำกว่า 30 ปีไม่เท่ากับ 0.5

alpha <- 0.01
stack_overflow %>% 
  count(age_cat)
# A tibble: 2 x 2
  age_cat         n
  <chr>       <int>
1 At least 30  1050
2 Under 30     1216
Hypothesis Testing in R

ตัวแปรสำหรับคำนวณ z

p_hat <- stack_overflow %>%
  summarize(prop_under_30 = mean(age_cat == "Under 30")) %>%
  pull(prop_under_30)
0.5366
p_0 <- 0.50
n <- nrow(stack_overflow)
2266
Hypothesis Testing in R

การคำนวณ z-score

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

numerator <- p_hat - p_0
denominator <- sqrt(p_0 * (1 - p_0) / n)
z_score <- numerator / denominator
3.487
Hypothesis Testing in R

การคำนวณ p-value

CDF ของการแจกแจงปกติ ส่วนของเส้นที่น้อยกว่า -2 แสดงสีแดง และส่วนที่มากกว่า 2 แสดงสีเขียว หางซ้าย ("น้อยกว่า")

p_value <- pnorm(z_score) 

หางขวา ("มากกว่า")

p_value <- pnorm(z_score, lower.tail = FALSE)

สองหาง ("ไม่เท่ากับ")

p_value <- pnorm(z_score) + 
  pnorm(z_score, lower.tail = FALSE)
p_value <- 2 * pnorm(z_score)
0.000244
p_value <= alpha
TRUE
Hypothesis Testing in R

มาฝึกกันเถอะ!

Hypothesis Testing in R

Preparing Video For Download...