A/B ํ ์คํธ์์์ ๊ท ๋ฑ ํ ๋น๊ณผ ๋ถ๊ท ๋ฑ ํ ๋น
A/B ํ ์คํธ์ ์์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๊ทผ์ด๋ค. ๊ท ๋ฑ ํ ๋น(Equal allocation)์ ๊ฐ test variant์ ๋์ผํ ์์ ์ ์ ๋ฅผ ๋ถ๋ฐฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, 50%์ ์ ์ ๋ control group์, 50%๋ variant์ ํ ๋นํ๋ค.
๋ถ๊ท ๋ฑ ํ ๋น(unequal allocation)์ control group์ด๋ ํน์ variant์ ๋ ์ ์, ๋๋ ๋ ๋ง์ ์ ์ ๋ฅผ ํ ๋นํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, 20%๋ CG์, 80%๋ variant์ ํ ๋นํ๋ค.
๋ถ๊ท ๋ฑ ํ ๋น์ด A/B ํ ์คํธ ๊ฒฐ๊ณผ์ ๋ฏธ์น๋ ์ํฅ
์ ์ ๋ฅผ ๊ท ๋ฑํ๊ฒ, ๋๋ ๋ถ๊ท ๋ฑํ๊ฒ ํ ๋นํด๋ ํ ์คํธ์ ๊ฒฐ๊ณผ๋ ๋๊ฐ์๊น? ์ด๋ค ์ํฅ์ด ์๋์ง์ ๋ํด ์์๋ณด์๋ค.
ํ ์คํธ ๊ธฐ๊ฐ ๋จ์ถ
๋ถ๊ท ๋ฑ ํ ๋น์ ํตํด ํ ์คํธ๋ฅผ ๋ ๋นจ๋ฆฌ ๋๋ผ ์ ์๋ค๊ณ ์๊ฐํ๋ ์ฌ๋๋ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ ์ฌ์ค์ด ์๋๋ค. ํต๊ณ์ ์ ์์ฑ(statistical significance)๊ณผ ์ ๋ขฐ๊ตฌ๊ฐ(confidence interval)์ ๋ํ ๊ณ์ฐ์ ๊ฐ variant์ ํ ๋น๋ ์ ์ ์ ๋งค์ฐ ์์กดํ๊ธฐ ๋๋ฌธ์ด๋ค.
ํจ์จ์ฑ์ ๊ดํ์ฌ
์ ์ ๋ฅผ ๋ถ๊ท ๋ฑํ๊ฒ ํ ๋น(์: 20-80)ํ์ฌ ์งํํ ํ ์คํธ๋ ๊ท ๋ฑ ํ ๋น(50-50)ํ ํ ์คํธ์ ํจ์จ์ฑ ์ธก๋ฉด์ ์์ด ์ด๋ป๊ฒ ๋ค๋ฅผ๊น? ๊ฒฐ๊ณผ๋ถํฐ ๋งํ์๋ฉด ๋ต์ ๊ท ๋ฑ ํ ๋น๋ณด๋ค "ํจ์จ์ฑ์ด ๋จ์ด์ง๋ค"์ด๋ค. ๋ถ๊ท ๋ฑ ํ ๋น์ผ๋ก ํ ์คํธ๋ฅผ ์งํํ๋ฉด ๊ฒ์ ๋ ฅ(power)์ด ๋ฎ๊ฒ ์ธก์ ๋๊ฑฐ๋, ๋น์ทํ ๊ฒฐ๊ณผ(๋น์ทํ ์ ๋์ ๊ฒ์ ๋ ฅ)๋ฅผ ์ป์ผ๋ ค๋ฉด ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค.(์ ์ ๊ฐ ๋ ๋ง์ด ํ์ํ๋ค.)
์ค์ ๋ก ํ์ธํด๋ณด๊ธฐ
R์ ์ด์ฉํด์ ๊ฒ์ ๋ ฅ ๋ถ์(Power Analysis)์ ํ ์ ์๋ค. ์๋ ๋ธ๋ก๊ทธ ๊ธ์ ๋ฐ๋ผํ์ฌ R์ ์ค์นํ๋ค.
R์ ์ด์ฉํด์ ๊ฒ์ ๋ ฅ๋ถ์(power analysis)์ ํด๋ณด์. -๊น์ ์ ํต๊ณ ์ด์ผ๊ธฐ-
๋ค์ด๊ฐ๋ ๊ธ ๊ฒ์์ ํตํด ์ด ๊ธ์ ์ฝ์ผ์๋ ๋ถ๋ค์ด๋ผ๋ฉด ๊ฒ์ ๋ ฅ ๋ถ์(power analysis)์ด ๋ฌด์์ด๊ณ , ์ ํ์ํ์ง์ ๋ํด ์ด๋ฏธ ์๊ณ ๊ณ์๋ฆฌ๋ผ ์๊ฐ๋ฉ๋๋ค. ๊ฐ๋จํ ์์ฝํ์๋ฉด, ์คํ์ ๊ฒฐ๊ณผ์ ๋ํ P ๊ฐ
jinmedi.tistory.com
์์ฝ: http://www.r-project.org ์ ์ - CRAN ํด๋ฆญ - KOREA - ์ํ๋ ๋งํฌ(๋ค ๋๊ฐ์) ํด๋ฆญ - OS์ ๋ง์ถ์ด ์ค์น
R์ ์คํํ๋๋ฐ "WARNING: You're using a non-UTF8 locale, therefore only ASCII characters will work.~"์ ๊ฐ์ ์๋ฌ ๋ฉ์์ง๊ฐ ๋ด๋ค. ๊ตฌ๊ธ๋งํ๋ ๊ฐ์ ์ฌ๋ก๋ฅผ ๋ฐ๊ฒฌํด์ ๊ฐ๋จํ ํด๊ฒฐํ๋ค. (์ฐธ๊ณ : https://stackoverflow.com/questions/9689104/installing-r-on-mac-warning-messages-setting-lc-ctype-failed-using-c)
์๋๋ฅผ ๋ณต์ฌํ์ฌ R์ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋๋ค.
system("defaults write org.R-project.R force.LANG en_US.UTF-8")
์ฐ๋ฆฌ๊ฐ ํ ์คํธํด ๋ณผ ๊ฒ์ฒ๋ผ ํ๋ณธ ํฌ๊ธฐ๊ฐ ๋์ผํ์ง ์์ ๊ฒฝ์ฐ ์ด๋ฅผ pwr ํจํค์ง๊ฐ ์ฒ๋ฆฌํ ์ ์๋ค. ์ ๋ธ๋ก๊ทธ ๊ธ์์๋ ๊ทธ๋ฅ R์ install.packages(“pwr”)๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋๋ค๊ณ ํ๋๋ฐ, ๋์ ๊ฒฝ์ฐ๋ ๋์ง ์์์ ์๋๋ฅผ ๋ถ์ฌ๋ฃ์๋๋ ํด๊ฒฐ๋์๋ค. (์ฐธ๊ณ : https://github.com/heliosdrm/pwr)
install.packages("pwr", repos="http://cran.r-project.org")
์ ๊ทธ๋ผ 5๋ง ๋ช ์ ์ ์ ๊ฐ ์๊ณ , ์ด ์ ์ ๋ค์ ๊ท ๋ฑ ๋ถ๋ฐฐ(50-50)ํ๋ค๊ณ ๊ฐ์ ํ์. ์ ํ๋ฅ ์ด 15%์ด๊ณ , 90%์ ๊ฒ์ ๋ ฅ๊ณผ 90%์ ์ ๋ขฐ๋๋ก ์ ํ๋ฅ ์ด 1%๊ฐ ์ฆ๊ฐํ๋ค๊ณ ํ ๋์ ์ฌ๋ก๋ฅผ ์์๋ณด์. (์ฐธ๊ณ : https://geoffruddock.com/run-ab-test-with-unequal-sample-size/#fn:2)
library(pwr)
n1 = 25000
n2 = 25000
p1 = 0.15
p2 = 0.16
h = abs(2*asin(sqrt(p1))-2*asin(sqrt(p2)))
pwr.2p2n.test(h, n1=n1, n2=n2, sig.level=0.10)
h = 0.02763486
n1 = 25000
n2 = 25000
sig.level = 0.1
power = 0.9257466
alternative = two.sided
R์์๋ ์๋์ ๊ฐ์ด ๋์จ๋ค.
์ด ๊ฒฝ์ฐ ๊ฒ์ ๋ ฅ์ด 0.92 ์ด์์ผ๋ก ๋์จ๋ค.
* h: ํจ๊ณผ ํฌ๊ธฐ
* sig.level: significance level. ์ ์ ์์ค. 95%์ ์ ๋ขฐ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค๋ฉด (1−0.95)์ธ 0.05๊ฐ์ด ์ ์์์ค ๊ฐ์ด ๋๋ค.
* power: ๊ฒ์ ๋ ฅ. ๋๋ฆฝ๊ฐ์ค์ด ์ณ์ ๋, ๊ท๋ฌด๊ฐ์ค์ ์ฑํํ ํ๋ฅ (=๋๋ฆฝ๊ฐ์ค์ด ์ฐธ์ผ ๋ ๋๋ฆฝ๊ฐ์ค์ ์ฑํํ ํ๋ฅ ). ์ค์ ๋ก ํจ๊ณผ๊ฐ ์๋ ๊ฒ์ ๋ถ์์ ํตํด ํจ๊ณผ๊ฐ ์๋ค๊ณ ์ฆ๋ช ํ ์ ์๋ ํ
๊ทธ๋ฌ๋ฉด 10-90์ผ๋ก ๋ถ๋ฐฐํ ๊ฒฝ์ฐ์๋ ์ด๋จ๊น? ์ด ๊ฒฝ์ฐ์๋ ๊ฒ์ ๋ ฅ์ด 0.58 ์์ค์ผ๋ก ํฌ๊ฒ ๋จ์ด์ง๋ค.
library(pwr)
n1 = 5000
n2 = 45000
p1 = 0.15
p2 = 0.16
h = abs(2*asin(sqrt(p1))-2*asin(sqrt(p2)))
pwr.2p2n.test(h, n1=n1, n2=n2, sig.level=0.10)
h = 0.02763486
n1 = 5000
n2 = 45000
sig.level = 0.1
power = 0.5829899
alternative = two.sided
๊ทธ๋ฌ๋ฉด 10-90๋ก ์ฌ์ฉ์๊ฐ ํ ๋น๋ ํ ์คํธ์์ 50-50 ํ ์คํธ์ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ธฐ ์ํด์๋ ์ผ๋ง๋ ๋ ๋ง์ ์ ์ ๊ฐ ํ์ํ ๊น?
์ ์คํฌ๋ฆฐ์ท์์ ๋ณด๋ค์ํผ ์ฝ 3๋ฐฐ์ ์ ์ ๋ก ๊ณ์ฐํ๋ฉด ๊ฒ์ ๋ ฅ์ด ์ฝ 0.94๋ก ์ ์ฌํด์ง ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ฒฐ๋ก
A/B ํ ์คํธ์ ์ ์ ๋ฅผ ๋ถ๊ท ๋ฑํ๊ฒ ํ ๋นํ ๊ฒฝ์ฐ ๊ท ๋ฑํ๊ฒ ํ ๋นํ๋ ํ ์คํธ์ ์ ์ฌํ ์์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด์๋ ๋ ๋ง์ ์๊ฐ/์ ์ ๊ฐ ํ์ํ๋ค.
๋ง๋ถ์ฌ์
๋์ ๊ฒฝ์ฐ, ์ด์ ์ ์ฝ์๋ ์ด๋ ๋ง์ผํ ์ฑ ์์ ๋ํ ์๋น์ค์ ๋ง์ผํฐ๊ฐ ์ด๋ฐ ์์ผ๋ก ๋ถ๊ท ๋ฑ ํ ๋น A/B ํ ์คํธ๋ฅผ ์งํํ๋ค๋ ์ฌ๋ก๋ฅผ ์ฝ์์๋ค. ๊ทธ๋์ ์ด๋ ๊ฒ ์ธํ ํ๋ ๊ฒ์ ํฐ ์๋ฌธ์ ๊ฐ์ง์ง ์๊ณ ๋๋ ๋ฐ๋ผํ๊ณ ์์๋๋ฐ, ์ ์ ๋ฅผ ๊ท ๋ฑํ๊ฒ ํ ๋นํ๋ ๊ฒฝ์ฐ์ ๋ค์ ์ฐจ์ด๊ฐ ์๋ค๋ ์ ์ ์ด๋ฒ ๊ธฐํ์ ์์ธํ ์๊ฒ ๋์๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ด "์" ๊ถ์ฅ๋์ง ์๋์ง๋ฅผ ์๊ฒ ๋์ด์ ์์ด ์์ํ๋ค๐
์ง๊ธ์ ๊ทธ ์ฑ ์ด ์์ด์ ์ ํํ ๋ค์ ํ์ธํด ๋ณผ ์๋ ์์ง๋ง, ๋ด๊ฐ ์ฝ์๋ ์ฑ ์์ ์๋ง ๊ทธ ๋ง์ผํฐ๊ฐ ๊ทธ๋ ๊ฒ ํ ์คํธ๋ฅผ ์งํํ ์ด์ ๋ ์๋ฌด๋๋ ์๋น์ค ๊ท๋ชจ์ ๊ด๋ จ์ด ์์ ๊ฒ ๊ฐ๋ค. ๋ถ๊ท ๋ฑํ๊ฒ ํ ๋น๋ ํ ์คํธ๋ฅผ ์งํํด๋ ์ ์ ์๊ฐ ๋ง์ ์๋น์ค์ฌ์ ๋ชจ์๋ฅผ ์ฝ๊ฒ ๋ง์ด ํ๋ณดํ ์ ์์์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ๋ ์ ์ ์๊ฐ ๋ง๋ค๋ณด๋ ์๋ก์ด ๋์์ธ์ด ์ ์ฉ๋ variant์ ํ ๋น๋ ์ ์ ๋ค์ CS๋ ์ฒ๋ฆฌํด์ผ ํ์ ๊ฒ์ด๊ณ ...๐ค ๋ํ ์๋น์ค์ด๋ค๋ณด๋ ๋ณํ์ ๋ค์ ์กฐ์ฌ์ค๋ฌ์ ์ ์๋! A/B ํ ์คํธ์ ๋ค์ํ ์ฌ๋ก์ ๋ฐฉ๋ฒ๋ก ์ ๋ํด์๋ ๋ค์์ ๋ ํฌ์คํ ํด์ผ๊ฒ ๋ค.
* ํต๊ณ๋ฅผ ์ ๊ณตํ์ง์์ ๋ฌธ๊ณผ ์ถ์ ๋ง์ผํฐ๊ฐ A/B ํ ์คํธ์ ๋ํด ์์๋ณด์์ต๋๋ค. ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ ์ ํด์ฃผ์ธ์!