교차 분할표에 대한 카이제곱 검정을 연습한다. 아래는 책의 내용을 정리한 자료이다. ([1] p93~95)
전자상거래 홈페이지의 디자인이 A(기존 디자인), B(새 디자인)인 2가지가 있고, A/B 테스트 결과로 상품 구매 및 비구매에 대한 자료가 있다.
기존 A디자인에서 구매율은 9.5%, B디자인에서는 9.6%로 약간 올랐다. 이 차이가 의미가 있을까?
교차분할표는 2가지 정보를 담고 있다. 하나는 디자인, 다른 하나는 구매여부이다. 이때 디자인에 따라서 구매율이 달라지는지에 검정을 ’카이제곱검정’으로 할 수가 있다. 왜 이런 검정을 하는걸까?
우리가 수집하는 데이터는 전체 고객 중 일부 고객만을 대상으로 수집된다. 즉, 다른 고객을 대상으로 A/B 테스트 결과는 달라질 수 있다는 것이다. 이런 테스트를 무한히 많이 반복할 수 있으면, 어느 정도 참값을 계산할 수 있지만, 많은 비용 문제로 한 번의 테스트만 진행한다.
한 번의 A/B 테스트 결과는 오차를 포함하고 있다. 오차를 감안했을 때, 구매율의 차이가 의미 있는지 확인하는 과정이 ‘카이제곱검정’ 이다.
결론은 p-value 가 44.7%로 이 차이가 유의미한 차이로 보기 어렵다는 것이다. 즉, 우연히 그렇게 나올 수 있다는거지.
2가지 방식으로 연습한다. 하나는 손으로 계산하고 다른 하나는 내장된 R 의 함수 chisq 함수를 사용한다. ([2])
\(\chi^2 = \Sigma \frac{(관찰빈도 - 기대빈도)^2}{기대빈도} = \frac{(9500 - 9550)^2}{9550} + \frac{(90500 - 90450)^2}{90450} + \frac{(9600 - 9550)^2}{9550} + \frac{(90400 - 90450)^2}{90450} = 0.5788394\)
## 방법 1
# -------------
# 카이제곱값 계산
Xsq <- (9500 - 9550)^2 / 9550 + (90500 - 90450)^2 / 90450 +
(9600 - 9550)^2 / 9550 + (90400 - 90450)^2 / 90450
Xsq # 0.5788394
## [1] 0.5788394
# 누적 카이제곱 분포 확률 값 계산
p_val <- pchisq(q = Xsq, df = 1, lower.tail = FALSE) # P(X > x)
p_val # 0.4467676
## [1] 0.4467676
## 방법 2
# -------------
# 표 형태로 데이터 생성 및 컬럼, 행 이름 추가
M <- as.table(rbind(c(9500, 90500), c(9600, 90400)))
dimnames(M) <- list(design = c('A', 'B'), sale = c('sale', 'non-sale'))
M
## sale
## design sale non-sale
## A 9500 90500
## B 9600 90400
# correct = FALSE 옵션 추가
(Xsq <- chisq.test(M, correct = FALSE)) # Prints test summary
##
## Pearson's Chi-squared test
##
## data: M
## X-squared = 0.57884, df = 1, p-value = 0.4468
Xsq$observed # observed counts (same as M)
## sale
## design sale non-sale
## A 9500 90500
## B 9600 90400
Xsq$expected # expected counts under the null
## sale
## design sale non-sale
## A 9550 90450
## B 9550 90450
Xsq$residuals # Pearson residuals
## sale
## design sale non-sale
## A -0.5116445 0.1662516
## B 0.5116445 -0.1662516
Xsq$stdres # standardized residuals
## sale
## design sale non-sale
## A -0.7608149 0.7608149
## B 0.7608149 -0.7608149
[1] 니시우치 히로모, 2013, 빅데이터를 지배하는 통게의 힘, 비전코리아
[2] https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/chisq.test