๐ ์ธ๊ณผ์ถ๋ก ๊ฐ์ธ ๊ณต๋ถ์ฉ ํฌ์คํธ ๊ธ์ ๋๋ค. ์ถ์ฒ๋ ์ฒจ๋ถํ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
โ Intro
• ์์ . ๊ต์ก ๋ฐ์ดํฐ : ENEM ์ ์(SAT์ ์ ์ฌํ ๋ธ๋ผ์ง ํ์ค ๊ณ ๋ฑํ๊ต ์ ์)๋ฅผ 3๋ ๋์ ๋ค๋ฅธ ํ๊ต๋ค์์ ์์ง โจ ํ์ ๊ท๋ชจ๊ฐ ์์ ๋ ์์ 1%์ ํด๋นํ๋ ํ๊ต๊ฐ ๋ง์๋ค. ๊ทธ๋ฌ๋ ํ์ 1% ํ๊ต๋ฅผ ์ดํด๋ณด์์ ๋๋ ํ์์๊ฐ ๋งค์ฐ ์ ์๋ค. ์ด๋ ํ์ ์๊ฐ ์ ์ ํ๊ต๋ค์ ๊ฒฝ์ฐ, ๋ถ์ฐ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์์ธก์ด ๋ถํ์คํด์ ์ด์ ์ํด ๋งค์ฐ ๋๊ฑฐ๋ ๋ฎ์ ๋ถํฌ๋ฅผ ๋ณด์ธ ๊ฒ์ด๋ค.
• ๋ถํ์ค์ฑ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ๋ถ์ฐ์ ์ถ์ ๋์ ๊ตฌํ๋ ๊ฒ์ด๋ค. ๋ถํ์ค์ฑ์ ๊ด์ธก๋ ๋ฐ์ดํฐ๊ฐ ํด ์๋ก ์ค์ด๋ ๋ค. ATE ๋ฅผ ํฌํจํ ์ด๋ ํ ์์ฝ ํต๊ณ์ ๋ํด์๋ ์ด๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ํ๋ณธ์ด ์ปค์ง์๋ก ๋ถ์ฐ์ ์ค์ด๋ ๋ค.
โก Standard error of our estimates
• ๋ณต์ต. ATE, E[Y1-Y0] ์ ์ฒ๋ฆฌ ๊ตฐ๊ณผ ๋์กฐ๊ตฐ์ ํ๊ท ๊ฐ ์ฐจ์ด์ธ E[Y|T=1] - E[Y|T=0] ์ผ๋ก ๋ค๋ฃจ์๋ค. ์จ๋ผ์ธ ์์ ์์ ์์ ์จ๋ผ์ธ ์์ ์ ATE ๋ฅผ ๋ฐํ๋๊ณ , ๋๋ฉด์์ ์ผ ๋๋ณด๋ค 5์ ๋ฎ์ ๋ถ์ ์ ์ธ ํจ๊ณผ๋ฅผ ํ์ธํ๋ค. ์ด์ ์ด ๊ฐ์ด ํต๊ณ์ ์ผ๋ก ์ ์ํ์ง ์ดํด๋ณด์์ผ ํ๋ค. ์ด๋ฅผ ์ํด ํ์ค์ค์ฐจ๋ฅผ ์ถ์ ํ๋ค.
• ํ์ค์ค์ฐจ ์ถ์ ์น
• ์ถ์ ์น์ ๋ํ ํ์ค์ค์ฐจ๋ ํ์ ์ ๋ํ ์น์์ด๋ค.
โข Confidence Intervals
• ํ์ค์ค์ฐจ๋ฅผ ํตํด ์ฐธ ํ๊ท ์ด 95% ์์ ํฌํจ๋๋๋ก ๊ตฌ๊ฐ์ ๋ง๋ค ์ ์๋ค โจ ์ ๋ขฐ๊ตฌ๊ฐ
• ์ ๋ขฐ๊ตฌ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด CLT ์ค์ฌ๊ทนํ ์ ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค. CLT ๋ ํ๋ณธ์ด ์ถฉ๋ถํ ํด ๋, ํ๋ณธ์ ํ๊ท ์ด ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅธ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
โฃ Hypothesis testing
• ๋ถํ์ค์ฑ์ ํํํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ฐ์ค๊ฒ์ ์ด๋ค โจ H0 : ์ฐจ์ด๋ฅผ ๊ฒ์ ํ๊ณ ์ถ์ ๊ฐ
โค P-value
• p๊ฐ์ ๊ท๋ฌด๊ฐ์ค์ด ์ฌ๋ฐ๋ฅด๋ค๊ณ ๊ฐ์ ํ ๋, ๊ฒ์ ์ค์ ์ค์ ๊ด์ฐฐ๋ ์ ์๋ ๊ฐ์ฅ ๊ทน๋จ์ ์ธ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ํ๋ฅ . ๊ท๋ฌด๊ฐ์ค์ด ์ฐธ์ด๋ผ๋ ๊ฐ์ ํ์ p๊ฐ์ ๊ทธ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ํ๋ฅ ์ ์๋ฏธํ๋ค โจ P(data | H0)
โฏ ๋จ์ผ A/B ํ ์คํธ ๋น๊ตํจ์
def AB_test(test: pd.Series, control: pd.Series, confidence=0.95, h0=0):
mu1, mu2 = test.mean(), control.mean()
se1, se2 = test.std() / np.sqrt(len(test)), control.std() / np.sqrt(len(control))
diff = mu1 - mu2
se_diff = np.sqrt(test.var()/len(test) + control.var()/len(control))
z_stats = (diff-h0)/se_diff
p_value = stats.norm.cdf(z_stats)
def critial(se): return -se*stats.norm.ppf((1 - confidence)/2)
print(f"Test {confidence*100}% CI: {mu1} +- {critial(se1)}")
print(f"Control {confidence*100}% CI: {mu2} +- {critial(se2)}")
print(f"Test-Control {confidence*100}% CI: {diff} +- {critial(se_diff)}")
print(f"Z Statistic {z_stats}")
print(f"P-Value {p_value}")
AB_test(online, face_to_face, h0=-1) # ์จ๋ผ์ธ๊ณผ ๋๋ฉด ์์
์ ํจ๊ณผ ์ฐจ์ด๊ฐ -1์ธ์ง ๊ธฐ๊ฐํ ์ ์์๊น
# 95% ์ ๋ขฐ๋๋ฅผ ํตํด ์ฐจ์ด๊ฐ -1๋ณด๋ค ์ ์ํ๋ค๊ณ ํ ์ ์์ผ๋ 99% ์ ๋ขฐ๋๋ก๋ ํ ์ ์๋ค.
โช ๋ ๊ทธ๋ฃน์ ๋น๊ตํ์ฌ ํ๊ท ์ฒ์นํจ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ , ๊ทธ ์ฃผ์์ ์ ๋ขฐ๊ตฌ๊ฐ๊น์ง ์ป์ด๋ผ ์ ์๋ A/B ๊ฒ์ฌ ๋๊ตฌ
๋๊ธ