콘텐츠 대표 이미지 - STATA로 계량경제학 모델 구축하기
📊 통계/분석 · 문서작성

STATA로 계량경제학 모델 구축하기

🎓 데이터를 경제학적 언어로 번역하는 마법 같은 여정 ✨

🚀 들어가며 — STATA, 왜 계량경제학자들이 사랑할까?

안녕! 오늘은 계량경제학(Econometrics)의 세계로 같이 빠져볼 거야. 그것도 STATA라는 강력한 통계 소프트웨어를 들고서! 😎

STATA는 1985년에 처음 등장한 이후로 경제학자, 사회과학자, 의학 연구자들 사이에서 꾸준히 사랑받아온 소프트웨어야. 특히 패널 데이터 분석이나 도구변수 추정 같은 고급 계량경제학 기법에서는 타의 추종을 불허하는 성능을 보여줘.

"R이나 Python이 있는데 왜 STATA를 써?"라고 물을 수 있어. 좋은 질문이야! STATA는 명령어 문법이 직관적이고, 계량경제학 특화 명령어들이 풍부하게 내장되어 있어서 복잡한 패키지 설치 없이도 바로 분석에 들어갈 수 있거든. 학술 논문에서도 STATA 결과물을 그대로 쓸 수 있을 만큼 출력 형식도 깔끔해. 📄

💡 STATA 버전 참고: 이 글에서는 STATA 17/18 기준으로 설명할게. 대부분의 명령어는 구버전에서도 동일하게 작동해!
계량경제학 분석의 흐름 ① 데이터 수집·정제 ② 모델 설정 ③ 추정 OLS·IV·패널 ④ 검정 가정 확인 ⑤ 해석 결과 보고 STATA가 담당하는 영역 데이터 정제 → 모델 추정 → 검정 → 출력까지 원스톱 처리! 핵심 명령어 한눈에 보기 regress xtreg ivregress probit/logit xtabond2 estat 계량경제학의 모든 단계를 STATA 하나로! 🎯

📁 1단계: 데이터 불러오기와 기초 탐색

계량경제학 분석의 첫 번째 관문은 데이터야. 아무리 멋진 모델을 세워도 데이터가 엉망이면 결과도 엉망이거든. "Garbage in, garbage out"이라는 말 들어봤지? 😅

STATA에서 데이터를 다루는 기본 명령어들을 살펴보자.

데이터 불러오기

* CSV 파일 불러오기
import delimited "data.csv", clear

* Excel 파일 불러오기
import excel "data.xlsx", sheet("Sheet1") firstrow clear

* STATA 형식(.dta) 불러오기
use "data.dta", clear

* 웹에서 직접 불러오기
use "https://example.com/data.dta", clear

기초 탐색 명령어

데이터를 불러왔으면 바로 분석에 뛰어들고 싶겠지만, 잠깐! 먼저 데이터가 어떻게 생겼는지 파악하는 게 중요해. 🔍

* 데이터 구조 확인
describe          // 변수 목록, 타입, 레이블 확인
codebook          // 각 변수의 상세 정보
browse            // 데이터 뷰어 열기

* 기초 통계량
summarize                    // 모든 변수 기초통계
summarize wage educ exper    // 특정 변수만
summarize wage, detail       // 분위수 포함 상세 통계

* 변수 분포 확인
tabulate industry            // 범주형 변수 빈도표
histogram wage, normal       // 히스토그램 + 정규분포 곡선
kdensity wage                // 커널 밀도 추정

* 상관관계 확인
correlate wage educ exper tenure
pwcorr wage educ exper, sig  // p-value 포함
📌 summarize 결과 읽는 법

summarize wage를 실행하면 나오는 출력값:
- Obs: 관측치 수 (결측값 제외)
- Mean: 평균값
- Std. Dev.: 표준편차
- Min / Max: 최솟값 / 최댓값

detail 옵션을 추가하면 1%, 5%, 10%, 25%, 50%, 75%, 90%, 95%, 99% 분위수까지 확인 가능해!

데이터 정제 — 분석 전 필수 작업

* 결측값 확인
misstable summarize
misstable patterns    // 결측 패턴 확인

* 이상치 처리
winsor2 wage, cuts(1 99)    // 상하위 1% 윈저화
replace wage = . if wage < 0  // 음수 임금 결측 처리

* 변수 생성
generate ln_wage = log(wage)         // 로그 변환
generate exper_sq = exper^2          // 제곱항 생성
generate female_educ = female * educ // 상호작용항

* 레이블 붙이기
label variable ln_wage "로그 임금"
label define gender_lbl 0 "남성" 1 "여성"
label values female gender_lbl
💡 로그 변환은 왜 할까?
임금(wage)처럼 오른쪽으로 치우친(right-skewed) 분포를 가진 변수는 로그 변환을 하면 정규분포에 가까워져. 또한 로그-선형 모델에서 계수는 탄력성(elasticity)으로 해석할 수 있어서 경제학적으로 의미 있는 해석이 가능해!

📐 2단계: OLS 회귀분석 — 계량경제학의 기본기

계량경제학의 꽃이자 기본 중의 기본, OLS(Ordinary Least Squares, 최소자승법)야! 🌸

OLS는 잔차(residual)의 제곱합을 최소화하는 방식으로 회귀계수를 추정해. 수식으로 쓰면 이렇게 돼:

기본 회귀 모델

Y = β₀ + β₁X₁ + β₂X₂ + ... + βₖXₖ + ε

여기서:
- Y: 종속변수 (피설명변수)
- X₁...Xₖ: 독립변수 (설명변수)
- β₀: 절편(상수항)
- β₁...βₖ: 회귀계수
- ε: 오차항 (우리가 설명 못 하는 부분)

STATA에서 OLS 실행하기

* 기본 OLS 회귀
regress ln_wage educ exper exper_sq female

* 강건 표준오차 (Robust Standard Errors)
regress ln_wage educ exper exper_sq female, robust

* 클러스터 표준오차
regress ln_wage educ exper exper_sq female, cluster(industry)

* 결과 저장
estimates store model1

* 여러 모델 비교 출력 (esttab 패키지 필요)
esttab model1 model2 model3, star(* 0.1 ** 0.05 *** 0.01)

OLS 결과 해석하기 🔍

STATA의 regress 결과창을 처음 보면 숫자들이 쏟아져서 당황할 수 있어. 하나씩 뜯어보자!

출력 항목 의미 해석 방법
Coef. 회귀계수 (β) X가 1단위 증가할 때 Y의 변화량
Std. Err. 표준오차 추정의 불확실성 (작을수록 정밀)
t t-통계량 Coef. / Std. Err.
P>|t| p-값 0.05 미만이면 5% 유의수준에서 유의
R-squared 결정계수 모델이 Y의 변동을 설명하는 비율
Adj. R-sq 수정 결정계수 변수 수를 고려한 R²
F-stat F-통계량 모든 계수가 0이라는 귀무가설 검정
🎯 실제 해석 예시

regress ln_wage educ exper female 결과에서:

- educ 계수 = 0.082: 교육연수가 1년 증가하면 임금이 약 8.2% 증가 (로그-선형 모델이므로)
- female 계수 = -0.241: 여성은 남성에 비해 임금이 약 24.1% 낮음
- R² = 0.312: 이 모델이 임금 변동의 약 31.2%를 설명

⚠️ 로그-선형 모델에서 더미변수의 정확한 % 효과는 exp(β) - 1로 계산해야 해!
female: exp(-0.241) - 1 ≈ -0.214, 즉 약 21.4% 낮음

OLS 가정 검정 — 이게 진짜 중요해! ⚠️

OLS가 BLUE(Best Linear Unbiased Estimator)가 되려면 가우스-마르코프 가정을 만족해야 해. 이 가정들을 검정하는 게 계량경제학의 핵심 작업이야!

* 1. 이분산성 검정 (Heteroskedasticity)
estat hettest          // Breusch-Pagan 검정
estat imtest, white    // White 검정

* 2. 자기상관 검정 (Autocorrelation) - 시계열 데이터
estat dwatson          // Durbin-Watson 검정
estat bgodfrey         // Breusch-Godfrey 검정

* 3. 정규성 검정 (Normality of residuals)
predict resid, residuals
sktest resid           // Skewness-Kurtosis 검정
swilk resid            // Shapiro-Wilk 검정

* 4. 다중공선성 검정 (Multicollinearity)
vif                    // Variance Inflation Factor

* 5. 함수형태 검정 (Functional Form)
estat ovtest           // Ramsey RESET 검정

* 6. 잔차 플롯
rvfplot, yline(0)      // 잔차 vs 적합값
avplot educ            // Added Variable Plot
검정 귀무가설 (H₀) 기준 위반 시 해결책
Breusch-Pagan 등분산성 성립 p > 0.05 robust 옵션 사용
Durbin-Watson 자기상관 없음 DW ≈ 2 HAC 표준오차
VIF 다중공선성 없음 VIF < 10 변수 제거·결합
RESET 함수형태 올바름 p > 0.05 비선형항 추가
OLS 가정 검정 체크리스트 🔍 1 선형성 (Linearity) 모델이 파라미터에 대해 선형 estat ovtest (RESET) 2 등분산성 (Homoskedasticity) 오차항의 분산이 일정 estat hettest / imtest 3 무자기상관 (No Autocorrelation) 오차항 간 상관관계 없음 estat dwatson / bgodfrey 4 비다중공선성 독립변수 간 완전 선형독립 vif (VIF < 10) 5 외생성 (Exogeneity) E(ε|X) = 0 성립 이론적 검토 + Hausman test 6 정규성 (Normality) 오차항이 정규분포 따름 swilk resid / sktest 모든 가정을 만족해야 OLS 추정량이 BLUE(최량선형불편추정량)가 돼! ✨

🔧 3단계: 내생성 문제와 도구변수(IV) 추정

OLS의 가장 큰 적은 바로 내생성(Endogeneity)이야. 내생성이 있으면 OLS 추정량이 편향(biased)되고 일치성(consistency)도 잃어버려. 😱

내생성의 주요 원인은 세 가지야:

1
누락변수 편향 (Omitted Variable Bias): 중요한 변수를 모델에 포함하지 못했을 때. 예를 들어 임금 회귀에서 '능력(ability)'을 관측할 수 없어서 빠뜨리면 교육의 계수가 편향돼.
2
역인과관계 (Reverse Causality): X가 Y에 영향을 주는 동시에 Y도 X에 영향을 줄 때. 예: 경찰 수 ↔ 범죄율.
3
측정오차 (Measurement Error): 독립변수가 부정확하게 측정될 때. 고전적 측정오차는 계수를 0 쪽으로 편향시켜 (감쇠 편향, attenuation bias).

도구변수(IV) 추정 — 내생성의 해결사

도구변수(Instrumental Variable)는 두 가지 조건을 만족해야 해:

✅ 좋은 도구변수의 조건

1. 관련성 (Relevance): 도구변수 Z가 내생변수 X와 강하게 상관되어야 함
→ Cov(Z, X) ≠ 0

2. 외생성 (Exogeneity / Exclusion Restriction): 도구변수 Z가 오차항과 무관해야 함
→ Cov(Z, ε) = 0

쉽게 말하면: Z는 X를 통해서만 Y에 영향을 줘야 해!
* 2SLS (Two-Stage Least Squares) 추정
* 예: 교육(educ)이 내생변수, 아버지 교육(fatheduc)이 도구변수

ivregress 2sls ln_wage exper (educ = fatheduc motheduc), robust

* GMM 추정 (더 효율적)
ivregress gmm ln_wage exper (educ = fatheduc motheduc), robust

* 도구변수 강도 검정 (First Stage F-statistic)
estat firststage

* 과대식별 검정 (Sargan-Hansen J 검정)
* 도구변수가 2개 이상일 때 외생성 검정
estat overid

* Hausman 검정 (내생성 존재 여부 확인)
* OLS vs IV 추정량 비교
hausman iv_estimates ols_estimates
🎯 First Stage F-통계량 해석

도구변수가 약한지(weak instrument) 확인하는 핵심 지표야!

- F > 10: 강한 도구변수 (일반적 기준)
- F > 16.38: Stock-Yogo 기준 (5% 편향 허용 시)
- F < 10: 약한 도구변수 → 추정량이 OLS만큼 편향될 수 있음 ⚠️

약한 도구변수 문제가 있으면 LIML(Limited Information Maximum Likelihood)이나 Fuller 추정량을 고려해봐!
* LIML 추정 (약한 도구변수에 더 강건)
ivregress liml ln_wage exper (educ = fatheduc motheduc), robust

* 약한 도구변수 강건 추정 (Anderson-Rubin 검정)
weakivtest    // weakiv 패키지 필요

* 2SLS 수동 실행 (이해를 위해)
* 1단계: 내생변수를 도구변수에 회귀
regress educ fatheduc motheduc exper
predict educ_hat, xb

* 2단계: 예측값으로 대체하여 회귀
regress ln_wage educ_hat exper
💡 유명한 도구변수 사례들
- Angrist & Krueger (1991): 출생 분기(Quarter of Birth)를 교육의 도구변수로 사용
- Card (1995): 대학 근접성(College Proximity)을 교육의 도구변수로 사용
- Acemoglu et al. (2001): 정착민 사망률을 제도 질의 도구변수로 사용
좋은 도구변수 찾기가 계량경제학의 예술이야! 🎨

📊 4단계: 패널 데이터 분석 — STATA의 진짜 강점

패널 데이터(Panel Data)는 여러 개체(개인, 기업, 국가)를 여러 시점에 걸쳐 관측한 데이터야. STATA는 패널 분석에서 특히 강력한 성능을 발휘해! 💪

패널 데이터의 장점은 개체별 고정된 특성(개인 능력, 기업 문화 등)을 통제할 수 있다는 거야. 이게 바로 고정효과(Fixed Effects)의 핵심이야!

패널 데이터 설정

* 패널 데이터 선언 (개체 ID: id, 시간 변수: year)
xtset id year

* 패널 구조 확인
xtdescribe    // 균형/불균형 패널 확인
xtsum wage educ  // 개체 내(within) vs 개체 간(between) 변동 분해

* 시계열 연산자 활용
generate d_wage = d.wage      // 1차 차분
generate l_wage = l.wage      // 1기 시차
generate f_wage = f.wage      // 1기 선행

고정효과 vs 확률효과 모델

* 합동 OLS (Pooled OLS) - 패널 구조 무시
regress ln_wage educ exper female, cluster(id)

* 고정효과 모델 (Fixed Effects, FE)
xtreg ln_wage educ exper, fe

* 확률효과 모델 (Random Effects, RE)
xtreg ln_wage educ exper female, re

* 일원 고정효과 (개체 고정효과)
areg ln_wage educ exper, absorb(id) robust

* 이원 고정효과 (개체 + 시간 고정효과)
reghdfe ln_wage educ exper, absorb(id year) vce(cluster id)
* reghdfe 패키지 필요: ssc install reghdfe

하우스만 검정 — FE vs RE 선택

* 고정효과 추정 후 저장
xtreg ln_wage educ exper, fe
estimates store fe_model

* 확률효과 추정 후 저장
xtreg ln_wage educ exper, re
estimates store re_model

* 하우스만 검정
hausman fe_model re_model

* 결과 해석:
* H₀: RE가 일치추정량 (개체효과와 설명변수 무관)
* p < 0.05 → H₀ 기각 → FE 사용
* p > 0.05 → H₀ 채택 → RE 사용 가능
모델 가정 장점 단점
고정효과 (FE) 개체효과와 X 상관 허용 내생성 통제 강력 시불변 변수 추정 불가
확률효과 (RE) 개체효과와 X 무관 시불변 변수 추정 가능 가정 위반 시 편향
합동 OLS 개체효과 없음 단순, 직관적 표준오차 과소추정
이원 FE 개체+시간 효과 통제 시간 트렌드 통제 자유도 감소

동적 패널 모델 — Arellano-Bond GMM

종속변수의 시차값이 설명변수로 들어가는 동적 패널 모델은 내생성 문제가 심각해. 이때 사용하는 게 Arellano-Bond GMM 추정이야!

* xtabond2 패키지 설치
ssc install xtabond2

* Arellano-Bond (Difference GMM)
xtabond2 ln_wage l.ln_wage educ exper, ///
    gmm(l.ln_wage, lag(2 4)) ///
    iv(educ exper) ///
    robust twostep

* Blundell-Bond (System GMM) - 더 효율적
xtabond2 ln_wage l.ln_wage educ exper, ///
    gmm(l.ln_wage, lag(2 4)) ///
    iv(educ exper) ///
    robust twostep ///
    h(2)    // System GMM

* 검정 통계량 확인
* AR(1): 1차 자기상관 (있어야 정상)
* AR(2): 2차 자기상관 (없어야 정상)
* Hansen J: 도구변수 외생성 검정
패널 데이터 모델 선택 가이드 🗺️ 패널 데이터 분석 시작 개체효과와 설명변수 간 상관관계 있음? 고정효과 (FE) xtreg ..., fe 아니오 시불변 변수 추정 필요? 확률효과 (RE) xtreg ..., re 아니오 이원 고정효과 reghdfe ..., absorb(id year) 🔑 하우스만 검정 FE vs RE 선택 기준 hausman fe re

🎲 5단계: 이산선택 모델 — Probit & Logit

종속변수가 0 또는 1인 이진(binary) 변수일 때는 OLS 대신 Probit이나 Logit 모델을 써야 해. 예를 들어 "취업 여부", "대출 승인 여부", "투표 참여 여부" 같은 경우야! 🗳️

OLS를 쓰면 예측값이 0~1 범위를 벗어날 수 있고, 이분산성이 필연적으로 발생해. 그래서 최대우도추정(MLE)을 사용하는 Probit/Logit이 필요해.

* Logit 모델
logit employed educ exper female married, robust

* Probit 모델
probit employed educ exper female married, robust

* 한계효과 계산 (매우 중요!)
* 평균에서의 한계효과 (MEM)
margins, dydx(*) atmeans

* 평균 한계효과 (AME) - 더 선호됨
margins, dydx(*)

* 특정 값에서의 예측 확률
margins, at(educ=12 exper=5 female=1 married=0)

* 한계효과 그래프
marginsplot
⚠️ Logit/Probit에서 계수를 직접 해석하면 안 돼!

Logit 계수는 로그 오즈비(log odds ratio)의 변화량이고,
Probit 계수는 잠재변수(latent variable)에 대한 효과야.

실질적인 해석을 위해서는 반드시 한계효과(Marginal Effects)를 계산해야 해!

- AME (Average Marginal Effect): 각 관측치에서 한계효과를 계산한 후 평균 → 가장 많이 사용
- MEM (Marginal Effect at the Mean): 모든 변수를 평균값으로 고정 후 한계효과 계산
* 오즈비(Odds Ratio) 출력 - Logit에서
logit employed educ exper female, or

* 예측 확률 저장
predict prob_employed, pr

* 분류 정확도 확인
estat classification

* ROC 곡선
lroc

* 적합도 검정
estat gof    // Hosmer-Lemeshow 검정

* 다항 로짓 (종속변수가 3개 이상 범주)
mlogit occupation educ exper female, baseoutcome(1)
margins, dydx(*) predict(outcome(2))

* 순서형 로짓 (종속변수가 순서 있는 범주)
ologit satisfaction income educ age
margins, dydx(*)
💡 Logit vs Probit 어떤 걸 써야 해?
실제로 두 모델의 한계효과 결과는 거의 동일해! 차이는 분포 가정에 있어:
- Logit: 오차항이 로지스틱 분포 → 오즈비 해석 가능, 계산 편리
- Probit: 오차항이 정규분포 → 경제학에서 이론적으로 선호
경제학 논문에서는 Probit을 더 많이 쓰는 경향이 있어!

⏰ 6단계: 시계열 분석 기초

GDP, 물가, 환율처럼 시간에 따라 변하는 데이터를 다룰 때는 시계열 분석이 필요해. 시계열 데이터는 자기상관이 있어서 일반 OLS를 그냥 쓰면 안 돼! 📈

* 시계열 데이터 선언
tsset time    // 연도별
tsset time, quarterly    // 분기별
tsset time, monthly      // 월별

* 단위근 검정 (Stationarity Test)
dfuller gdp              // Augmented Dickey-Fuller
dfuller gdp, trend       // 추세 포함
pperron gdp              // Phillips-Perron 검정
kpss gdp                 // KPSS 검정 (귀무가설이 반대)

* 차분으로 정상화
generate d_gdp = d.gdp
generate d2_gdp = d2.gdp    // 2차 차분

* 자기상관 확인
ac gdp, lags(20)    // 자기상관함수 (ACF)
pac gdp, lags(20)   // 편자기상관함수 (PACF)

* ARIMA 모델
arima gdp, arima(1,1,1)    // ARIMA(p,d,q)
arima gdp, arima(2,1,0)    // AR(2) with 1차 차분

* 예측
predict gdp_forecast, dynamic(tq(2020q1))

공적분과 VAR 모델

* 공적분 검정 (Cointegration Test)
* 두 비정상 시계열이 장기 균형 관계를 가지는지 검정
vecrank gdp consumption, trend(constant) max

* VECM (Vector Error Correction Model)
vec gdp consumption, trend(constant) rank(1)

* VAR (Vector Autoregression) 모델
var gdp inflation interest, lags(1/4)

* 최적 시차 선택
varsoc gdp inflation interest, maxlag(8)

* 충격반응함수 (Impulse Response Function)
irf create myirf, set(myirf) step(10)
irf graph oirf, impulse(interest) response(gdp)

* 분산분해 (Forecast Error Variance Decomposition)
irf graph fevd
📌 단위근 검정 결과 해석

ADF 검정:
- H₀: 단위근 존재 (비정상 시계열)
- p < 0.05 → H₀ 기각 → 정상 시계열
- p > 0.05 → H₀ 채택 → 비정상 → 차분 필요

KPSS 검정 (귀무가설이 반대!):
- H₀: 정상 시계열
- p < 0.05 → H₀ 기각 → 비정상 시계열

두 검정을 함께 사용해서 결론을 내리는 게 좋아!

🎯 7단계: 준실험적 방법론 — 인과추론의 꽃

현대 계량경제학의 트렌드는 단순한 상관관계를 넘어 인과관계(Causality)를 밝히는 거야. 이를 위한 준실험적(quasi-experimental) 방법론들을 살펴보자! 🔬

이중차분법 (Difference-in-Differences, DiD)

정책 처치 전후, 처치집단과 통제집단의 차이를 비교하는 방법이야. 2021년 노벨 경제학상을 받은 Card, Angrist, Imbens의 연구에서 핵심적으로 사용된 방법이기도 해! 🏆

* 기본 DiD 설정
* treat: 처치집단 더미 (1=처치, 0=통제)
* post: 처치 후 더미 (1=처치 후, 0=처치 전)
* treat_post: 상호작용항 (DiD 추정량)

generate treat_post = treat * post

* 기본 DiD 회귀
regress outcome treat post treat_post, robust

* 고정효과 DiD (패널 데이터)
reghdfe outcome treat_post, absorb(id year) vce(cluster id)

* 이벤트 스터디 (Event Study) - 평행 추세 가정 검증
* 처치 전 기간에 처치효과가 없어야 함
forvalues t = -4(1)4 {
    generate event_`t' = (year - treat_year == `t') * treat
}
reghdfe outcome event_* if year != treat_year - 1, ///
    absorb(id year) vce(cluster id)
coefplot, vertical yline(0)

회귀불연속 설계 (Regression Discontinuity Design, RDD)

* RDD 패키지 설치
ssc install rdrobust
ssc install rddensity

* 기본 RDD 추정
* cutoff: 임계값 (예: 시험 합격선 60점)
rdrobust outcome score, c(60)

* 최적 대역폭 선택
rdbwselect outcome score, c(60)

* 조작 검정 (Manipulation Test)
rddensity score, c(60)
rddensity score, c(60) plot

* RDD 그래프
rdplot outcome score, c(60) ///
    title("회귀불연속 설계") ///
    xtitle("점수") ytitle("결과변수")

성향점수매칭 (Propensity Score Matching, PSM)

* PSM 패키지 설치
ssc install psmatch2
ssc install teffects

* 성향점수 추정 및 매칭
psmatch2 treat educ exper female age, ///
    outcome(wage) ///
    neighbor(1) ///    // 1:1 최근접 매칭
    caliper(0.01) ///  // 캘리퍼 설정
    common             // 공통 지지 영역

* 매칭 후 균형 확인
pstest educ exper female age, both

* STATA 내장 teffects 명령어 (더 현대적)
teffects psmatch (wage) (treat educ exper female age), ///
    atet nneighbor(1)

* 역확률가중치 (IPW)
teffects ipw (wage) (treat educ exper female age), ///
    atet
🏆 인과추론 방법론 비교

DiD: 정책 시행 전후 데이터 필요, 평행 추세 가정 필요
RDD: 임계값 기반 처치, 임계값 근방에서만 국소적 추정
IV: 좋은 도구변수 필요, 국소 평균 처치효과(LATE) 추정
PSM: 관측 가능한 변수로 선택 편의 통제, 비관측 혼란변수 통제 불가

각 방법론은 서로 다른 가정과 장단점이 있어. 연구 설계에 맞는 방법을 선택하는 게 핵심이야!

📝 8단계: 결과 정리 및 논문용 표 만들기

분석이 끝났으면 이제 결과를 깔끔하게 정리해야 해. STATA에는 논문 품질의 표를 자동으로 만들어주는 패키지들이 있어! 📄

재능넷에서도 STATA 분석 결과 정리나 논문 통계 작업을 의뢰하는 경우가 많은데, 이 부분이 실무에서 정말 중요해.

* esttab 패키지 설치 (estout 패키지 포함)
ssc install estout

* 모델 추정 및 저장
regress ln_wage educ exper female, robust
estimates store m1

regress ln_wage educ exper exper_sq female married, robust
estimates store m2

xtreg ln_wage educ exper female, fe robust
estimates store m3

* 기본 표 출력
esttab m1 m2 m3

* 논문용 표 (상세 옵션)
esttab m1 m2 m3, ///
    star(* 0.1 ** 0.05 *** 0.01) ///  // 유의성 별표
    b(3) se(3) ///                     // 계수와 표준오차 소수점 3자리
    r2 ar2 ///                         // R² 포함
    scalars(F) ///                     // F-통계량 포함
    mtitles("기본모형" "확장모형" "고정효과") ///
    title("임금 결정요인 분석") ///
    label                              // 변수 레이블 사용

* Word 파일로 내보내기
esttab m1 m2 m3 using "results.rtf", ///
    replace ///
    star(* 0.1 ** 0.05 *** 0.01) ///
    b(3) se(3) r2

* LaTeX 파일로 내보내기
esttab m1 m2 m3 using "results.tex", ///
    replace booktabs ///
    star(* 0.1 ** 0.05 *** 0.01)

그래프 만들기

* 산점도 + 회귀선
twoway (scatter ln_wage educ) ///
       (lfit ln_wage educ), ///
       title("교육과 임금의 관계") ///
       xtitle("교육연수") ytitle("로그 임금") ///
       legend(off)

* 계수 플롯 (Coefficient Plot)
coefplot m1 m2 m3, ///
    drop(_cons) ///
    xline(0) ///
    title("회귀계수 비교")

* 한계효과 그래프 (Probit/Logit 후)
margins, dydx(educ) at(exper=(0(5)30))
marginsplot, ///
    title("교육의 한계효과 (경력별)") ///
    xtitle("경력(년)") ytitle("한계효과")

* 그래프 저장
graph export "figure1.png", replace width(1200)
graph export "figure1.pdf", replace
💡 논문 작성 시 체크리스트
✅ 기초통계량 표 (Table 1)
✅ 주요 변수 상관관계 행렬
✅ 회귀분석 결과 표 (여러 모델 비교)
✅ 강건성 검정 (Robustness Check) 결과
✅ 이분산성·자기상관 검정 결과
✅ 내생성 검정 및 처리 방법 명시
✅ 표본 선택 기준 및 결측값 처리 방법 기술

🛠️ 실전 팁 — STATA 고수들의 비법

do 파일 작성 — 재현 가능한 연구의 핵심

모든 분석은 반드시 do 파일로 작성해야 해! 나중에 수정이 필요하거나 다른 사람이 검토할 때 필수야. 재현 가능성(reproducibility)은 현대 과학의 핵심 가치거든. 🔄

/*
프로젝트: 임금 결정요인 분석
작성자: 홍길동
날짜: 2024-01-01
데이터: KLIPS 2022년도
*/

* 환경 설정
clear all
set more off
set seed 12345    // 재현 가능성을 위한 시드 설정

* 작업 디렉토리 설정
cd "C:/research/wage_analysis"

* 로그 파일 시작
log using "analysis_log.txt", replace text

* ===== 1. 데이터 불러오기 =====
use "klips2022.dta", clear

* ===== 2. 데이터 정제 =====
// 코드 작성...

* ===== 3. 기초 통계 =====
// 코드 작성...

* ===== 4. 회귀분석 =====
// 코드 작성...

* 로그 파일 종료
log close

유용한 단축키 & 팁

기능 방법 설명
이전 명령어 Page Up / Page Down 명령창에서 이전 명령어 불러오기
명령어 자동완성 Tab 키 변수명, 명령어 자동완성
줄 이어쓰기 /// 긴 명령어를 여러 줄로 분리
주석 처리 * 또는 // 한 줄 주석, /* */ 여러 줄 주석
반복 실행 forvalues / foreach 루프 명령어
조건부 실행 if / in 특정 조건/관측치만 분석
* 유용한 반복문 예시
* 여러 종속변수에 대해 동일한 회귀 실행
foreach var in wage income consumption {
    regress `var' educ exper female, robust
    estimates store `var'_model
}

* 여러 연도에 대해 분석
forvalues year = 2015(1)2022 {
    regress ln_wage educ exper if year == `year', robust
    estimates store model_`year'
}

* 결과 한번에 출력
esttab model_2015 model_2016 model_2017 model_2018, ///
    star(* 0.1 ** 0.05 *** 0.01) b(3) se(3)

자주 쓰는 외부 패키지 모음

패키지 설치 명령어 용도
estout ssc install estout 논문용 회귀표 생성
reghdfe ssc install reghdfe 고차원 고정효과 회귀
xtabond2 ssc install xtabond2 동적 패널 GMM
rdrobust ssc install rdrobust 회귀불연속 설계
psmatch2 ssc install psmatch2 성향점수매칭
coefplot ssc install coefplot 계수 시각화
winsor2 ssc install winsor2 이상치 처리
ivreg2 ssc install ivreg2 고급 IV 추정
계량경제학 모델 선택 가이드 🎯 상황 추천 모델 STATA 명령어 연속형 종속변수, 횡단면 OLS 회귀분석 regress 이진 종속변수 Probit / Logit probit / logit 패널 데이터 (개체 고정효과) 고정효과 모델 xtreg, fe 내생성 문제 존재 도구변수 추정 (2SLS) ivregress 2sls 정책 효과 분석 이중차분법 (DiD) reghdfe (FE DiD) 시계열 데이터 ARIMA / VAR arima / var

🌟 실전 예제 — 임금 결정요인 완전 분석

지금까지 배운 내용을 종합해서 실제 분석 흐름을 보여줄게! 📊
Mincer 임금 방정식을 기반으로 한 완전한 분석 예제야.

/*
==============================================
Mincer 임금 방정식 완전 분석 예제
==============================================
*/

clear all
set more off

* 데이터 불러오기 (STATA 내장 데이터 활용)
webuse nlswork, clear

* ===== 1. 데이터 탐색 =====
describe
summarize ln_wage grade ttl_exp tenure age, detail

* 결측값 확인
misstable summarize ln_wage grade ttl_exp tenure

* ===== 2. 변수 생성 =====
generate exp_sq = ttl_exp^2    // 경력 제곱항
generate tenure_sq = tenure^2  // 근속 제곱항

label variable exp_sq "경력(년)²"
label variable tenure_sq "근속(년)²"

* ===== 3. 기초 통계 및 상관관계 =====
summarize ln_wage grade ttl_exp exp_sq tenure
correlate ln_wage grade ttl_exp tenure

* ===== 4. OLS 회귀 (기본 Mincer 방정식) =====
regress ln_wage grade ttl_exp exp_sq tenure, robust
estimates store ols_basic

* OLS 가정 검정
estat hettest        // 이분산성
estat ovtest         // 함수형태
vif                  // 다중공선성

* ===== 5. 패널 고정효과 분석 =====
xtset idcode year

* 합동 OLS
regress ln_wage grade ttl_exp exp_sq tenure, cluster(idcode)
estimates store pooled

* 고정효과
xtreg ln_wage ttl_exp exp_sq tenure, fe robust
estimates store fe

* 확률효과
xtreg ln_wage grade ttl_exp exp_sq tenure, re robust
estimates store re

* 하우스만 검정
hausman fe re

* ===== 6. 결과 비교 표 =====
esttab ols_basic pooled fe re, ///
    star(* 0.1 ** 0.05 *** 0.01) ///
    b(3) se(3) r2 ///
    mtitles("OLS" "합동OLS" "고정효과" "확률효과") ///
    title("임금 결정요인 분석 결과") ///
    label
📊 결과 해석 예시

위 분석에서 고정효과 모델 결과를 해석하면:

- ttl_exp (경력): 경력 1년 증가 → 임금 약 X% 증가
- exp_sq (경력²): 음수 계수 → 경력의 임금 효과가 체감 (역U자형 관계)
- tenure (근속): 현 직장 근속 1년 증가 → 임금 약 Y% 증가

고정효과 모델은 개인의 관측 불가능한 특성(능력, 성격 등)을 통제하므로
OLS보다 더 신뢰할 수 있는 추정값을 제공해!

하우스만 검정에서 p < 0.05이면 고정효과 모델이 적절한 선택이야.

💡 계량경제학 분석 시 흔한 실수들

마지막으로, 계량경제학 분석에서 자주 저지르는 실수들을 정리해줄게. 이걸 알면 논문 심사나 발표에서 당황하지 않을 수 있어! 😅

R²만 보고 모델 평가하기: R²는 높다고 좋은 모델이 아니야. 변수를 무조건 많이 넣으면 R²는 올라가지만 과적합(overfitting)이 발생해. 수정 R²(Adjusted R²)와 이론적 근거를 함께 봐야 해.
p-값만으로 유의성 판단하기: p < 0.05라고 경제적으로 의미 있는 건 아니야. 표본이 크면 작은 효과도 통계적으로 유의하게 나와. 효과 크기(effect size)경제적 유의성을 함께 논의해야 해.
내생성 무시하기: "OLS 결과가 나왔으니 됐다"는 생각은 위험해. 내생성이 있으면 모든 추정값이 편향돼. 항상 내생성 가능성을 검토하고 적절한 방법으로 처리해야 해.
Logit/Probit 계수를 직접 해석하기: 앞서 말했지만 정말 중요해! 반드시 margins, dydx(*)로 한계효과를 계산해서 해석해야 해.
표준오차 처리 소홀히 하기: 이분산성이 있으면 robust, 패널 데이터면 cluster(id), 시계열이면 HAC 표준오차를 사용해야 해. 잘못된 표준오차는 잘못된 추론으로 이어져.
강건성 검정 생략하기: 주요 결과가 다른 표본, 다른 모델 설정, 다른 추정 방법에서도 유지되는지 확인해야 해. 강건성 검정 없이는 결과의 신뢰성을 주장하기 어려워.
💡 재능넷 활용 팁: STATA 분석이 어렵거나 논문 통계 작업이 필요하다면 재능넷에서 계량경제학 전문가를 찾아볼 수 있어! 데이터 분석부터 결과 해석, 논문용 표 작성까지 도움받을 수 있거든. 혼자 막히는 부분이 있을 때 전문가의 도움을 받는 것도 현명한 선택이야. 🤝

🎓 마무리하며

STATA를 이용한 계량경제학 분석, 어떠셨어? 처음엔 복잡해 보이지만 하나씩 따라가다 보면 분명히 익숙해질 거야! 💪

계량경제학의 핵심은 올바른 모델 선택가정의 검증이야.
아무리 멋진 명령어를 써도 모델의 가정이 위반되면 결과는 의미가 없어.

데이터를 이해하고 → 적절한 모델을 선택하고 → 가정을 검증하고 → 결과를 정확히 해석하는 이 흐름을 항상 기억해줘! 📊✨

분석하다가 막히는 부분이 있으면 STATA 공식 도움말(help 명령어)이나 Statalist 포럼을 적극 활용해봐. 그리고 계량경제학 교재로는 Wooldridge의 Introductory Econometrics가 STATA 예제와 함께 정말 잘 설명되어 있으니 강력 추천! 📚

댓글 작성

이 글에 대한 여러분의 생각을 들려주세요

댓글 0