๐ ์ธ๊ณผ์ถ๋ก ๊ฐ์ธ ๊ณต๋ถ์ฉ ํฌ์คํธ ๊ธ์ ๋๋ค. ์ถ์ฒ๋ ์ฒจ๋ถํ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
๐ ์ ๋ฆฌ
๋๊ตฌ๋ณ์
• Treatment ๋ณ์์ ์๊ด๊ด๊ณ๊ฐ ์์ผ๋ฉด์, Treatment ๋ฅผ ํตํด์๋ง ๊ฒฐ๊ณผ๋ณ์์ ์ํฅ์ ์ฃผ๋ ๊ฒ
• 2SLS ๋ฅผ ์ฌ์ฉํด ์ธ๊ณผํจ๊ณผ๋ฅผ ์ถ์
• ์ฝํ ๋๊ตฌ๋ณ์๋ผ๋ฉด ์ถ์ ์ด ์ด๋ ค์ธ ์ ์๋ค.
• 2SLS ๋ ์ผ๊ด์ฑ์ด ์๊ธด ํ์ง๋ง, ์ฌ์ ํ ์ธ๊ณผํจ๊ณผ๋ฅผ ์ถ์ ํ๋๋ฐ ์์ด์ ํธํฅ๋ ๋ฐฉ๋ฒ์ด๋ค.
โ Going Around Omitted variable bias
โฏ Instrumental variables
• OVB(Omitted Variable Bias) ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ์๋ต๋ ๋ณ์๋ฅผ ๋ชจ๋ธ์ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์๋ต๋ ๋ณ์๋ฅผ ํญ์ ์ป์ ์ ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋๋ค.
• ๋๊ตฌ๋ณ์์ ์์ด๋์ด๋ ์ฒ์น๋ณ์๋ฅผ ์ ๋ฐํ๋ ๋ค๋ฅธ ๋ณ์๋ฅผ ์ฐพ๋ ๊ฒ์์๋ถํฐ ์์๋๋ฉฐ, ๋๊ตฌ๋ณ์ Z๋ ์ฒ์น๋ฅผ ํตํ ๊ฒฐ๊ณผ Y์๋ง ์๊ด๊ด๊ณ๊ฐ ์์ด์ผ ํ๋ค. ์ฆ, ๋๊ตฌ๋ณ์๋ Y์๋ ์๊ด๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ์ง ์์ผ๋ฉด์ T ์์ ์๊ด๊ด๊ณ๋ ์ฑ๋ฆฝํด์ผ ํ๋ค = Exclusion Restriction
โช Cov(Z,u) = 0 , u ๋ ์ค์ฐจํก
• 2SLS
• Reduced form : Z ์ ๋ํ Y์ ํ๊ท๋ถ์ ๊ฒฐ๊ณผ = Y์ ๋ํ Z์ ์ํฅ (Z๊ฐ T๋ฅผ ํตํด Y์ ๋ฏธ์น๋ ํจ๊ณผ)
• 1st stage coefficient : Z์ ๋ํ T์ ํ๊ท์ = T์ ๋ํ Z์ ์ํฅ
โก Quarter of Birth and the Effect of Education on Wage
โฏ ์๊ธ-๊ต์ก-์ถ์4๋ถ๊ธฐ
• ๊ต์ก์ด ์๊ธ์ ๋ฏธ์น๋ ์ํฅ์ ์ถ์ ํ๊ธฐ ์ํด ์ฌ๋์ ์ถ์ 4๋ถ๊ธฐ๋ฅผ ๋๊ตฌ๋ณ์ Z๋ก ์ฌ์ฉํ๋ค.
• ๋ฏธ๊ตญ์ ๋์ด๋ฒ์ ์ํ๋ฉด 4๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค์ ํ๊ท ์ ์ผ๋ก ์ฐ์ด์ ํ์ด๋ ์ฌ๋๋ณด๋ค ๋ ๋ง์ ๊ต์ก์ ๋ฐ๊ฒ ๋๋ค.
• ์ถ์๋ถ๊ธฐ(qob) ๋ ability (๋ฅ๋ ฅ - Confounder) ์์์ ๋ฌด๊ดํ์ฌ ๊ต์ก์ด ์๊ธ์ ๋ฏธ์น๋ ์ํฅ์ ๊ต๋์ํค์ง ์๋๋ค๋ ๊ฒ์ ๋ฐ์๋ค์ธ๋ค๋ฉด, ์ถ์๋ถ๊ธฐ๋ฅผ ๋๊ตฌ๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค. ์ฆ, ์ถ์๋ถ๊ธฐ๊ฐ ๊ต์ก์ ๋ฏธ์น๋ ์ํฅ ์ธ์๋ ์๊ธ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๊ณ ์๊ฐํด์ผ ํ๋ค.
• ํ์ฉํ ๋ฐ์ดํฐ์ ํํ
โช log_wage : ๋ก๊ทธ ์๊ธ (Y)
โช years_of_schooling : ๊ต์ก ๊ธฐ๊ฐ (T)
โช year_of_birth : ์ถ์์ฐ๋
โช quarter_of_birth : ์ถ์๋ถ๊ธฐ (IV)
โช state_of_birth : ์ถ์์ํ
โข The 1st Stage
โฏ ๋๊ตฌ๋ณ์ ๊ฐ์ - ์ ํจ์ฑ ๊ฒ์ฆ
โด Cov(Z,T) ≠ 0 : ๋๊ตฌ๋ณ์๊ฐ ์ค์ ๋ก ์ฒ์น๋ณ์์ ์ํฅ์ ๋ฏธ์น๋ค๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ฅผ ์ถฉ์กฑ
โต Y ⊥ Z | T : Exclusion Restriction : ๋๊ตฌ๋ณ์ Z๊ฐ ์ฒ์น T๋ฅผ ํตํด์๋ง ๊ฒฐ๊ณผ Y ์ ์ํฅ์ ์ค๋ค๋ ๊ฐ์
โฏ ์ฒซ๋ฒ์งธ ๊ฐ์ ์ ๋ํ ๊ฒ์ฆ : ๋ฐ์ดํฐ์์ Cov(Z,T) ๋ฅผ ๊ณ์ฐํด 0์ด ์๋์ ํ์ธํ ์ ์๋ค.
โช ์ถ์๋ถ๊ธฐ๊ฐ ๋๊ตฌ๋ณ์๋ก ๊ธฐ๋ฅํ๋ ค๋ฉด ์ฌํด 4๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค์ด 1๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค๋ณด๋ค ์ฝ๊ฐ ๋ ๋ง์ ๊ต์ก ์๊ฐ์ ๋ฐ์๋ค๋ ๊ฒ์ ํ์ธํด์ผ ํ๋ค. ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํตํด ํ์ธํด๋ณธ๋ค.
์์ ๊ทธ๋ํ์์ 1๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค์ด 4๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค๋ณด๋ค ๊ฑฐ์ ํญ์ ๋ ์ ์ ๊ต์ก์ ๋ฐ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋ฐ 1๋จ๊ณ๋ฅผ ์ ํํ๊ท๋ก๋ ์คํํ ์ ์๋ค.
import statsmodels.formula.api as smf
first_stage = smf.ols("years_of_schooling ~ C(year_of_birth) + C(state_of_birth) + q4", data=factor_data).fit()
print("q4 parameter estimate:, ", first_stage.params["q4"])
print("q4 p-value:, ", first_stage.pvalues["q4"])
๋๊ตฌ๋ณ์ (q4) ํ๊ท๋ฅผ ์คํํด๋ณธ ๊ฒฐ๊ณผ๋ ์์ ๊ฐ๋ค. 4๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค๋ณด๋ค ํ๊ท ์ ์ผ๋ก 0.1๋ ๋ ๋ง์ ๊ต์ก์ ๋ฐ์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. P-value ๋ 0์ ๊ฐ๊น๋ค. ์ฆ, ์ถ์๋ถ๊ธฐ๊ฐ ํ๊ต ๊ต์ก ์๊ฐ์ ์ค์ ๋ก ์ ์๋ฏธํ๊ฒ ์ํฅ์ ์ฃผ๋ ๊ฒ์ ํ์ธํด ๋ณผ ์ ์๋ค. Cov(Z,T) ≠ 0
โฃ The Reduced Form โ
• ๋ ๋ฒ์งธ ๋๊ตฌ๋ณ์ ๊ฐ์ ์ ํ์ธํ ์ ์๋ค. ์ฐฌ์ฑํ๋ ์ฃผ์ฅ๋ง ํ ์ ์์ ๋ฟ์ด๋ค. ์ฆ, ์ฌ๋๋ค์ด ํ์ด๋๋ ์๊ฐ์ ๊ต์ก์ ๋ฏธ์น๋ ์ํฅ ์ธ์, ๊ฐ์ธ์ ์ธ ๋ฅ๋ ฅ์ด๋ ์์ ์ ์ฐจ์ด๋ฅผ ์ผ์ผํฌ ์ ์๋ ์์๊ฐ ์๋๋ผ๋ ๊ฒ์ด๋ค. ์ถ์ ๋ถ๊ธฐ๊ฐ ์์ ์ ๋ฏธ์น๋ ์ํฅ์ด ๋ฌด์์๋ก ํ ๋น๋ ๊ฒ๊ณผ ๊ฐ๋ค๋ ๊ฒ์ด๋ค.
• ์ถ์๋ถ๊ธฐ์ ๋ฐ๋ฅธ ์๊ธ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ฉด ์์ ๊ฐ๋ค. ๊ณ์ ์ฑ์ ํ์ธํด ๋ณผ ์ ์๋๋ฐ, ์ฐ์ด์ ํ์ด๋ ์ฌ๋๋ค๋ณด๋ค ๊ทธ ํด ๋ฆ๊ฒ ํ์ด๋ ์ฌ๋๋ค์ ์๋์ด ์ฝ๊ฐ ๋ ๋๋ค. ์ด๋ฅผ ํ์ธํด๋ณด๊ธฐ ์ํด ์๊ธ ๋ก๊ทธ ๊ฐ์ ๋ํ ๋๊ตฌ๋ณ์์ธ q4๋ฅผ ๋ค์ ํ๊ท ๋ถ์์ ์งํํ๋ค.
reduced_form = smf.ols("log_wage ~ C(year_of_birth) + C(state_of_birth) + q4", data=factor_data).fit()
print("q4 parameter estimate:, ", reduced_form.params["q4"])
print("q4 p-value:, ", reduced_form.pvalues["q4"])
์ฌํด 4๋ถ๊ธฐ์ ํ์ด๋ ์ฌ๋๋ค์ ํ๊ท ์ ์ผ๋ก ์๊ธ์ด ๋ฌด๋ ค 0.8% ๋ ๋๋ค. P-value ๋ ๋งค์ฐ ์ ์ํ ์์น์ด๋ค.
โค Instrumental variables by hand
โฏ ATE_IV
reduced_form.params["q4"] / first_stage.params["q4"]
• ๋งค ํ๋ ๋ง๋ค ์๊ธ์ด 8% ์ธ์๋ ๊ฒ์ผ๋ก ์์
โฏ ๋๊ตฌ๋ณ์ ์ถ์ ์น๋ฅผ ์ป๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
• 2SLS
iv_by_hand = smf.ols("log_wage ~ C(year_of_birth) + C(state_of_birth) + years_of_schooling_fitted",
data=factor_data.assign(years_of_schooling_fitted=first_stage.fittedvalues)).fit()
iv_by_hand.params["years_of_schooling_fitted"]
0.08530286490889338
ํ์ด์ฌ์ 2SLS ๋ก ์ ํํ๊ท ๋ชจ๋ธ์ ๋๋ ค๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
from linearmodels.iv import IV2SLS
def parse(model, exog="years_of_schooling"):
param = model.params[exog]
se = model.std_errors[exog]
p_val = model.pvalues[exog]
print(f"Parameter: {param}")
print(f"SE: {se}")
print(f"95 CI: {(-1.96*se,1.96*se) + param}")
print(f"P-value: {p_val}")
formula = 'log_wage ~ 1 + C(year_of_birth) + C(state_of_birth) + [years_of_schooling ~ q4]'
iv2sls = IV2SLS.from_formula(formula, factor_data).fit()
parse(iv2sls)
1๋ ๊ฐ์ ์ถ๊ฐ ๊ต์ก์ผ๋ก ํ๊ท 8.5%์ ์๊ธ ์ธ์์ด ๊ธฐ๋๋๋ค๊ณ ๋ณผ ์ ์๋ค.
โฅ Multiple instruments
• ์ฌ๋ฌ ๊ฐ์ ๋๊ตฌ๋ณ์(IV)๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
• ํ์ด๋ ๋ชจ๋ ๋ถ๊ธฐ๋ฅผ ์๋ ๊ฐ์ ํ๊ต ๊ต์ก์ ๋๊ตฌ๋ณ์๋ก ํ์ฉํด๋ณด๋ ์๋ ์๋์ ๊ฐ๋ค.
formula = 'log_wage ~ 1 + C(year_of_birth) + C(state_of_birth) + [years_of_schooling ~ q1+q2+q3]'
iv_many_zs = IV2SLS.from_formula(formula, factor_data).fit()
parse(iv_many_zs)
• 3๊ฐ์ ๋๋ฏธ๋ค์ ๋ชจ๋ ํฌํจํ์ฌ, ํ์ฌ ์์ ๊ต์ก ์์ต๋ฅ ์ 0.1๋ก, ์ฆ ์ถ๊ฐ ๊ต์ก์ ๋ฐ์ ๋๋ง๋ค ํ๊ท 10%์ ์์ต ์ฆ๊ฐ๋ฅผ ์์ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
โฆ Weakness of Instruments
• ๋๊ตฌ ๋ณ์๋ฅผ ๋ค๋ฃฐ ๋ ์ ๋ ํด์ผ ํ๋ ์ ์ ๊ฐ์ ์ ์ผ๋ก ATE ๋ฅผ ์ถ์ ํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค.
• ๋๊ตฌ๋ณ์ IV ๊ฐ ์ฒ์น T์ ์์ฃผ ์ ์ ์๊ด๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋๊ตฌ๋ณ์๋ก๋ถํฐ ์ฒ์น์ ๋ํด ๋ง์ ์ค๋ช ์ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. T์ Z์ ์๊ด๊ด๊ณ๊ฐ ๋งค์ฐ ์ฝํ ๋, ATE ์ ์ธก์ ์น๋ ๋งค์ฐ ํฌ๊ฒ ํฉ๋ฟ๋ฌ์ ธ ์๋ค. ์๊ด๊ด๊ณ๊ฐ ๋ฎ์ ๋ SE ๊ฐ ๋ํ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
'1๏ธโฃ AIโขDS > ๐ฅ Casual inference' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[The Brave and True] 10. Matching (0) | 2023.07.11 |
---|---|
[The Brave and True] 9. Non Compliance and LATE (0) | 2023.07.04 |
์ธ๊ณผ์ถ๋ก ์ ๋ฐ์ดํฐ ๊ณผํ - ๋จธ์ ๋ฌ๋์ ํด์ ๊ฐ๋ฅ์ฑ๊ณผ ์ธ๊ณผ์ถ๋ก (0) | 2023.06.29 |
[The Brave and True] 7. Beyond Confounders (0) | 2023.06.29 |
[The Brave and True] 6. Grouped and Dummy Regression (0) | 2023.06.28 |
๋๊ธ