가설 검정과 z-점수

R로 하는 가설 검정

Richie Cotton

Data Evangelist at DataCamp

A/B 테스트

  • Electronic Arts(EA)는 비디오 게임 회사입니다.
  • 2013년에 SimCity 5를 출시했습니다.
  • 게임 사전 주문 수를 늘리는 것이 목표였습니다.
  • 다양한 광고 시나리오를 검증하기 위해 A/B 테스트를 활용했습니다.
  • 사용자를 대조 그룹과 처리 그룹으로 분류합니다.

Electronic Arts 건물

1 이미지 출처: "Electronic Arts" by majaX1 CC BY-NC-SA 2.0
R로 하는 가설 검정

쇼핑몰 웹페이지 A/B 테스트

대조

"사전 주문 시 다음 구매에서 $20 할인" 배너가 있는 SimCity 웹페이지

처리

배너가 없는 SimCity 웹페이지

R로 하는 가설 검정

A/B 테스트 결과

  • 처리 그룹(광고 없음)이 대조 그룹(광고 있음)보다 구매 수가 43.4% 더 많았습니다.
  • "광고를 보여주면 매출이 늘어날 것"이라는 직관은 완전히 틀렸습니다.
  • 이 결과는 통계적으로 유의미한 것인가요, 아니면 우연인가요?
  • 이를 판단하려면 EA의 데이터가 필요합니다.
  • Sampling in R과 이 과정의 기법을 함께 활용하면 분석할 수 있습니다.
R로 하는 가설 검정

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…
R로 하는 가설 검정

평균에 대한 가설 설정

가설:

데이터 과학자 모집단의 연평균 보수는 $110,000이다.

점 추정값(표본 통계량):

mean_comp_samp <- mean(stack_overflow$converted_comp)
mean_comp_samp <- stack_overflow %>% 
  summarize(mean_compensation = mean(converted_comp)) %>% 
  pull(mean_compensation)
119574.7
R로 하는 가설 검정

부트스트랩 분포 생성

# Step 3. Repeat steps 1 & 2 many times
so_boot_distn <- replicate(
  n = 5000,
  expr = {
    # Step 1. Resample
    stack_overflow %>%
      slice_sample(prop = 1, replace = TRUE) %>%
      # Step 2. Calculate point estimate
      summarize(mean_compensation = mean(converted_comp)) %>% 
      pull(mean_compensation)
  }
)
1 부트스트랩 분포는 Sampling in R 4장에서 다룹니다
R로 하는 가설 검정

부트스트랩 분포 시각화

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

부트스트랩 분포의 히스토그램 - 종 모양이며 약 110,000에서 140,000 사이에 분포

R로 하는 가설 검정

표준 오차

std_error <- sd(so_boot_distn)
5511.674
R로 하는 가설 검정

z-점수

$\text{표준화 값} = \dfrac{\text{값} - \text{평균}}{\text{표준 편차}}$

$z = \dfrac{\text{표본 통계량} - \text{가설 모수 값}}{\text{표준 오차}}$

$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
R로 하는 가설 검정

가설 검정

  • 1.737171은 높은 값인가요, 낮은 값인가요?
  • 이것이 이 과정의 핵심 목표입니다!
가설 검정의 활용:

표본 통계량이 기대값(또는 "가설값")에 가까운지 먼지를 판단합니다.

R로 하는 가설 검정

표준 정규(z) 분포

표준 정규 분포: 평균이 0이고 표준 편차가 1인 정규 분포.

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

표준 정규 분포 PDF의 밀도 그래프

R로 하는 가설 검정

연습해 봅시다!

R로 하는 가설 검정

Preparing Video For Download...