๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
1๏ธโƒฃ AI•DS/๐ŸฅŽ Casual inference

[The Brave and True] 7. Beyond Confounders

by isdawell 2023. 6. 29.
728x90

 

 

 

๐Ÿ‘€ ์ธ๊ณผ์ถ”๋ก  ๊ฐœ์ธ ๊ณต๋ถ€์šฉ ํฌ์ŠคํŠธ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ถœ์ฒ˜๋Š” ์ฒจ๋ถ€ํ•œ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

 

 

 

๐Ÿ“œ ์ •๋ฆฌ 

 

โ‘   ํฌํ•จํ•ด์•ผ ๋˜๋Š” ๋ณ€์ˆ˜ 

•  Treatment ๋ฅผ ์˜ˆ์ธกํ•˜์ง€ ์•Š๋”๋ผ๋„ Outcome ์— ๋Œ€ํ•ด ์ข‹์€ ์˜ˆ์ธก์„ ํ•˜๋Š” ๋ณ€์ˆ˜ (โ‚ Y๋ฅผ ์˜ˆ์ธกํ•˜๋ฉด ๋ถ„์‚ฐ์ด ๋‚ฎ์•„์ง€๊ณ  ์ธ๊ณผ๊ด€๊ณ„๋ฅผ ์ถ”์ •ํ•  ๋•Œ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง€๊ธฐ ๋•Œ๋ฌธ) 
•  ๊ต๋ž€ ์š”์ธ 



โ‘ก  ํฌํ•จ์‹œํ‚ค๋ฉด ์•ˆ๋˜๋Š” ๋ณ€์ˆ˜ 

•  Treatment ๋ฅผ ์˜ˆ์ธกํ•˜์ง€๋งŒ Outcome ์„ ์˜ˆ์ธกํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜ (โ‚ treatment์˜ ๋ณ€๋™์„ฑ์„ ์ค„์—ฌ ์ธ๊ณผํšจ๊ณผ๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ) 
•  Treatment ์™€ outcome ์‚ฌ์ด์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ 
•  Treatment ์™€ outcome ์˜ ๊ณตํ†ตํšจ๊ณผ์ธ ๋ณ€์ˆ˜ 

 

 

 

 

 

 

โ‘   Good controls 


 

โ—ฏ  ํ†ต์ œ๋ณ€์ˆ˜ 

 

•   ํ†ต์ œ๋ณ€์ˆ˜๊ฐ€ Confounder ์ธ ๊ฒฝ์šฐ ๋ชจํ˜•์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ, ํ•„์ˆ˜์ ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ต๋ž€์„ ์ผ์œผํ‚ค๋Š” ์š”์ธ์€ ์‹ค์ œ ์„ธ๊ณ„์—์„œ ๋งค์šฐ ๋งŽ์œผ๋ฉฐ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋‘ ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์˜คํžˆ๋ ค ์ธ๊ณผํšจ๊ณผ๋ฅผ ์‹๋ณ„ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

โ—ฏ  ์˜ˆ์ œ1. ํ•€ํ…Œํฌ ๋ฐ์ดํ„ฐ 

 

•  ์ฃผ์ œ : ํ•€ํ…Œํฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํŒ€์—์„œ ์ฃผ์–ด์ง„ task ๋กœ, ๋นš์„ ๊ฐš์„ ๊ฒƒ์„ ์š”์ฒญํ•˜๋Š” ์ด๋ฉ”์ผ์„ ๋ณด๋‚ผ ๋•Œ ๊ทธ ํšจ๊ณผ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ 

•  ๋ฐ˜์‘๋ณ€์ˆ˜ : ์—ฐ์ฒด ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ง€๋ถˆ๊ธˆ์•ก (payments) 

 

 

•  ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํŒ€์€ ์—ฐ์ฒด๊ณ ๊ฐ ์ค‘ ๋žœ๋คํ•˜๊ฒŒ 5์ฒœ๋ช…์„ ์„ ํƒํ•˜์—ฌ ๋žœ๋ค ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•œ๋‹ค. ๊ณ ๊ฐ์ˆ˜๋งŒํผ ๋™์ „์„ ๋˜์ง€๋Š”๋ฐ, ๋™์ „์ด ์•ž๋ฉด์ธ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜๊ณ , ๋’ท๋ฉด์ด ๋‚˜์˜ฌ ๊ฒฝ์šฐ ์ด๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ด๋ฉ”์ผ ์ „์†ก์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ถ”๊ฐ€๋น„์šฉ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋žœ๋ค์ด๋ฏ€๋กœ ๋‹จ์ˆœํ•œ ํ‰๊ท  ์ฐจ์ด๋Š” ATE ์˜ ์ถ”์ •๊ฐ’์ด๋‹ค. ์ฆ‰ Potential outcome ๊ณผ Treatment ๋Š” ๋…๋ฆฝ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค : (Y0, Y1) ⊥ T

โ†ช  ATE = E[Y | T=1] - E[Y | T=0]

 

print("Difference in means:",
      data.query("email==1")["payments"].mean() - data.query("email==0")["payments"].mean())
      
      
model = smf.ols('payments ~ email', data=data).fit()
model.summary().tables[1]

 

โ†ช  ์ถ”์ •์น˜๊ฐ€ -0.62 ๋กœ, ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์—ฐ์ฒด ๊ณ ๊ฐ์˜ ํ‰๊ท  ์ง€๋ถˆ ๊ธˆ์•ก์„ ๊ฐ์†Œ์‹œํ‚ฌ ๊ฒƒ์ด๋ผ๊ณ  ํ•ด์„๋˜๋Š”๋ฐ ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ์ƒ์‹๊ณผ ๋ฐ˜๋Œ€๋œ๋‹ค. P-value ๋˜ํ•œ 0.8๋กœ ๋งค์šฐ ํฐ ๊ฐ’์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ •์น˜๊ฐ€ ์œ ์˜ํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์—†๋‹ค. 

 

 

•  ๋ฐ์ดํ„ฐ์— credit_limit ์ด๋ผ๋Š” ์—ฐ์ฒด ์ „ ๊ณ ๊ฐ์˜ ์‹ ์šฉํ•œ๋„์— ๋Œ€ํ•œ feature ์™€ risk_score ๋ผ๋Š” ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ ์ „ ๊ณ ๊ฐ์˜ ์˜ˆ์ƒ ๋ฆฌ์Šคํฌ์— ๋Œ€ํ•œ feature ๊ฐ€ ์žˆ๋‹ค. ์ด ๋‘ ๋ณ€์ˆ˜๋Š” ์—ฐ์ฒด ๊ณ ๊ฐ์˜ ์ง€๋ถˆ ๊ธˆ์•ก์„ ์˜ˆ์ธกํ•˜๋Š”๋ฐ ๋งค์šฐ ์ข‹์€ ๋ณ€์ˆ˜์ด๋‹ค. 

 

•  Treatment ์— ๋Œ€ํ•œ ํ†ต๊ณ„์  ์œ ์˜์„ฑ์ด ์—†๋Š” ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, Treatment ๊ฐ€ outcome ์— ๊ฑฐ์˜ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋นš์„ ๊ฐš๋Š” ๊ฒƒ์€ ์žฌ์ •, ์ˆ˜์ž… ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ํ†ตํ•ด ๊ฐš๋Š”๋‹ค. ์ฆ‰, ์ง€๋ถˆ ๊ธˆ์•ก์˜ ๋ณ€๋™์„ฑ์€ ๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒƒ ์ด์™ธ์˜ ๋‹ค๋ฅธ ์š”์ธ์— ์˜ํ•ด์„œ๋„ ์„ค๋ช…๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

•  ์ด๋ฉ”์ผ ์ˆ˜์‹ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์—ฐ์ฒด ๊ณ ๊ฐ์˜ ์ง€๋ถˆ๊ธˆ์•ก์„ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œ์‹œํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํšŒ๊ท€๋ชจํ˜•์˜ ์ ํ•ฉ๊ฐ’์€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ–ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ํ–ˆ๋‹ค. 

 

๋‘ ๊ทธ๋ฃน ๋ชจ๋‘ 400 ์—์„œ 1000 ์‚ฌ์ด์˜ ๋ฒ”์œ„๋ฅผ ๋ณด์ธ๋‹ค

 

•  ํ†ต์ œ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ณ€๋™์„ฑ์„ ๋‚ฎ์ถ”์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ Outcome (์—ฌ๊ธฐ์„  Payments) ์„ ์˜ˆ์ธกํ•˜๋Š”๋ฐ ์ข‹์€ ๋ณ€์ˆ˜์ธ ๊ฒฝ์šฐ, Outcome ๋ณ€์ˆ˜์˜ ๋ถ„์‚ฐ์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ์„ค๋ช…ํ•ด์ค€๋‹ค. 

 

•  ํšŒ๊ท€๋ชจํ˜•์— ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ treatment ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋Š” ์ผ์ •ํ•œ ๊ฐ’์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„์Šทํ•œ credit_limit , risk_score ๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด, payments ์˜ ๋ถ„์‚ฐ์€ ๋” ์ž‘์•„์•ผ ํ•œ๋‹ค. 

 

 

 

 

โ—ฏ ์˜ˆ์ œ1 ์ด์–ด์„œ : ํ†ต์ œ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํšŒ๊ท€๋ถ„์„ 

 

 

•  ๋‘ ๋‹จ๊ณ„๋กœ ํšŒ๊ท€๋ถ„์„์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์‹ค์ œ๋กœ๋Š” ์ด๋Ÿฌํ•œ ๋ฒˆ๊ฑฐ๋กœ์šด ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰๋˜์ง€๋Š” ์•Š์œผ๋‚˜, ๊ต์œก์„ ์œ„ํ•ด ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•œ๋‹ค. 

 

โ‘ด  treatment (์ด๋ฉ”์ผ) ๊ณผ outcome (์ง€๋ถˆ๊ธˆ์•ก) ์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ํ†ต์ œ๋ณ€์ˆ˜์ธ credit_limit ๊ณผ risk_score ๋กœ ํšŒ๊ท€ํ•œ๋‹ค. 

โ‘ต  1๋‹จ๊ณ„์—์„œ ์–ป์€ outcome ์— ๋Œ€ํ•œ ์ž”์ฐจ์— treatment ์˜ ์ž”์ฐจ๋ฅผ ํšŒ๊ท€ํ•œ๋‹ค. 

 

 

model_email = smf.ols('email ~ credit_limit + risk_score', data=data).fit()
model_payments = smf.ols('payments ~ credit_limit + risk_score', data=data).fit()

residuals = pd.DataFrame(dict(res_payments=model_payments.resid, res_email=model_email.resid))

model_treatment = smf.ols('res_payments ~ res_email', data=residuals).fit()

 

 

•  ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Outcome ์˜ ๋ถ„์‚ฐ์ด ์ค„์–ด๋“ ๋‹ค.  credit_limit ๊ณผ risk_score ๋ฅผ payments ์— ํšŒ๊ท€์‹œํ‚ค๊ณ  ์ž”์ฐจ๋ฅผ ์–ป์Œ์œผ๋กœ์จ ์›๋ž˜์˜ ๋ฐ˜์‘๋ณ€์ˆ˜๋ณด๋‹ค ๋ณ€๋™์„ฑ์ด ํ›จ์”ฌ ์ ์€ ์ƒˆ๋กœ์šด ๋ฐ˜์‘๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 

 

 

print("Payments Variance", np.var(data["payments"]))
print("Payments Residual Variance", np.var(residuals["res_payments"]))

print("Email Variance", np.var(data["email"]))
print("Email Residual Variance", np.var(residuals["res_email"]))

 

 

•  ์ง€๋ถˆ๊ธˆ์•ก์˜ ๋ถ„์‚ฐ์ด 10807 ์—์„œ 5652 ๋กœ ๋ณ€ํ–ˆ๋‹ค. ๋ฆฌ์Šคํฌ์™€ ์‹ ์šฉํ•œ๋„๋ฅผ ํ†ต์ œํ•  ๊ฒฝ์šฐ ๊ฑฐ์˜ ์ ˆ๋ฐ˜์œผ๋กœ ๋ถ„์‚ฐ์ด ์ค„์ง€๋งŒ treatment ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ถ„์‚ฐ์ด ์ค„์–ด๋“ค์ง€ ์•Š์•˜๋Š”๋ฐ, ๋ฆฌ์Šคํฌ์™€ ์‹ ์šฉํ•œ๋„๋Š” ์ด๋ฉ”์ผ์„ ์ „ํ˜€ ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฒฐ๊ณผ๋Š” ํƒ€๋‹นํ•˜๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (Randomness ๋•Œ๋ฌธ)

 

 

model_treatment.summary().tables[1]

 

โ†ช   ์ž”์ฐจ๋ผ๋ฆฌ์˜ ํšŒ๊ท€๋ฅผ ํ†ตํ•ด ์œ ํšจํ•œ ํ‘œ์ค€์˜ค์ฐจ ์ถ”์ •๋Ÿ‰๊ณผ ATE ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 

โ†ช  ์ด๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•œ ๊ณ ๊ฐ์ด ์ด๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜์ง€ ์•Š์€ ๊ณ ๊ฐ๋ณด๋‹ค ํ‰๊ท  4.4 ์ •๋„ ๋” ์ง€๋ถˆํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋œ๋‹ค. 

 

 

 

 

•  ๊ทธ๋Ÿฌ๋‚˜ ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ๋งค๋ฒˆ ์ž”์ฐจ๋ฅผ ๊ตฌํ•ดํ– ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํšŒ๊ท€๋ชจํ˜•์— control ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋Œ๋ฆฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”์ •์น˜๋Š” ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ๊ณ„์‚ฐ๋œ๋‹ค. 

 

model_2 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()
model_2.summary().tables[1]

ํ†ต์ œ๋ณ€์ˆ˜๋Š” treatment ํšจ๊ณผ์™€ ์ถ”์ •์น˜์˜ ๋ถ„์‚ฐ์„ ๋‚ฎ์ถ”๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค

 

 

 

 

 

 

 

 

 

 

โ‘ก  Mostly harmful controls 


 

โ—ฏ  ์˜ˆ์ œ2. ๋‘ ๋ณ‘์›์˜ ์•ฝ๋ฌผ๊ฒ€์‚ฌ 

 

•   ๋‘ ๋ณ‘์› ๋ชจ๋‘ ์งˆ๋ณ‘์„ ์น˜๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์‹ ์•ฝ์— ๋Œ€ํ•œ ๋ฌด์ž‘์œ„ ์‹คํ—˜์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฐ˜์‘๋ณ€์ˆ˜๋Š” ์ž…์›์ผ์ˆ˜ ์ด๋‹ค. ์น˜๋ฃŒ๊ฐ€ ํšจ๊ณผ์ ์ด๋ผ๋ฉด ํ™˜์ž์˜ ์ž…์›์ผ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค ๊ฒƒ์ด๋‹ค. 

•   A๋ณ‘์›์˜ ๊ฒฝ์šฐ ์น˜๋ฃŒ์™€ ๊ด€๋ จ๋œ ์ •์ฑ…์œผ๋กœ ์ž„์˜๋กœ ํ™˜์ž์˜ 90% ์—๊ฒŒ๋Š” ์ง„์งœ์•ฝ์„ ํˆฌ์—ฌํ•˜๊ณ  10% ๋Š” ์œ„์•ฝ์„ ํˆฌ์—ฌํ•œ๋‹ค. B๋ณ‘์›์˜ ๊ฒฝ์šฐ์—๋Š” ํ™˜์ž์˜ 10% ์—๊ฒŒ ์ง„์งœ์•ฝ์„ ํˆฌ์—ฌํ•˜๊ณ  90%๋Š” ์œ„์•ฝ์„ ํˆฌ์—ฌํ•œ๋‹ค. A๋ณ‘์›์˜ ๊ฒฝ์šฐ๊ฐ€ ๋ณดํ†ต ์น˜๋ฃŒํ•˜๋Š”๋ฐ ๋” ์‹ฌ๊ฐํ•œ ์งˆ๋ณ‘์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. 

 

 

•   ๋‹จ์ˆœํžˆ treatment ๋ฅผ outcome ์— ๋Œ€ํ•ด ํšŒ๊ท€ํ•œ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

 

hosp_1 = smf.ols('days ~ treatment', data=hospital).fit()
hosp_1.summary().tables[1]

 

โ‡จ  treatment ๋ฅผ ํ•˜๋ฉด ์ž…์›์ผ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ง๊ด€์— ๋ฐ˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ๋‹ค. ์ด๋•Œ ์ค‘์ฆ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” severity ๋ณ€์ˆ˜๋ฅผ ์ƒ๊ฐํ•ด๋ณด์•„์•ผ ํ•œ๋‹ค. ์ค‘์ฆ๋„๋Š” ์ž…์› ์ผ์ˆ˜ ์ฆ๊ฐ€์™€ Positive ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ์œผ๋ฉฐ ์ค‘์ฆํ™˜์ž๊ฐ€ ๋งŽ์€ ๋ณ‘์›์—์„œ ์•ฝ๋ฌผ์„ ๋” ๋งŽ์ด ํˆฌ์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์•ฝ๋ฌผ์€ ์ž…์› ์ผ์ˆ˜ ์ฆ๊ฐ€์™€ ํ™•์‹คํžˆ ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ๋‘ ๋ณ‘์›์— ๋Œ€ํ•ด  E[Y0 | T=0] < E[Y0 | T=1] ์ด๋‹ค. ์ฆ‰, ์ค‘์ฆ๋„๋Š” ํ™˜์ž๊ฐ€ ๊ฐ€๋Š” ๋ณ‘์›๊ณผ ์•ฝ์„ ๋ฐ›์„ ํ™•๋ฅ ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ต๋ž€ ์ž‘์šฉ์œผ๋กœ ์ž‘์šฉํ•œ๋‹ค. 

 

 

 

โ—ฏ  ์˜ˆ์ œ2 ์ด์–ด์„œ. 2๊ฐ€์ง€ ์ ‘๊ทผ๋ฐฉ๋ฒ•

 

โ‘ด  ์ค‘์ฆ๋„ ๊ต๋ž€์ž‘์šฉ์„ ๋‚ฎ์ถ”๋Š” ์ฒซ๋ฒˆ์งธ๋Š” ๊ฐ ๋ณ‘์›๋ณ„ ATE ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. 

 

hosp_2 = smf.ols('days ~ treatment', data=hospital.query("hospital==0")).fit()
hosp_2.summary().tables[1]

 

hosp_3 = smf.ols('days ~ treatment', data=hospital.query("hospital==1")).fit()
hosp_3.summary().tables[1]

 

 

•   ๋ณ‘์›๋ณ„๋กœ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ์ง๊ด€์ ์ธ ATE ๋ฅผ ์–ป์—ˆ๋‹ค. ์•ฝ์ด ๋ณ‘์› ์ž…์› ์ผ์ˆ˜๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๊ฐ ๋ณ‘์›์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ณด๊ฒŒ ๋˜์–ด ๊ณ ๋ คํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ์ ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ†ต๊ณ„์  ์œ ์˜์„ฑ์€ ์‚ฌ๋ผ์กŒ๋‹ค. 

 

 

 

โ‘ต  ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ•์œผ๋กœ๋Š” ๋ชจ๋ธ์— ์ค‘์ฆ๋„ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜์—ฌ ํ†ต์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

hosp_4 = smf.ols('days ~ treatment + severity', data=hospital).fit()
hosp_4.summary().tables[1]

 

•   ์ค‘์ฆ๋„๋ฅผ ํ†ต์ œํ•˜๊ณ  ๋‚˜๋ฉด Hospital ๋ณ€์ˆ˜๋Š” ๋” ์ด์ƒ ์ž…์› ์ผ์ˆ˜์™€ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์—†์–ด์ง„๋‹ค. 

 

•   ์ด๋•Œ Hospital ๋ณ€์ˆ˜๋ฅผ ํ†ต์ œ๋ณ€์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด treatment ๋ณ€์ˆ˜์˜ p-value ๊ฐ€ ์˜คํžˆ๋ ค ์ฆ๊ฐ€ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ค‘์ฆ๋„๋ฅผ ํ†ต์ œํ•œ ์ƒํ™ฉ์—์„œ, Hospital ๋ณ€์ˆ˜๊ฐ€ treatment ์˜ˆ์ธก ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ outcome ์˜ ์˜ˆ์ธก๋ณ€์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๋ ‡์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  

 

hosp_5 = smf.ols('days ~ treatment + severity + hospital', data=hospital).fit()
hosp_5.summary().tables[1]

 

 

•   Treatment ์— ์ข‹์€ ์˜ˆ์ธก๋ณ€์ˆ˜์ธ ํ†ต์ œ๋ณ€์ˆ˜๋Š” ์ถ”์ •๋Ÿ‰์˜ ๋ถ„์‚ฐ์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฏ€๋กœ ์ถ”๊ฐ€ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. 

 

 

 

 

 

 

 

 

โ‘ข  Bad Controls - Selection bias 


 

โ—ฏ   ์˜ˆ์ œ1 ์ด์–ด์„œ

 

•   ๋‚จ์€ ๋ณ€์ˆ˜ opened, aggrement ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, opened ๋Š” ๋ฉ”์ผ์„ ์—ด์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋”๋ฏธ๋ณ€์ˆ˜์ด๊ณ , agreement ๋Š” ์ด๋ฉ”์ผ ์ˆ˜์‹  ํ›„ ๊ด€๋ จ ๋ถ€์„œ์— ์—ฐ๋ฝํ•ด ์ฑ„๋ฌดํ˜‘์ƒ์„ ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋”๋ฏธ๋ณ€์ˆ˜์ด๋‹ค. 

 

•   ์ฒซ๋ฒˆ์งธ ๋ชจํ˜• : treatment(email) + credit_limit + risk_score

 

email_1 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()
email_1.summary().tables[1]

 

 

•   ๋‘๋ฒˆ์งธ ๋ชจํ˜• : opened, agreement ์ถ”๊ฐ€ 

 

email_1 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()
email_1.summary().tables[1]

 

โ‡จ  ์ฒซ ๋ฒˆ์งธ ๋ชจํ˜•์—์„œ ์ด๋ฉ”์ผ ๋ณ€์ˆ˜๋Š” ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜ํ•ด๋ณด์ด์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ ๋ชจํ˜•์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ๋‘ ๋ฒˆ์งธ ๋ชจํ˜•์ด ์˜ณ์€ ๋ชจํ˜•์ผ์ˆ˜๋„ ์žˆ๊ณ , treatment(์ด๋ฉ”์ผ)์€ outcome(์ง€๋ถˆ๊ธˆ์•ก)์— ํšจ๊ณผ๊ฐ€ ์—†์„ ์ˆ˜๋„์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณ ๋ คํ•ด๋ณด์•„์•ผ ํ•  ๋ถ€๋ถ„์€, opened ์™€ agreement ๋ณ€์ˆ˜๋Š” Treatment (์ด๋ฉ”์ผ) ๋ณ€์ˆ˜๊ฐ€ ์›์ธ ๋ณ€์ˆ˜๊ฐ€ ๋˜๋Š” ๋ณ€์ˆ˜๋“ค์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. (์ด๋ฉ”์ผ์„ ๋ฐ›์•„์•ผ opened ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์ฑ„๋ฌดํ˜‘์ƒ agreement ๊ฐ€ ๊ฐ€๋Šฅ) 

 

 

 

 

โ†ช ์ง๊ด€์ ์œผ๋กœ ์ด๋ฉ”์ผ์„ ์—ฐ ์‚ฌ๋žŒ๋“ค์€ ์—ฐ๋ฝํ•˜๊ณ  ๋นš์„ ๊ฐš์„ ๊ฒƒ์ด๋ผ๊ณ  ์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Opened ๋Š” ์ง€๋ถˆ๊ธˆ์•ก์˜ ์›์ธ์ด ๋œ๋‹ค. agreement ๋„ ๊ฐ™์€ ์ด์œ ๋„ ๊ทธ๋ ‡๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

โ†ช  Payment ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํผ๋„ ๊ด€๊ณ„๋ฅผ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค : email  >  opened > agreement > payment 

โ†ช  ์œ„์˜ ๊ทธ๋ž˜ํ”„์˜ ํ•ต์‹ฌ์€, ์ด๋ฉ”์ผ์—์„œ ์ง€๋ถˆ๊ธˆ์•ก๊นŒ์ง€์˜ ์ธ๊ณผ๊ฒฝ๋กœ์— opened ์™€ agreement๊ฐ€ ๋ชจ๋‘ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

์ถ”๋ก  ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ

 

 

 

 

โ—ฏ   ๊ต๋ž€์š”์ธ๊ณผ ์„ ํƒํŽธํ–ฅ 

 

•  ๊ต๋ž€์š”์ธ์€ ๊ณตํ†ต ์›์ธ์— ๋Œ€ํ•œ ํ†ต์ œ ์‹คํŒจ์—์„œ ์˜ค๋Š” ํŽธํ–ฅ์ด์ง€๋งŒ, ์„ ํƒํŽธํ–ฅ์€ ์›์ธ์—์„œ ํšจ๊ณผ๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์‚ฌ์ด์— ์žˆ๋Š” ๊ณตํ†ตํšจ๊ณผ ๋˜๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ํ†ต์ œํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. 

•  ๋ชจํ˜•์—๋Š” Y๋ฅผ ์ž˜ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ ํ˜น์€ ๊ต๋ž€ ์š”์ธ์„ ํ•ญ์ƒ ํฌํ•จ์‹œ์ผœ์•ผ ํ•œ๋‹ค. Treatment๋งŒ์„ ์ž˜ ์˜ˆ์ธกํ•˜๋Š” ๋ณ€์ˆ˜ ํ˜น์€ treatment์™€ outcome ์‚ฌ์ด์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋˜๋Š” treatment์™€ outcome์˜ ๊ณตํ†ต ํšจ๊ณผ์ธ ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

 

 

 

 

 

 

 

 

 

โ‘ฃ  Bad COP 


 

โ—ฏ  ์˜ˆ์ œ. ์˜ˆ์ธกํ•˜๋ ค๋Š” ์—ฐ์†ํ˜• ๋ณ€์ˆ˜ 'Customer spend' ์žˆ์ง€๋งŒ ๋ถ„ํฌ์—์„œ 0์ด ๋งค์šฐ ๋งŽ์€ ์ƒํ™ฉ์ด๋‹ค. 

 

 

 

•   ์ ‘๊ทผํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐฉ์‹์€ ๋ชจ๋ธ๋ง์„ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค. ์ฒซ๋ฒˆ์งธ๋Š” Y>0 ์ผ ํ™•๋ฅ , ์ฆ‰ ๊ณ ๊ฐ์˜ ์ง€์ถœ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ชจํ˜•์„ ๋งŒ๋“ ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” Y>0 ์ธ ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•ด Y๋ฅผ ๋ชจ๋ธ๋งํ•œ๋‹ค. ์ด๋ฅผ ๋ณดํ†ต Conditional-on-Positives ํšจ๊ณผ๋ผ ๋ถ€๋ฅธ๋‹ค. ์ด๋Š” ๊ณ ๊ฐ์ด ๋ฌด์—‡์ด๋“  ์ง€์ถœํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ํ›„ (Treatment) ์ง€์ถœํ•œ ๊ธˆ์•ก์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

COP

 

•   T๊ฐ€ ๋žœ๋คํ•˜๊ฒŒ ํ• ๋‹น๋˜๋ฉด treatment ๋กœ ์ธํ•œ ์ง€์ถœ ํ™•๋ฅ  ์ฆ๊ฐ€๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ COP ๋ฅผ ์ถ”์ •ํ•˜๋Š” ๊ณผ์ •์— ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋ฌด์ž‘์œ„๋กœ ํ• ๋‹น๋˜๋”๋ผ๋„ ํŽธํ–ฅ๋  ์ˆ˜ ์žˆ๋‹ค โ‡จ COP ํŽธํ–ฅ 

 

 

 

 

โ—ฏ  ์˜ˆ์ œ. COP ํŽธํ–ฅ ์˜ˆ์‹œ : ๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ 

 

•   ๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ์„ ๋ด์•ผ๋งŒ ์ œํ’ˆ์„ ์‚ฌ๋Š” ์‚ฌ๋žŒ๋“ค (Frugal) ์ด ์žˆ๊ณ , ์—†์–ด๋„ ์‚ฌ๋Š” ๊ณ ๊ฐ (Rich) ๋“ค์ด ์žˆ๋‹ค. 

 

 

 

•   ์บ ํŽ˜์ธ์— ๋Œ€ํ•œ ATE ๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์ž‘์œ„๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ treatment ๋ฅผ ๋ฐ›์€ ๊ฒƒ๊ณผ ๋ฐ›์ง€ ์•Š์€ ๊ฒƒ๋งŒ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค. 

 

 

โ‡จ ์ฐธ๊ฐ€์ž ๋ชจ์ง‘๋‹จ๋งŒ ํ•„ํ„ฐ๋งํ•˜๋ฉด ๋ฌด์ž‘์œ„ํ™”๋กœ ์ธํ•ด ์ฒ˜์Œ์—๋Š” ํŽธํ–ฅ์ด ์—†๋”๋ผ๋„ ATE์— ๋Œ€ํ•œ ์ถ”์ •์น˜๊ฐ€ ํŽธํ–ฅ๋œ๋‹ค. 

 

 

 

•  treatment์™€ outcome ์‚ฌ์ด์— ์žˆ๊ฑฐ๋‚˜ outcome๊ณผ treatment์˜ ๊ณตํ†ต์ ์ธ ํšจ๊ณผ์ธ ๋ณ€์ˆ˜๋Š” ํ†ต์ œํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค. COP ํŽธํ–ฅ์ด๋ž€ treatment์—์„œ outcome ๋˜๋Š” treatment์™€ outcome์˜ ๊ณตํ†ต์ ์ธ ํšจ๊ณผ์ธ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ธ๊ณผ ๊ฒฝ๋กœ์˜ ๋ณ€์ˆ˜๋ฅผ ํ†ต์ œํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํŽธํ–ฅ์ด๋‹ค.

 

 

728x90

๋Œ“๊ธ€