기본 용어:
Hypothesis tests(=significance tests):확인된 효과가 뽀록으로 인한건지, 레알 효과 있는건지 테스트, 가설검증
Null hypothesis:뽀록때문이다! 라는 가설
Alternative hypothesis:뽀록이 아니다!라는 가설(대개 실험자가 증명하고 싶은 가설)
One-way test:뽀록이 한방향으로?
Two-way test:뽀록을 양방향으로 ?
가설검증이 필요한 이유:
예를 들어, 가격 A, B중 B가 더 순이익이 더 클것이라는 것을 입증하는 데에 있어서
"그냥 A/B testing 돌려서 B가 더 순이익이 큰 것을 확인하면 되지 않느냐?" 라는 물음을 하는 데에 배경에는
인간은 자연적으로 우연히 일어나는 행동의 범위를 과소평가하는 경향이 있다.
예를 들어 extreme events는 예상할 수 있었던 일이라고 생각하는 것처럼, 혹은 우연히 일어난 일을 유의미한 패턴을 갖고 있어 나온 결과라고 잘못 해석하는 경향이 있다.
즉, 가설검증은 이러한 우연히 발생한 것에 대한 잘못된 해석으로 바보짓을 하는 것을 막기 위함이다.
랜덤에 관한 오해, 직관적인 예
예를 들어 친구에게 동전 50개를 던졌다고 치고 앞/뒤 수열을 길이가 50으로 적어보라고 요청한다. (FAKE)
그리고 실제로 50번을 던진 결과를 적으라고 요청한다. (REAL)
이 때 둘 중 무엇이 REAL이고 FAKE인지 알아차리기가 쉽다.
왜냐하면 연속적으로 앞, 연속적으로 뒤가 나오는 경향이 FAKE보다 REAL이 더 잦기 때문
즉, 우리가 랜덤으로 50개를 적을 때, 랜덤처럼 보이려고 어느정도 연속적인 앞을 적고나서는 (3,4번 적고나서는)
뒤를 적으려고 한다. "랜덤처럼 보이려고"
그러한 경향을 반대로 생각하면
A폰트로 제목 썻을 때랑 B폰트로 제목 썻을 때 클릭율이 A가 10% 더 높은 상황을 생각하자면
(즉 동전 앞이 6,7번 연속으로 나온 상황을 보자면)
이건 우연이 아니라 A가 정말 더 낫다고 생각한다.
(즉 동전이 not fair이고 앞이 더 나오는 경향이 있을 것이라 생각한다.)
가설검증은 기본적으로 다음 로직을 따른다.
"인간은 unusual이지만 우연히 일어난 일에 대해(인간은 우연인지 모르는) 뭔가 의미있다고 해석하려는 경향이 있으니,
우연이 만들어 낼 수 있는 것 보다 더 차이를 만들어 냈는지 테스트하겠다."
따라서, null hypothesis는 treatments가 기본적으로 동일한 효과를 갖고 둘의 차이는 우연이다 라는 형태로 가정을 갖고 간다.
예를 들면 "B가 A보다 더 크다, 더 낫다" 형태는 One-way(or one-sided, one-tailed)
"B랑 A랑 다르다" 형태는 two-way(or two-sided, two-tailed)
실생활 예로,
"영문과 학생이 토익 성적이 더 높다"->one-way
"남자랑 여자는 토익 성적 차이가 존재한다"->two-way
"여자가 남자보다 토익 성적이 더 높다"->one-way
Permutation Test 방식
예를 들어 웹사이트 디자인을 A방식으로 했을 때, B방식으로 했을 때,
B방식일 때가 A방식일 때 보다 평균 체류시간이 36초 더 높았다고 하자. (Observed difference)
(B방식일 때 samples개수가 21, A방식일 때 samples개수가 15)
이 때, 총 36개의 samples을 섞어가지고 21개를 비복원추출로 뽑아서 B라고 relabel, 남은 15개를 A라고 relabel
그리고 B에서의 평균 체류시간, A에서의 평균 체류시간의 차이를 계산한다.
이 relabel부터 평균 체류시간 차이계산을 약 1000번 시뮬레이션 돌린다.
그러면 평균 체류시간 차이의 frequency distribution을 그릴 수 있고,
그 때 Observed difference보다 더 차이를 보인 simulation의 개수가 적으면 statistically significant, 많으면 not.
(즉 Observed difference보다 더 큰 차이를 보인 simulation의 개수가 전체 1000개 대비 5%이하면 B방식이 A방식보다 더 낫다고 통계적으로 유의함을 알 수 있다.)
Permutation Test방식의 종류(Random, Exhaustive, Bootstrap)
위의 예(예에 쓰인 방식을 Random permutation test or Randomization test라 함)에서
"samples을 섞어가지고 21개를 비복원추출로 뽑아서 B라고...남은 15개를 A라고..."
이 부분에서 B 21개, A 15개 주는 "모든 경우의 수"를 다 simulation해보는 것을 "Exhaustive permutation test"라 하고
이 부분에서 "비복원추출"을 "복원추출"로 바꿔버리면 "Bootstrap permutation test"라 한다.
즉, 복원추출로 21개의 B를 만들고 복원추출로 15개의 A를 만들고 하는 방식으로 subject들이 무슨 label로 relabel될 지도 random이지만 어떤 subject들이 쓰일 지도 random인 상황이다.
Exhaustive permutation test를 exact test라고도 함, 왜냐하면 test statistic이 n에 대한 근삿값을 활용하는 것이 아니기 때문
이러한 Permutation test방식의 장점은
-easy to code, interpret, explain
-공식위주의 접근보다 나은 점은 오용하여 결과낼 가능성이 적고 data가 numeric/binary, 정규분포, sample size제한 등의 가정들을 요구하지 않는다는 점이다.