๐ ์ธ๊ณผ์ถ๋ก ๊ฐ์ธ ๊ณต๋ถ์ฉ ํฌ์คํธ ๊ธ์ ๋๋ค. ์ถ์ฒ๋ ์ฒจ๋ถํ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
๐ ์ ๋ฆฌ
• ํจ๋ ๋ฐ์ดํฐ : ์ฌ๋ฌ ๊ธฐ๊ฐ์ ๊ฑธ์ณ ๋์ผํ ๋์์ ๋ํด ์ธก์ ๊ฐ์ด ์๋ ๋ฐ์ดํฐ
• Entity (๊ฐ์ฒด) ๋ฅผ ์ ์ดํ๋ ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ์ ์ฌ์ฉํด ๋ชจ๋ ๋์๊ณผ, ์๊ฐ์ด ๋ณํ์ง ์๋ ๋ณ์๋ฅผ ๊ณ ์ ํ ์ ์๋ค. ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ์ ๊ต๋๋ณ์๋ฅผ ํต์ ํ๋ ๊ฐ๋ ฅํ๊ณ ์ค๋๋ ฅ์๋ ๋ฐฉ๋ฒ์ด๋ค.
• ๊ทธ๋ฌ๋ ์ญ์ธ๊ณผ๊ด๊ณ๊ฐ ์๊ฑฐ๋ ๊ด์ธก๋์ง ์์ ๊ต๋๋ณ์๊ฐ ์๊ฐ์ ๋ฐ๋ผ ๋ณํ ๋ ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ์ด ์ธ๊ณผํจ๊ณผ๋ฅผ ๋์ถํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค.
โ Intro
โฏ Panel data
• Panel : ์ฌ๋ฌ๊ธฐ๊ฐ์ ๊ฑธ์ณ ๋์ผํ ๋จ์ (unit) ์ ๋ฐ๋ณต์ ์ผ๋ก ๊ด์ฐฐํ ๊ฒฝ์ฐ
• ํจ๋ ๋ฐ์ดํฐ๋ ์ฌ๋ฌ ํด์ ๊ฑธ์ณ ์ฌ๋ฌ ๋์ ๋๋ ์ฃผ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ ์ ์๋ ์ ๋ถ ์ ์ฑ ํ๊ฐ์์ ๋ง์ด ๋ฐ์ํ๋ค. ๊ธฐ์ ๋ค์ด ๋ช ์ฃผ ๋๋ ๋ช ๋ฌ์ ๊ฑธ์ณ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๋ ์ฐ์ ์์๋ ๋งค์ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ณผ ์ ์๋ค.
• Y0(1) : ๊ธฐ๊ฐ์ด 1์ผ ๋, ๋์กฐ๊ตฐ์ ๋ํ ๊ฒฐ๊ณผ
• counterfactual ์ ๋ํ potential outcome
• ๊ด๊ณ ํ์ PA ์ง์ญ์ ๋ฐฐ์นํ๋ ํจ๊ณผ = (๊ด๊ณ ํ์ ๋ฐฐ์น ํ, POA ์์ ์ธก์ ํ ๊ฒฐ๊ณผ) - (๊ด๊ณ ํ์ ๋ฐฐ์นํ์ง ์์๋ค๋ฉด ์ผ์ด๋ ์ผ์ ๋ํ ์ถ์ ์น, counterfactual)
โก Parallel trends
โฏ Independence assumption
• ๋ ๋ฆฝ์ฑ ๊ฐ์ ์ ํตํด parallel trends assumption ์ ํ์ธํด๋ณผ ์ ์๋ค : Yd ⊥ D
• treatment assign ์ด ์ ์ฌ์ ๊ฒฐ๊ณผ๋ก๋ถํฐ ๋ ๋ฆฝ์ ์ด์ด์ผ ํ๋ค.
โช ๋ ๋ฆฝ์ฑ ๊ฐ์ ์ด ์๋ฐฐ๋๋ ex. ๋ง์ผํ ๋งค๋์ ๊ฐ ์ด๋ฏธ ์ํ ์๊ธ์ด ๋งค์ฐ ๋์ ๋์์๋ง ๊ด๊ณ ํ์ ์ถ๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ, ๋ง์ผํ ํจ๊ณผ์ ์๊ด์์ด ์บ ํ์ธ์ ์ฑ๊ณตํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์ฆ, Y0 ๊ฐ ๋์ ๋์์ treatment ๋ฅผ ์ฃผ๋ ๊ฒ์ด๋ค.
โฏ Independence assumption ๊ณผ parallel trends
โข Controlling what you cannot see
โฏ unconfoundedness
• ์ฑํฅ ์ ์, ์ ํํ๊ท ๋ฐ ๋งค์นญ ๋ฐฉ๋ฒ์ ๋๋คํ์ง ์์ ๋ฐ์ดํฐ์ ๊ต๋๋ณ์๋ฅผ ํต์ ํ๋๋ฐ ๋งค์ฐ ์ข์ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋ฌ๋ ํด๋น ๋ฐฉ๋ฒ๋ค์ ์ค์ํ ๊ฐ์ ์ธ conditional unconfoundedness ์ ์์กดํ๋ค. ์ฆ, ๋ชจ๋ ๊ต๋๋ณ์๋ฅผ ์๊ณ ์๊ณ ์ธก์ ์ด ๋์ด์ผ ๊ต๋๋ณ์๋ฅผ ์กฐ๊ฑด๋ถ๋ก ๋๊ณ , random assignment ์ ๊ฐ์ด treatment ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
• ๋ฌธ์ ๋ ๊ต๋๋ณ์๋ฅผ ํญ์ ์ธก์ (๊ด์ธก) ํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ ๊ฒ์ด๋ค.
• ์ธก์ ๋์ง ์์ ๊ต๋๋ณ์๊ฐ ์์ผ๋ฉด bias ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ธ๊ณผํจ๊ณผ ์ถ์ ์ ์ด๋ ค์ด ์ํฉ์ ๋์ด๊ฒ ๋๋ค. ๊ต๋๋ณ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๊ตฌ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ข์ ๋๊ตฌ๋ณ์๋ฅผ ๋ง๋๋ ๊ฒ์ ์ฝ์ง ์์ผ๋ฉฐ, ๋ง์ ์ฐฝ์์ฑ์ ์๊ตฌํ๋ค. ๋์ ํจ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ฉํด๋ณผ ์ ์๋ค.
โฏ unconfoundedness and panel data
• ํจ๋๊ตฌ์กฐ์์ ๊ต๋ ๋ณ์๋ฅผ ๋ฐ๋ผ๋ณด๋ ๋ฐฉ๋ฒ์ ์๊ฐ์ ๊ณ ์ ๋ time fixed ๊ต๋๋ณ์๋ฅผ ๊ฐ ์คํ๋์์ ๊ณ ์ ํ ์์ฑ์ผ๋ก ์๊ฐํ๋ ๊ฒ์ด๋ค.
• ์ฌ๋์ ์ธ๋ชจ๋ ์ง์ฑ๊ณผ ๊ฐ์ ์์ฑ์ ์ธก์ ํ ์๋ ์์ง๋ง, ๊ทธ ํน์ง์ ์ง๋ ์ฌ๋์ ์๊ฐ์ด ํ๋ฌ๋ ๊ฐ์ ๊ฐ์ธ์ด๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ๊ฒ์ ํน์ ์ฌ๋์ ๋ํ๋ด๋ ๋๋ฏธ ๋ณ์๋ฅผ ๋ง๋ค๊ณ ์ ํ ๋ชจ๋ธ์ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค. ํด๋น ๋๋ฏธ๋ณ์๋ฅผ ์ถ๊ฐํจ์ผ๋ก ์ฌ๋ ์์ฒด๋ฅผ ์ ์ดํ ์ ์๋ค.
• ์ฌ๋์ ๋ํ ๋๋ฏธ๋ณ์์ ํจ๊ป ๊ฒฐํผ์ด ์๋์ ๋ฏธ์น๋ ์ํฅ์ ์ถ์ ํ ๋, ํ๊ท๋ถ์์ ์ฌ๋์ ๋ํ ๋ณ์๋ฅผ ๊ณ ์ ๋ ์ํ๋ก ์ ์งํ๋ฉฐ ๊ฒฐํผ์ ํจ๊ณผ๋ฅผ ์ฐพ๋๋ค.
• ์คํ๋์์ ๋ํ ๋๋ฏธ๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ Fixed effect model ์ด๋ผ๊ณ ํ๋ค.
โฃ Fixed effects
โฏ ์์ . ๊ฒฐํผ์ด ์๋์ ๋ฏธ์น๋ ์ธ๊ณผ์ ์ํฅ
• nr : ๊ฐ์ธ
• year : ์ฐ๋
• married : ๊ธฐํผ์ฌ๋ถ
• lwage : ์๋์ ๋ก๊ทธ๋ณํ
• expersq : ํด๋น ์ฐ๋์ ๊ทผ๋ฌด ์๊ฐ
• occupation : ๊ต์ก ๋ ์
โฏ ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ
• y_it : ์๊ฐ t์์ ๊ฐ ์คํ๋์ i ์ ๊ฒฐ๊ณผ
• X_it : ์๊ฐ t์์ ์คํ๋์ i ์ ๋ํ ๋ณ์๋ค์ ๋ฒกํฐ
โช ์๊ฐ์ ๋ฐ๋ผ ๋ณํ๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ๋ณ์ ex. ๊ฒฐํผ,๊ฒฝ๋ ฅ
• Ui : ์คํ๋์ i ์ ๋ํด ๊ด์ธก ๋ถ๊ฐ๋ฅํ ๋ณ์์ ์งํฉ
โช ๊ด์ธกํ ์ ์๋ ๋ณ์๋ค์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ฒจ์๊ฐ ์๋ค. ex. ์ธ๋ชจ, ์ง์ฑ
• e_it : ์ค์ฐจํญ
• y_it : ์๊ธ์ ๋ํ ๋ก๊ทธ๋ณํ
โฏ fixed effect ๊ตฌํ
• ์คํ๋์์ ๋ํ ๋๋ฏธ๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ด์ ๊ฐ์๊ฐ ๋งค์ฐ ๋ง์ด ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์ ํํ๊ท๋ฅผ 2๊ฐ์ ๊ฐ๋ณ๋ชจ๋ธ๋ก ๋ถํ ํ๋ ํธ๋ฆญ์ ํ์ฉํ๋ค.
• ์ฐ๋ year ๋๋ฏธ๋ณ์์ ๋ํ ํจ์๋ก ์๊ธ์ ์์ธกํ๋ ๋ชจ๋ธ
mod = smf.ols("lwage ~ C(year)", data=data).fit()
mod.summary().tables[1]
โช 1981๋ : 1.3935 + 0.1194
data.groupby("year")["lwage"].mean()
โช ์ฐ๋๋ณ ์๊ธ ํ๊ท ๊ฒฐ๊ณผ์ ํ๊ท ๋ชจ๋ธ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค. ์ฆ, ํจ๋ ๋ฐ์ดํฐ์ ๋ชจ๋ ์ฌ๋์ ๋ํ ํ๊ท ์ ์ป์ผ๋ ค๋ฉด, ๋ณธ์ง์ ์ผ๋ก ๋ค๋ฅธ ๋ณ์์ ๋ํ ๊ฐ๋ณ ๋๋ฏธ์ ํ๊ท๋ฅผ ํด์ผ ํ๋ค.
• ๊ฐ์ธ๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ์ฌ ํ์คํธ์ฐจ์ ํฉ๊ณ๋ฅผ ์ป์ ์ ์๋ค. ๋ง์ฝ ํฉ๊ณ๊ฐ 0์ด๋ฉด ๋ณ์๊ฐ ๊ฐ๋ณ ๋์์ ๋ํด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณํ์ง ์์์ ์๋ฏธํ๋ค.
data.groupby("nr").std().sum()
โช ์ธ์ข ๊ณผ ๊ด๋ จ๋ ๋๋ฏธ๋ณ์ black, hisp ์ ๊ต์ก ๋ณ์๊ฐ ๊ฐ๋ณ ์คํ๋์์ ๋ํด ์ผ์ ํ๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐํ ํ์๊ฐ ์๋ค. ๋ํ occupation (์ง์ ) ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ์ง์ ๋ณ์๋ ๊ฒฐํผ์ด ์๊ธ์ ๋ฏธ์น๋ ์ํฅ์ ์ค์ฌ (mediated) ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฏธํผ ๋จ์ฑ์ด ๋ ๋ง์ ์๊ฐ์ ์๊ตฌํ๋ ์ง์ ์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
โฏ fixed effect ๊ตฌํ
โด ์คํ ๋์ ๋ณ ํ๊ท ๋ฐ์ดํฐ ์์ฑ
Y = "lwage"
T = "married"
X = [T, "expersq", "union", "hours"]
mean_data = data.groupby("nr")[X+[Y]].mean()
mean_data.head()
โต ํ๊ท ๋ฐ์ดํฐ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ฐจ๋ถํ๊ธฐ
demeaned_data = (data
.set_index("nr") # set the index as the person indicator
[X+[Y]]
- mean_data) # subtract the mean data
demeaned_data.head()
โถ ํ๊ท ์ ๋บ ๋ฐ์ดํฐ์ ๋ํด ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ ์ ์ฉ
mod = smf.ols(f"{Y} ~ {'+'.join(X)}", data=demeaned_data).fit()
mod.summary().tables[1]
โช ๊ฒฐํผ์ด ๋จ์ฑ์ ์๊ธ์ 11% ์ฆ๊ฐ์ํจ๋ค๋ ๊ฒ์ ์๋ฏธ
โท ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ์ ๊ฒฝ์ฐ, ํ์ค์ค์ฐจ๊ฐ clustered ๋์ด์ผ ํ๋ค. linearmodels๋ฅผ ์ฌ์ฉ ๋ฐ ํด๋น cluster_entity ์ธ์๋ฅผ True๋ก ์ค์ ํ๋ฉด ๋๋ค.
from linearmodels.panel import PanelOLS
mod = PanelOLS.from_formula("lwage ~ expersq+union+married+hours+EntityEffects",
data=data.set_index(["nr", "year"]))
result = mod.fit(cov_type='clustered', cluster_entity=True)
result.summary.tables[1]
โฏ ๋ฐ์ดํฐ์ ์๊ฐ๋ถ๋ถ์ ๊ณ ๋ คํ์ง ์์ ๊ฐ๋จํ OLS ๋ชจ๋ธ
• ์๊ฐ์ ์ผ์ ํ ๋ณ์๋ค์ ๋ค์ ์ถ๊ฐ
mod = smf.ols("lwage ~ expersq+union+married+hours+black+hisp+educ", data=data).fit()
mod.summary().tables[1]
โช ๊ฒฐํผ์ด ๋จ์ฑ์ ์๊ธ์ 14% ์ฆ๊ฐ์ํจ๋ค๋ ๊ฒ์ ์๋ฏธ
โช intelligence, beauty ๋ณ์์ ๊ฐ์ ๊ณ ์ ๋ ๊ฐ๋ณ ์์ธ์ผ๋ก ์ผ๋ถ ์๋ต๋ ๋ณ์์ ํธํฅ์ด ๋ชจ๋ธ์ ๋ฐ์๋์ง ์์์ ์๋ฏธ
โค Visualizing fixed effects
โฏ Visualizing fixed effects
• ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ง๊ด์ ์ผ๋ก ์ดํด๋ณด๊ธฐ
• ์์ . ๊ด๊ณ ํ ๋ง์ผํ ์บ ํ์ธ์ด ์ธ์ฑ ๊ตฌ๋งค์ ๋ฏธ์น๋ ์ํฅ์ ์ถ์
toy_panel = pd.DataFrame({
"mkt_costs":[5,4,3.5,3, 10,9.5,9,8, 4,3,2,1, 8,7,6,4],
"purchase":[12,9,7.5,7, 9,7,6.5,5, 15,14.5,14,13, 11,9.5,8,5],
"city":["C0","C0","C0","C0", "C2","C2","C2","C2", "C1","C1","C1","C1", "C3","C3","C3","C3"]
})
m = smf.ols("purchase ~ mkt_costs", data=toy_panel).fit()
plt.scatter(toy_panel.mkt_costs, toy_panel.purchase)
plt.plot(toy_panel.mkt_costs, m.fittedvalues, c="C5", label="Regression Line")
plt.xlabel("Marketing Costs (in 1000)")
plt.ylabel("In-app Purchase (in 1000)")
plt.title("Simple OLS Model")
plt.legend();
โช ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ณด์๋๋ฐ, ๊ตฌ๋งค์์ค์ด ๋ฎ์ ๋์ (์ ์ด์ ์ธ์ฑ ๊ตฌ๋งค๋ฅผ ๊ฑฐ์ ์ํ๋ ๊ณณ)์ ๊ด๊ณ ํ์ ๋ฐฐ์นํ๋๋ฐ ๋ ๋ง์ ๋ง์ผํ ๋น์ฉ์ ์ง์ถํ๋ ๊ฒฝํฅ์ด ์์์ ํ์ธํ์๋ค. ํด๋น ๋ฐ์ดํฐ๋ก ํ๊ท๋ถ์์ ์งํํ๋ฉด, ๋ง์ผํ ๋น์ฉ์ด ๋์์๋ก ์ธ์ฑ ๊ตฌ๋งค๊ฐ ๊ฐ์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์ง์ถ์ด ์ ์ ์ง์ญ์ ํฌ์๊ฐ ํธ์ค๋์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ๊ฒฐ๊ณผ์ด๋ค.
fe = smf.ols("purchase ~ mkt_costs + C(city)", data=toy_panel).fit()
# ๐ก C(city)
fe_toy = toy_panel.assign(y_hat = fe.fittedvalues)
plt.scatter(toy_panel.mkt_costs, toy_panel.purchase, c=toy_panel.city)
for city in fe_toy["city"].unique():
plot_df = fe_toy.query(f"city=='{city}'")
plt.plot(plot_df.mkt_costs, plot_df.y_hat, c="C5")
plt.title("Fixed Effect Model")
plt.xlabel("Marketing Costs (in 1000)")
plt.ylabel("In-app Purchase (in 1000)");
โช ๋ฐ๋ผ์ ๊ณ ์ ํจ๊ณผ๋ชจ๋ธ์ ์คํํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ , ๋์์ ์งํ๋ฅผ ๋ชจ๋ธ์ ๋๋ฏธ๋ณ์๋ก ์ถ๊ฐํ๋ค. ๊ณ ์ ํจ๊ณผ๋ชจ๋ธ์ ์๊ฐ์ ๋ฐ๋ผ ์ผ์ ํ ๋์ ๊ณ ์ ์ ํน์ฑ์ ํต์ ํ๊ธฐ ๋๋ฌธ์ ๋์๊ฐ ์ํ์ ๋ํด ๊ตฌ๋งค์์ค์ด ๋ฎ์ผ๋ฉด ์ด๋ฅผ ํฌ์ฐฉํด ๋ฐ์ํ๊ฒ ๋๋ค.
โช ๊ณ ์ ํจ๊ณผ๋ ๋์๋น ํ๋์ ํ๊ท์ ์ fitting ํ๋ค๋ ์ ๊ณผ ์ ํฉ๋ ํ๊ท์ ์ด ํํํ๋ค๋ ์ ์ ์ฃผ๋ชฉํด์ผ ํ๋ค. ํ๊ท์ ์ ๊ธฐ์ธ๊ธฐ๋ ์ธ์ฑ ๊ตฌ๋งค์ ๋ํ ๋ง์ผํ ๋น์ฉ์ ํจ๊ณผ๋ฅผ ์ค๋ช ํ๋ค. ๊ณ ์ ํจ๊ณผ๋ ์ธ๊ณผํจ๊ณผ๊ฐ ๋ชจ๋ ๊ฐ์ฒด (ํด๋น ์์์์๋ ๋์) ์ ๊ฑธ์ณ ์ผ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ค.
โช ๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ฐ์ ์ ๋ง์ฝ ๋์๋ณ ์ธ๊ณผํจ๊ณผ๋ฅผ ์ถ์ ํ๋๋ฐ ๊ด์ฌ์ด ์๋ ๊ฒ์ด๋ผ๋ฉด ์ฝ์ ์ด ๋ ์ ์๋ค. ๊ณ ์ ํจ๊ณผ ๋ชจ๋ธ์ ํด๋น ํจ๊ณผ๊ฐ ๊ฐ์ฒด (๋์) ๊ฐ ์ผ์ ํ๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋์์ ๋ฐ๋ฅธ ์ธ๊ณผํจ๊ณผ ์ฐจ์ด๋ฅผ ์ฐพ์ง ๋ชปํ๋ค. ์ธ์ฑ๊ตฌ๋งค์ ๋ํ ๋ง์ผํ ์ ์ ๋ฐ์ ์ธ ํจ๊ณผ๋ฅผ ์ฐพ๊ณ ์ ํ๋ค๋ฉด ํด๋น ๋ฐ์ดํฐ์ ํจ๋ ํํ๊ฐ ๊ณ ์ ํจ๊ณผ๋ฅผ ํ์ํ ์ ์๊ฒ ๋์์ ์ค๋ค.
โฅ Time effects
โฏ Time effects
• ๊ฐ๋ณ ์์ค์ ๋ํด ๊ณ ์ ํจ๊ณผ๋ฅผ ์ํํ ๊ฒ์ฒ๋ผ ์๊ฐ ์์ค์ ๋ํด์๋ ๊ณ ์ ํจ๊ณผ๋ฅผ ์ค๊ณํ ์ ์๋ค.
• ์๊ฐ ๋๋ฏธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฐ ๊ธฐ๊ฐ๋์ ๊ณ ์ ๋๋ ๋ณ์๋ค์ ๋ํด ํต์ ํ ์ ์์ง๋ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฐ๋ ์ ์๋ค.
• ์ธํ๋ ์ด์ ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ธ์ฌ๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ผ๋ฏ๋ก, ๊ฒฐํผ๊ณผ ๊ธ์ฌ ์ฌ์ด์ ๊ธ์ ์ ์ธ ์ฐ๊ด์ฑ์ด ์๋ ๊ฒ์ ๋จ์ํ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ๋ณ์๊ฐ ๋ชจ๋ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ด๋ค. ํด๋น ๊ต๋ํจ๊ณผ๋ฅผ ๋ณด์ ํ๊ธฐ ์ํด ๊ฐ ๊ธฐ๊ฐ์ ๋ํ ๋๋ฏธ ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ํจํค์ง 'linearmodels'์์๋ ์์์ 'TimeEffects'๋ฅผ ์ถ๊ฐํ๊ณ 'cluster_time'์ true๋ก ์ค์ ํ ์ ์์ด์, ๋งค์ฐ ๊ฐ๋จํ๊ฒ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
mod = PanelOLS.from_formula("lwage ~ expersq+union+married+hours+EntityEffects+TimeEffects",
data=data.set_index(["nr", "year"]))
result = mod.fit(cov_type='clustered', cluster_entity=True, cluster_time=True) #๐ก
result.summary.tables[1]
โช ๊ฒฐํผ์ด ์๊ธ์ ๋ฏธ์น๋ ์ํฅ์ด '0.1147'์์ '0.0476'์ผ๋ก ํฌ๊ฒ ๊ฐ์. ๊ทธ๋๋ ํด๋น ๊ฒฐ๊ณผ๋ 99% ์ ๋ขฐ ์์ค์์ ์ ์๋ฏธํ๋ฏ๋ก ๋จ์๋ ์ฌ์ ํ ๊ฒฐํผ์ผ๋ก ์ธํ ์์ ์ฆ๊ฐ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค.
โฆ When panel data won't help you
โฏ ํจ๋ ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ์ด๋ ค์ด ๊ฒฝ์ฐ
• ๋๋ค ๋ฐ์ดํฐ๋ ์ธ๊ณผ์ถ๋ก ์ ์ํ ๋ง๋ ํ ๋ฐฉ๋ฒ์ด ์์ ๋, fixed effects ๋ ๋น์คํ ๋ฐ์ดํฐ๋ก ์ธ๊ณผ์ถ๋ก ์ ํ ๋๋งํผ ์ค๋๋ ฅ์ด ์กด์ฌํ๋ค. ๊ทธ๋๋ ์ธ์ ๋ ์ ์ฉ๋ ์ ์๋ ๋ง๋ณ ํต์น์ฝ์ ์๋๋ค. ํจ๋ ๋ฐ์ดํฐ์กฐ์ฐจ ๋์์ด ๋์ง ์๋ ์ํฉ์ด ์๊ธฐ ๋ง๋ จ์ด๋ค. ๋ถ๋ช ํ ๊ฒ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณํ๋ ๊ด์ธก๋์ง ์๋ ๊ต๋๋ณ์ (ex. ์ง๋ฅ) ๊ฐ ์์ ๋์ด๋ค. ๊ณ ์ ํจ๊ณผ๋ ๊ฐ ๋์์ ์ผ์ ํ ์์ฑ์ ๋ํด์๋ง ํธํฅ์ ์ ๊ฑฐํ ์ ์๋ค.
• ๊ณ ์ ํจ๊ณผ๊ฐ ์คํจํ๋ ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ์ญ์ธ๊ณผ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ๋ค. ์๋ฅผ๋ค์ด ๊ฒฐํผ์ ํ๋ค๊ณ ํด์ ์์ ์ด ๋์ด๋๋ ๊ฒ์ ์๋๋ผ๊ณ ๊ฐ์ ํด๋ณด์. ์์ ์ด ๋์ด๋๋ฉด ๊ฒฐํผํ ํ๋ฅ ์ด ๋์์ง๋ค. ์์ ์๊ด์ฑ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์์ ์ด ๋จผ์ ์ ํ๋์ด์ผ ํ๋ค. ํด๋น ๋ณ์๋ค์ ์๊ฐ์ ๋ฐ๋ผ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ๋ณํ ๊ฒ์ด๋ฏ๋ก, ๊ณ ์ ํจ๊ณผ๋ก๋ ์๊ฐ์ ๋ณํ์ ๋ํ ํต์ ๋ฅผ ํ ์ ์๋ค.
'1๏ธโฃ AIโขDS > ๐ฅ Casual inference' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ธ๊ณผ์ถ๋ก ์ ๋ฐ์ดํฐ ๊ณผํ_2023 - week1. ๋น ๋ฐ์ดํฐ, AI ์๋์์์ ์ธ๊ณผ์ถ๋ก (0) | 2024.01.05 |
---|---|
two-way fixed effects model (0) | 2023.08.14 |
[The Brave and True] 13. Difference-in-Differences (0) | 2023.07.20 |
[The Brave and True] 12. Doubly Robust Estimation (0) | 2023.07.14 |
[The Brave and True] 11. Propensity score (0) | 2023.07.13 |
๋๊ธ