통계적으로 유의한가요?
Data and Decision 데이터를 사용해서 비즈니스 결정을 내리는 방법에 대한 수업이었다. 정규분포, 샘플링, Z 스코어부터 시작하여 가설 검증, 회귀분석, 의사결정 트리에 대해서 배웠다. 대학교에서 배우는 통계 기초에 가까운 느낌이었는데 반절은 이론이었고, 반절은 R 코드를 짜서 데이터를 직접 분석해보는 것이었다. (근데 R 아직도 쓰나요..?)
그 중에서도 나한테 가장 유용했던 부분은 가설 검증(hypothesis testing)이었다. 새로운 시안을 A/B 테스트 했을 때 이게 더 유용하다는 것은 어떻게 판단할 수 있을까? 클릭률(CTR)의 차이가 통계적으로 유의한가?
가설 검증은 4 단계를 거쳐서 진행된다.
1. 가설을 만든다.
귀무가설 (H₀): 차이는 우연하게 발생한 것이다. (random chance)
대립가설 (H₁): 차이는 실제로 존재하는 차이이다.
2. 귀무가설이 참이라고 가정하고 검정 통계량을 계산한다 (test statistic)
Z-test, t-test, Chi-square test
3. p-value 계산 후 유의수준과 비교
유의수준은 미리 설정해놓는 것이 좋다 (α = 0.05 또는 0.01)
4. 귀무가설을 기각하거나 (reject H₀) 귀무가설 기각하지 못한다. (fail to reject H₀)
예를 들어, m&m에는 파란색이 몇 개나 들어있을까?
1. 귀무가설을 "파란색의 비중이 24%이다" 라고 세워보자.
2. m&m 5봉지를 뜯어서 파란색의 개수를 셌다.
mean = 0.226, standard deviation = 0.03
z = (표본평균 − 가설 평균) ÷ (표준편차 / √표본크기) = (0.226 - 0.24) ÷ (0.03 / √5) = -1.04
3. 이 때 p-value는 0.30가 되어 유의하지 않다.
4. 따라서 귀무가설은 기각하지 못한다.
A/B 테스트 할 때도 동일하게 가설 검증을 할 수 있다.
1. 귀무 가설을 "A의 평균이 B의 평균과 같다" 라고 세우자.
2. 각각의
A의 평균 = 54.5, SD = 3.5, n = 211
B의 평균 = 55.1, SD = 2.7, n = 107
z = (54.5 - 55.1) / √(3.5^2/211 + 2.7^2/107) = -1.7
3. 이 때 p-value는 0.09로 유의하지 않다.
4. 따라서 귀무가설은 기각하지 못한다.
그런데 통계 분석을 많이 돌릴수록 항상 좋은 결과가 나올까? 그렇지는 않다.
Type I error (제1종 오류): 실제로는 차이가 없는데 귀무가설을 잘못 기각하는 경우 (false positive)
Type II error (제2종 오류): 실제로는 차이가 있는데 귀무가설을 기각하지 못하는 경우 (false negative)
특히 통계 테스트를 많이 반복할수록 Type I error가 발생할 확률이 커진다. 예를 들어 유의수준이 α = 0.05라면, 실제 차이가 없어도 약 5% 확률로 우연히 유의한 결과가 나올 수 있다. 따라서 무작정 많은 가설 검정을 수행하면 우연히 유의한 결과가 나타날 가능성이 커지기 때문에, 통계 분석에서는 가설을 미리 설정하고 검정을 수행하는 것이 중요하다.
그 외에도 흥미로운 주제들이 몇 가지 더 있었다.
새로운 정보가 생겼을 때 어떻게 반영할 수 있을까? 베이즈 룰 (Bayesian Statistics)을 사용하면 된다. 예를 들어 바다에 가서 상어에 잡아먹힐 확률이 얼마나 될까? 매우매우 작을 것이다. 하지만 상어 지느러미를 봤다면 상어에 잡아먹힐 확률은 달라진다.
P(상어 잡아먹힘) = 0.001
P(지느러미 봄 | 상어 잡아먹힘) = 0.9
P(지느러미 봄) = 0.05 라고 가정했을 때
P(상어 잡아먹힘 | 지느러미 봄) = 0.9 * 0.001 / 0.05 = 0.018 이 된다.
Monte Carlo Simulation은 미래의 불확실한 결과나 위험을 예측하기 위해 난수를 반복적으로 생성해 시뮬레이션을 수행하는 방법이다. 기본 아이디어는 다음과 같다.
결과에 영향을 주는 변수들을 확률분포로 설정한다.
그 분포에서 무작위 값(random numbers)을 뽑아 그 값으로 한 번의 결과를 계산한다.
이 과정을 수천 번, 수만 번 반복하여 가능한 결과들의 분포(probability distribution)를 본다.
예를 들어 투자 수익률을 예측할 때
수익률 평균 = 8%
변동성 = 15%
라고 가정하면 Monte Carlo는 수익률을 10,000번 랜덤으로 생성하여 각 경우의 투자 결과를 계산한다. 그 결과 평균 수익, 손실 확률, 최악의 시나리오 같은 미래 리스크 분포를 볼 수 있다.
흥미로웠던 것은 시험이나 과제에서 AI 사용이 가능한 수업이었다. 그러나 데이터가 온전하지 않거나, 사람의 의사결정이 많이 필요한 질문들이어서 AI가 풀기 쉽지 않은 과제들이었다. A/B 테스트를 했는데 통계적으로 유의하지 않다고 결과가 나왔다. 이 때 어떻게 할 것인가? A/B 테스트를 또 돌려볼것인가 아니면 그래도 새로운 시안으로 바꿀것인가? 이러한 비즈니스 결정은 사람이 내려야 한다.