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

[The Brave and True] 5. The Unreasonable Effectiveness of Linear Regression

by isdawell 2023. 6. 27.
728x90

 

 

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

 

 

 

 

โ‘   All you need is regression 


 

โ—ฏ  Review 

 

•  ์ธ๊ณผ์ถ”๋ก ์—์„œ ๊ฐ ๊ฐœ์ธ์—๊ฒŒ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ ๊ฐ’์€ Y0 (์ฒ˜์น˜๋ฅผ ๋ฐ›์ง€ ์•Š์•˜์„ ๋•Œ ์–ป๋Š” ๊ฒฐ๊ณผ), Y1 (์ฒ˜์น˜๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ๊ฒฐ๊ณผ) ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ T๊ฐ€ 0์ด๋‚˜ 1๋กœ ์ •ํ•ด์ง€๋ฉด ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋Š” ์˜์˜ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๋•Œ๋ฌธ์— ๊ฐœ์ธ์— ๋Œ€ํ•œ ์ฒ˜์น˜ํšจ๊ณผ δi = Y1i - Y0i ๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค. 

 

 

•  ๊ทธ๋Ÿฌ๋‚˜ ํ‰๊ท ์ ์ธ ์ธ๊ณผ ํšจ๊ณผ ATE ๋Š” ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๋‹ค : ATE = E[Y1 - Y0] 

•  ์—ฌ๊ธฐ์„œ ์ผ์ •ํ•œ ์ฒ˜์น˜ํšจ๊ณผ k ๋Š” Y1i = Y0i + k ๋ฅผ ๋งŒ์กฑํ•œ๋‹ค. k ๊ฐ€ ์–‘์ˆ˜๋ผ๋ฉด ํ‰๊ท ์ ์œผ๋กœ ์ฒ˜์น˜๊ฐ€ ์–‘์˜ ํšจ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•œ๋‹ค. 

 

•  ํŽธํ–ฅ bias ๋•Œ๋ฌธ์— ํ‰๊ท ์˜ ์ฐจ์ด E[Y|T=1] - E[Y|T=0] ์™€ E[Y1-Y0] ๋Š” ๋‹ค๋ฅด๋‹ค. ์ด๋Ÿฌํ•œ ํŽธํ–ฅ์€ ์ฒ˜์น˜์ง‘๋‹จ๊ณผ ๋น„์ฒ˜์น˜ ์ง‘๋‹จ์ด ์ฒ˜์น˜ ์—ฌ๋ถ€ ์™ธ์— ๋‹ค๋ฅธ ์ธก๋ฉด์—์„œ ๊ฐˆ๋ผ์งˆ ๋•Œ๋„ ๋ฐœ์ƒํ•œ๋‹ค. 

•  ํŽธํ–ฅ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ์ง‘๋‹จ์—์„œ ์ž ์žฌ์  ๊ฒฐ๊ณผ Y0 ์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

•  ์ธ๊ณผ์ถ”๋ก ์—์„œ๋Š” ์ด ๋ชจ๋“  ์ž‘์—…์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ Linear regression ์ด๋‹ค. ์„ ํ˜•ํšŒ๊ท€๋Š” ์กฐ๊ฑด๋ถ€ ๊ธฐ๋Œ€ํ•จ์ˆ˜ CEF ์— ๋Œ€ํ•œ ์ตœ์ƒ์˜ ์„ ํ˜• ๊ทผ์‚ฌ์น˜์ด๋‹ค. 

 

 

•  ์˜ˆ์ œ

์˜จ๋ผ์ธ ์ˆ˜์—… ์˜ˆ์ œ

 

โ†ช ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค (e.g. ์‹œํ—˜ ๋‹น์ผ ํ•™์ƒ์˜ ๊ธฐ๋ถ„, ๊ณต๋ถ€์‹œ๊ฐ„ ๋“ฑ) ์€ ui ํ•ญ์— ํฌํ•จ์‹œํ‚จ๋‹ค.  

โ†ช  Online_i : ์ฒ˜์น˜๋ฅผ ๋ฐ›๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋”๋ฏธ๋ณ€์ˆ˜์ด๋‹ค 

โ†ช  E[Y|T=0] = δ0 , E[Y|T=1] = δ0 + k โ‡จ k ๋Š” ATE 

 

 

import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
import graphviz as gr
%matplotlib inline

data = pd.read_csv("data/online_classroom.csv").query("format_blended==0")

result = smf.ols('falsexam ~ format_ol', data=data).fit()
result.summary().tables[1]

 

•  ATE ๋ฅผ ์ถ”์ •ํ•  ๋ฟ ์•„๋‹ˆ๋ผ ๋™์‹œ์— ์‹ ๋ขฐ๊ตฌ๊ฐ„๊ณผ p-value ๊นŒ์ง€ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

•  ATE = Online ์˜ ๋ชจ์ˆ˜ ์ถ”์ •์น˜์— ์ ˆํŽธ์„ ๋”ํ•œ ๊ฐ’ = 78 + (-4.9) = 73.1 

 

 

 

 

โ‘ก  Regression Theory 


 

โ—ฏ  Linear prediction 

 

 

•  ํ•˜๋‚˜์˜ ํšŒ๊ท€๋ณ€์ˆ˜ T๊ฐ€ ์žˆ์„ ๋•Œ ๊ทธ์— ๋Œ€ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ 

 

 

 

โ—ฏ  ํšŒ๊ท€๋ณ€์ˆ˜๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ 

 

•  ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค์€ ๋ณด์กฐ์ ์ด๊ณ  T์™€ ๊ด€๋ จ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ k ๋ฅผ ์ถ”์ •ํ•˜๋Š”๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž 

 

 

•  T~ : T์— ๋Œ€ํ•ด ๋‹ค๋ฅธ covariates ๋ฅผ ํฌํ•จํ•œ ํšŒ๊ท€์‹ X1i + ... + Xki ์˜ Residual ์ž”์ฐจ ์ด๋‹ค. 

 

•  ๋‹ค๋ณ€๋Ÿ‰ ํšŒ๊ท€๋ถ„์„์˜ ๊ณ„์ˆ˜๋Š” ๋ชจํ˜•์˜ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ํšจ๊ณผ๋ฅผ ๊ณ ๋ คํ•œ ํ›„ ๋™์ผํ•œ ํšŒ๊ท€ ๋ถ„์„์˜ ์ด๋ณ€๋Ÿ‰ ๊ณ„์ˆ˜์™€ ๊ฐ™๋‹ค. ์ฆ‰, k ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์ธกํ•œ ํ›„ T์˜ ์ด๋ณ€๋Ÿ‰ ๊ณ„์ˆ˜ (bivariate coefficient) ์ด๋‹ค. 

 

โ€ป bivariate coefficient : ๋‘ ๋ณ€์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํšŒ๊ท€๊ณ„์ˆ˜๋กœ ๋‘ ๋ณ€์ˆ˜ ์‚ฌ์ด์˜ ์ƒ๊ด€๊ด€๊ณ„์˜ ๊ฐ•๋„์™€ ๋ฐฉํ–ฅ์„ฑ์„ ์„ค๋ช…ํ•ธ๋‹ค. 

 

•  ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค๋กœ๋ถ€ํ„ฐ T๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด T๋Š” ๋žœ๋ค์ด ์•„๋‹ˆ๋ผ๋Š” ๋œป์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค์„ ํ†ต์ œํ•˜๋ฉด T๋ฅผ ๋žœ๋ค์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์„ ํ˜•ํšŒ๊ท€๋ฅผ ์ด์šฉํ•ด ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค๋กœ๋ถ€ํ„ฐ T๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ๊ทธ ์ž”์ฐจ T~ ๋ฅผ ์ทจํ•œ๋‹ค. ์ž”์ฐจ์˜ ์ •์˜์— ๋”ฐ๋ผ T~ ๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜ X๋กœ๋ถ€ํ„ฐ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค. 

 

 

 

 

โ‘ข  Regression for Non-Random Data 


 

โ—ฏ  Observational data

 

•  ๋ฌด์ž‘์œ„ ์‹คํ—˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ๋”ฐ๋ผ์„œ ๋žœ๋คํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ, ๊ด€์ธก ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„์•ผ ํ•œ๋‹ค. 

 

 

โ—ฏ  ์˜ˆ์ œ. ์ถ”๊ฐ€๊ต์œก๊ธฐ๊ฐ„์ด ์‹œ๊ฐ„๋‹น ์ž„๊ธˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ ์ถ”์ • 

 

•  ์กฐ์ž‘๋ณ€์ธ T = ๊ต์œก ๋ฐ›์€ ๊ธฐ๊ฐ„ , ์ข…์†๋ณ€์ˆ˜ O = ์‹œ๊ฐ„๋‹น ์ž„๊ธˆ์˜ ๋กœ๊ทธ๊ฐ’ 

โ†ช ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”์ •์น˜๋ฅผ ๋ฐฑ๋ถ„์œจ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ๊ต์œก๊ธฐ๊ฐ„์ด 1๋…„ ๋Š˜์–ด๋‚  ๋•Œ, ์ž„๊ธˆ์ด x% ๋Š˜์–ด๋‚œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. (์ฐธ๊ณ 

 

 

wage = pd.read_csv("./data/wage.csv").dropna()
model_1 = smf.ols('np.log(hwage) ~ educ', data=wage.assign(hwage=wage["wage"]/wage["hours"])).fit()
model_1.summary().tables[1]

 

•  ๋ชจํ˜•์— ๋”ฐ๋ฅด๋ฉด ๊ต์œก ๊ธฐ๊ฐ„์ด 1๋…„ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ์ž„๊ธˆ์ด ์•ฝ 5.3% ์ฆ๊ฐ€ํ•œ๋‹ค๊ณ  ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ต์œก์ด ์ž„๊ธˆ์— ์˜ํ–ฅ์„ ์ค€๋‹ค๋Š” ๊ฐ€์ •๊ณผ ์ผ์น˜ํ•˜๋‹ค. 

 

•  ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ•ด์„์€ ๋ฏฟ์„๋งŒ ํ•˜์ง€ ๋ชปํ•˜๋‹ค. ํŽธํ–ฅ์ด ์กด์žฌํ• ์ง€๋„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค์„ ํ†ต์ œ๋ณ€์ˆ˜๋กœ ํ™œ์šฉํ•  ํ•„์š”์„ฑ์ด ์žˆ๋‹ค. meduc, feduc ๊ณผ ๊ฐ™์€ ๋ถ€๋ชจ์˜ ๊ต์œก๊ธฐ๊ฐ„, IQ ์ ์ˆ˜, ๊ฒฝ๋ ฅ ์—ฐ์ˆ˜ exper, ์žฌ์ง ๊ธฐ๊ฐ„ tenure ๋“ฑ์ด ์žˆ๋‹ค. 

 

 

•  ๊ฐ€๋ น ๋ชจํ˜•์— IQ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ๋‹ค๋ฉด, k ๋Š” IQ ๋ฅผ ๊ณ ์ •์‹œํ‚ค๋ฉด์„œ ๊ต์œก๊ธฐ๊ฐ„์„ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ๋œ๋‹ค. 

•  RCT ๋ฅผ ํ•ด์„œ ์ฒ˜์น˜์ง‘๋‹จ๊ณผ ํ†ต์ œ์ง‘๋‹จ์„ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์—†์ง€๋งŒ, ํšŒ๊ท€๋ชจํ˜•์— ๋‹ค๋ฅธ ์š”์†Œ๋“ค์„ ํฌํ•จํ•˜๋ฉด ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 

 

controls = ['IQ', 'exper', 'tenure', 'age', 'married', 'black',
            'south', 'urban', 'sibs', 'brthord', 'meduc', 'feduc']

X = wage[controls].assign(intercep=1)
t = wage["educ"]
y = wage["lhwage"]

beta_aux = regress(t, X)
t_tilde = t - X.dot(beta_aux)

kappa = t_tilde.cov(y) / t_tilde.var()
kappa

 

•  ์œ„์˜ ์ถ”์ • ๊ฒฐ๊ณผ๋Š” 0.04๊ฐ€ ๋˜๋Š”๋ฐ ์ด ๊ณ„์ˆ˜ ๊ฐ’์€ ๋™์ผํ•œ  IQ, ๊ฒฝ๋ ฅ, ์žฌ์ง ๊ธฐ๊ฐ„, ๋‚˜์ด ๋“ฑ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์˜ ๊ฒฝ์šฐ ๊ต์œก ๊ธฐ๊ฐ„์ด 1๋…„ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ์‹œ๊ฐ„๋‹น ์ž„๊ธˆ์ด 4.11% ์ƒ์Šนํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด์ „์˜ ์ถ”์ •๊ฐ’์— ๋น„ํ•˜๋ฉด ๊ฐ’์ด ๋‹ค์†Œ ๊ฐ์†Œํ–ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์„ ํ†ต์ œํ•˜๊ณ  ๋‚˜๋ฉด ์ถ”์ •์˜ ์˜ํ–ฅ๋ ฅ์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ์†Œํ•˜๊ฒŒ ๋œ๋‹ค. 

 

 

 

 

โ‘ฃ  Omitted variable or Confounding Bias 


 

 

•  ๋ชจํ˜•์—์„œ ๋ชจ๋“  ๊ต๋ž€ ๋ณ€์ˆ˜๋ฅผ ๊ณ ๋ คํ•œ ๊ฒฝ์šฐ OVB ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ•œ๋‹ค. 

•  ๊ต๋ž€๋ณ€์ˆ˜๋Š” ์ฒ˜์น˜์™€ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ์œ ๋ฐœํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค. 

 

•  IQ-๊ต์œก-์ž„๊ธˆ : Postivie bias ์˜ˆ์‹œ

•  ๊ฒฝ์ฐฐ๋ ฅ-ํญ๋ ฅ์‚ฌ๊ฑด-๋ฒ”์ฃ„์œจ : Nevative bias ์˜ˆ์‹œ 

 

 

 

•  ํšŒ๊ท€๋ถ„์„์€ ๊ต๋ž€๋ณ€์ˆ˜ W๋ฅผ ๊ณ ์ •ํ•˜๊ณ  T์˜ ํšจ๊ณผ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ต๋ž€๋ณ€์ˆ˜์˜ ํšจ๊ณผ๋ฅผ ๋ณด์ •ํ•œ๋‹ค. W๊ฐ€ ์—ฌ์ „ํžˆ T์™€ Y๋ฅผ ์œ ๋ฐœํ•˜๊ณ  ์žˆ์œผ๋‚˜, ๊ทธ ๊ฐ’์ด ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— T์™€ Y์˜ ๋ณ€ํ™”์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์—†์„ ๋ฟ์ด๋‹ค. 

 

 

 

 

 

 

728x90

๋Œ“๊ธ€