<aside> 💡 실습 목표
실습 데이터: new.dta
</aside>
이제까지 배운 내용은 다음과 같습니다:
오늘은 2일차 내용을 복습하고, 단순선형회귀분석에서 나타날 수 있는 문제점을 진단하고 (간단하게 해결할 수 있는 것들을) 해결하는 방법을 연습하겠습니다. 어제 다른 이름으로 저장해 둔 데이터(new.dta)를 열어 주세요.
<aside> 🧑🏻💻 복습
1) 가설 A를 단순선형회귀분석을 통해 검정하세요. 분석 결과는 m1으로 저장하세요.
reg life_satis free_choice
est store m1
2) marginsplot을 그려보세요.
margins, at(free_choice = (0 (1) 10))
marginsplot, recast(line) recastci(rarea) xlabel(0 "전혀 자유롭지 않다" 5 "보통" 10 "매우 자유롭다", labsize(vsmall))
3) 가설 B 또한 분석하고, 결과는 m2라는 이름으로 저장해 주세요.
reg resp_opinion affect_dis
est store m2
</aside>
<aside> 🧑🏻💻 4) marginsplot을 그려보세요.
margins, at(affect_dis=(1 (1) 5))
marginsplot, recast(line) recastci(rarea) xlabel(, labsize(small))
5) coefplot을 그려보세요. 이때 앞에서 저장해 두었던 m1, m2를 이용하여 두 모형의 분석 결과를 한 그림에 표현해 봅시다. 또한 drop(_cons) 옵션을 통해 상수항은 그래프에서 제외해 주세요.
coefplot **m1 m2**, xline(0) **drop(_cons)** ciopts(recast(rcap))
6) outreg2 명령어를 사용하여 두 모형의 분석 결과를 한 번에 워드 파일로 내보내 봅시다(힌트: outreg2 명령어 다음에 저장된 추정치 [m1 m2] 넣어주시면 됩니다). 이때 replace 옵션을 사용하여 기존의 results 워드 파일 내용을 현 분석 결과로 대체합니다.
outreg2 [m1 m2] using results, word replace
</aside>
앞서 가설 A와 B를 OLS 선형회귀분석으로 테스트했습니다. 그렇다면 OLS의 기본 가정이 위배되었는지를 확인해 보겠습니다.
<aside> 📌 Remind: OLS 선형회귀분석의 현실적인 가정
<aside> 🧑🏻💻 등분산성 위반
등분산성이란? 잔차의 분포가 독립변수와 관계 없음을 의미. 즉, 오차항의 분산이 x의 값에 관계없이 일정하다.
(1) 시각적으로 판단하는 방법: 잔차 변수를 만들고, 잔차와 독립변수 간 산점도 그리기
reg life_satis free_choice
// 먼저 가설 A부터 살펴보도록 하겠습니다.
predict r, residual
// r이라는 이름을 가진 잔차 변수를 만들어 주세요.
twoway scatter r free_choice, yline(0)
// 용이한 판단을 위한 yline(0) 옵션
rvpplot free_choice, yline(0)
// (residual-versus-predictor)
rvfplot, yline(0)
// (residual-versus-fitted)
</aside>
<aside> 🧑🏻💻 등분산성 위반
(2) 이분산성/등분산성 검정: Breusch–Pagan test; White test
<aside> 👉 원리: Run regression → Keep residual and make squared errors → Estimate a new regression using the squared errors as Y (즉 오차의 분산을 X가 설명하는지 확인) $e^2_i= \beta_0 + \beta_1X_i + \delta_i$ ⇒ H0: Homoscedasticity
</aside>
hettest
// 잔차 normal분포 가정
imtest, white
// unrestricted (잔차 분포의 왜도, 첨도 또한 함께 확인)
</aside>
일반적인 회귀분석에서 등분산성 가정이 위반되는 경우, robust 옵션을 통해 보수적인 가설 검정을 하는 편이 좋습니다 (e.g. reg Y X**, robust**
)
<aside> 🧑🏻💻 정규분포 위반
kdensity r, normal
</aside>
<aside> 🧑🏻💻 독립변수와 오차의 독립성
누락변수가 있거나 관계 없는 변수가 모형에 포함되어 있는 경우, model specification error가 있을 수 있습니다. 이때 사용할 수 있는 명령어는 다음과 같습니다:
linktest
ovtest
⇒ linktest와 ovtest의 원리는 예측 값들을 가지고 만든 새로운 변수를 모형에 추가하여 이 새로운 변수가 유의한지를 확인함으로써 잔차가 정말로 모형에 의해 설명되고 남은 “찌꺼기”인지를 보는 것입니다. 만약 새로운 변수가 유의하다면 잔차에 추가적으로 더 설명될 여지가 있다, 즉 “누락 변수”가 있다는 걸 의미합니다.
Regression with Stata Chapter 2 - Regression Diagnostics
더 자세한 설명을 원한다면, 위 사이트를 참고해 주세요.
</aside>