Kiểm định giả thuyết và z-score

Kiểm định giả thuyết trong R

Richie Cotton

Data Evangelist at DataCamp

A/B testing

  • Electronic Arts (EA) là công ty trò chơi điện tử.
  • Năm 2013, họ phát hành SimCity 5.
  • Mục tiêu: tăng đặt trước.
  • Họ dùng A/B testing để thử các kịch bản quảng cáo.
  • Chia người dùng thành nhóm kiểm soát và nhóm xử lý.

Tòa nhà Electronic Arts

1 Nguồn ảnh: "Electronic Arts" bởi majaX1 CC BY-NC-SA 2.0
Kiểm định giả thuyết trong R

A/B test trang bán lẻ

Nhóm kiểm soát

Trang SimCity với banner "pre-order and get $20 off your next purchase"

Nhóm xử lý

Trang SimCity không có banner

Kiểm định giả thuyết trong R

Kết quả A/B test

  • Nhóm xử lý (không quảng cáo) mua nhiều hơn 43,4% so với nhóm kiểm soát (có quảng cáo).
  • Trực giác "hiển thị quảng cáo sẽ tăng doanh số" là sai.
  • Kết quả này có ý nghĩa thống kê hay chỉ do ngẫu nhiên?
  • Cần dữ liệu của EA để quyết định.
  • Hãy dùng kỹ thuật trong Sampling in R + khóa học này.
Kiểm định giả thuyết trong R

Khảo sát Nhà phát triển Stack Overflow 2020

library(dplyr)
glimpse(stack_overflow)
Rows: 2,261
Columns: 8
$ respondent         <dbl> 36, 47, 69, 125, 147, 152, 166, 170, 187, 196, 221,…
$ age_first_code_cut <chr> "adult", "child", "child", "adult", "adult", "adult…
$ converted_comp     <dbl> 77556, 74970, 594539, 2000000, 37816, 121980, 48644…
$ job_sat            <fct> Slightly satisfied, Very satisfied, Very satisfied,…
$ purple_link        <chr> "Hello, old friend", "Hello, old friend", "Hello, o…
$ age_cat            <chr> "At least 30", "At least 30", "Under 30", "At least…
$ age                <dbl> 34, 53, 25, 41, 28, 30, 28, 26, 43, 23, 24, 35, 37,…
$ hobbyist           <chr> "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "Ye…
Kiểm định giả thuyết trong R

Giả thuyết về trung bình

Một giả thuyết:

Mức thu nhập hằng năm trung bình của toàn bộ data scientist là $110.000.

Ước lượng điểm (thống kê mẫu):

mean_comp_samp <- mean(stack_overflow$converted_comp)
mean_comp_samp <- stack_overflow %>% 
  summarize(mean_compensation = mean(converted_comp)) %>% 
  pull(mean_compensation)
119574.7
Kiểm định giả thuyết trong R

Tạo phân phối bootstrap

# Bước 3. Lặp lại bước 1 & 2 nhiều lần
so_boot_distn <- replicate(
  n = 5000,
  expr = {
    # Bước 1. Lấy mẫu lại
    stack_overflow %>%
      slice_sample(prop = 1, replace = TRUE) %>%
      # Bước 2. Tính ước lượng điểm
      summarize(mean_compensation = mean(converted_comp)) %>% 
      pull(mean_compensation)
  }
)
1 Phân phối bootstrap được dạy ở Chương 4 của Sampling in R
Kiểm định giả thuyết trong R

Trực quan hóa phân phối bootstrap

tibble(resample_mean = so_boot_distn) %>%
  ggplot(aes(resample_mean)) +
  geom_histogram(binwidth = 1000)

Biểu đồ tần suất của phân phối bootstrap - dạng chuông, khoảng 110000 đến 140000

Kiểm định giả thuyết trong R

Sai số chuẩn

std_error <- sd(so_boot_distn)
5511.674
Kiểm định giả thuyết trong R

z-score

$\text{giá trị chuẩn hóa} = \dfrac{\text{giá trị} - \text{trung bình}}{\text{độ lệch chuẩn}}$

$z = \dfrac{\text{thống kê mẫu} - \text{giá trị giả thuyết}}{\text{sai số chuẩn}}$

$z = \dfrac{\$119,574.7 - \$110,000}{\$5511.67} = 1.737$

mean_comp_samp
119574.7
mean_comp_hyp <- 110000
std_error
5511.674
z_score <- (mean_comp_samp - mean_comp_hyp) / std_error
1.737171
Kiểm định giả thuyết trong R

Kiểm định giả thuyết

  • 1.737171 là lớn hay nhỏ?
  • Đây là mục tiêu của khóa học!
Trường hợp dùng kiểm định giả thuyết:

Xác định thống kê mẫu gần hay xa giá trị kỳ vọng (giả thuyết).

Kiểm định giả thuyết trong R

Phân phối chuẩn tắc (z)

Phân phối chuẩn tắc: chuẩn có trung bình 0, độ lệch chuẩn 1.

tibble(x = seq(-4, 4, 0.01)) %>% 
  ggplot(aes(x)) +
  stat_function(fun = dnorm) +
  ylab("PDF(x)")

Biểu đồ mật độ của PDF cho phân phối chuẩn tắc

Kiểm định giả thuyết trong R

¡Vamos a practicar!

Kiểm định giả thuyết trong R

Preparing Video For Download...