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

STATA로 계량경제학 모델 구축하기
🎓 데이터를 경제학적 언어로 번역하는 마법 같은 여정 ✨
🚀 들어가며 — STATA, 왜 계량경제학자들이 사랑할까?
안녕! 오늘은 계량경제학(Econometrics)의 세계로 같이 빠져볼 거야. 그것도 STATA라는 강력한 통계 소프트웨어를 들고서! 😎
STATA는 1985년에 처음 등장한 이후로 경제학자, 사회과학자, 의학 연구자들 사이에서 꾸준히 사랑받아온 소프트웨어야. 특히 패널 데이터 분석이나 도구변수 추정 같은 고급 계량경제학 기법에서는 타의 추종을 불허하는 성능을 보여줘.
"R이나 Python이 있는데 왜 STATA를 써?"라고 물을 수 있어. 좋은 질문이야! STATA는 명령어 문법이 직관적이고, 계량경제학 특화 명령어들이 풍부하게 내장되어 있어서 복잡한 패키지 설치 없이도 바로 분석에 들어갈 수 있거든. 학술 논문에서도 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 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 | 비선형항 추가 |
🔧 3단계: 내생성 문제와 도구변수(IV) 추정
OLS의 가장 큰 적은 바로 내생성(Endogeneity)이야. 내생성이 있으면 OLS 추정량이 편향(biased)되고 일치성(consistency)도 잃어버려. 😱
내생성의 주요 원인은 세 가지야:
도구변수(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
도구변수가 약한지(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: 도구변수 외생성 검정
🎲 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 계수는 로그 오즈비(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: 오차항이 로지스틱 분포 → 오즈비 해석 가능, 계산 편리
- 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 추정 |
🌟 실전 예제 — 임금 결정요인 완전 분석
지금까지 배운 내용을 종합해서 실제 분석 흐름을 보여줄게! 📊
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이면 고정효과 모델이 적절한 선택이야.
💡 계량경제학 분석 시 흔한 실수들
마지막으로, 계량경제학 분석에서 자주 저지르는 실수들을 정리해줄게. 이걸 알면 논문 심사나 발표에서 당황하지 않을 수 있어! 😅
margins, dydx(*)로 한계효과를 계산해서 해석해야 해.robust, 패널 데이터면 cluster(id), 시계열이면 HAC 표준오차를 사용해야 해. 잘못된 표준오차는 잘못된 추론으로 이어져.🎓 마무리하며
STATA를 이용한 계량경제학 분석, 어떠셨어? 처음엔 복잡해 보이지만 하나씩 따라가다 보면 분명히 익숙해질 거야! 💪
계량경제학의 핵심은 올바른 모델 선택과 가정의 검증이야.
아무리 멋진 명령어를 써도 모델의 가정이 위반되면 결과는 의미가 없어.
데이터를 이해하고 → 적절한 모델을 선택하고 → 가정을 검증하고 → 결과를 정확히 해석하는 이 흐름을 항상 기억해줘! 📊✨
분석하다가 막히는 부분이 있으면 STATA 공식 도움말(help 명령어)이나 Statalist 포럼을 적극 활용해봐. 그리고 계량경제학 교재로는 Wooldridge의 Introductory Econometrics가 STATA 예제와 함께 정말 잘 설명되어 있으니 강력 추천! 📚
댓글 0
지식인의 숲 - 지적 재산권 보호 고지
지적 재산권 보호 고지
- 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
- AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
- 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
- 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
- AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

댓글 작성
이 글에 대한 여러분의 생각을 들려주세요
로그인이 필요합니다
댓글을 작성하려면 먼저 로그인해주세요.