<aside> 💡 실습 목표: 연습문제 [A]~[C]를 통해 다중회귀분석을 연습합니다.

실습 데이터: day3.dta

</aside>

1. 연습문제 [A] 삶에 대한 만족도

2-3일차에 아래의 가설을 단순선형회귀분석을 통해 테스트했습니다.

가설: 자신이 삶을 결정함에 있어 자유로운 정도가 높다고 인식할수록, 삶에 대한 전반적인 만족도가 높을 것이다.

종속변수: 삶에 대한 만족도(life_satis) ****

독립변수: 삶을 결정함에 있어서 자유로운 정도에 대한 인식 (free_choice)

3일차에는 회귀 진단을 통해 위 모형에 누락된 변수가 있음을 확인했습니다. 즉, 추정된 회귀계수에 편향이 있을 수 있습니다. 이때 종속변수에 영향을 미치는 통제변수들을 모형에 포함시키는 것이 한 가지 해결책이 될 수 있습니다. 특히 종속변수에 영향을 미치면서 동시에 독립변수와 상관이 있는 변수들을 누락시키지 말아야 합니다. 이를 고려하여 통제변수를 선정해 보았습니다.

통제변수들: 사회적 지위에 대한 인식(주관적 계층 인식) (SES), 성별 (d1), 연령 (d2), 작년 월평균 개인 소득 (d12_1), 이념 성향 (q25)

<aside> 🧑🏻‍💻 변수 전처리

모형에 포함시킬 통제변수들의 분포 및 기초통계를 살펴봅시다.

tab1 SES d1 d2 d12_1 q25 // 한번에 빈도표 출력

sum SES d1 d2 d12_1 q25

필요한 전처리를 해주세요. 데이터가 워낙 clean하기 때문에 변수명만 바꿔주면 될 것 같네요.

rename d1 gender

rename d2 age

rename d12_1 inc

rename q25 ideo

</aside>

통제변수들이 다 준비되었습니다. 이제 다중회귀분석을 해봅시다. 가설은 다음과 같습니다: 다른 변수들을 통제하고 나서도, 자신이 삶을 결정함에 있어 자유로운 정도가 높다고 인식할수록, 삶에 대한 전반적인 만족도가 높을 것이다.

1.1. 다중회귀분석 결과의 해석

<aside> 🧑🏻‍💻 다중회귀분석

reg life_satis free_choice SES **i.**gender age inc ideo

참고) 범주형 변수 → i. (indicator; factor)를 붙여주어 STATA에게 이 변수가 범주형임을 알려줍니다. 필요시 연속형 변수는 c. (continuous)를 붙여주시면 됩니다.

</aside>

Untitled

해석: 다른 변수들을 통제했을 때(ceteris paribus), 자신이 삶을 결정함에 있어서 자유로운 정도가 높다고 인식할수록 삶에 대한 전반적인 만족도가 높다. 다른 변수들을 통제한 상태에서 삶의 자유도가 한 단위 증가할 때마다 삶 만족도가 약 0.326만큼 증가하며, 이는 5% 유의수준 하에서 통계적으로 유의미하다.

참고) 단순선형회귀분석 결과

참고) 단순선형회귀분석 결과

<aside> 🧑🏻‍💻 단순회귀분석 vs. 다중회귀분석

qui reg life_satis free_choice

ovtest

qui reg life_satis free_choice SES i.gender age inc ideo

ovtest

</aside>

1.2. 다중회귀분석 결과의 시각화

다중회귀분석 결과를 시각화하는 방법은 크게 세 가지가 있습니다: 1) marginsplot, 2) coefplot, 3) avplot. 먼저, marginsplot은 회귀분석 후 X변수의 Y변수에 대한 영향력을 시각화할 때 유용합니다. 다음으로, coefplot은 회귀분석 결과로 추정된 회귀계수가 0과 유의하게 다른지를 시각화할 때 유용합니다. 이때 회귀계수의 신뢰구간이 0에 걸쳐 있는지 아닌지를 한 눈에 볼 수 있습니다. 마지막으로, avplot은 다른 통제변수들을 고려하고 나서 두 변수 간 관계를 산점도로 시각화할 때 유용합니다. 하나씩 연습해 보겠습니다.

<aside> 🧑🏻‍💻 marginsplot

단순회귀분석과 다른 점은 통제변수들이 포함되어 있다는 점입니다. 따라서 margins를 계산할 때에도 여타 변수들을 평균에 고정해준 상태에서 독립변수가 한 단위씩 증가할 때마다의 종속변수의 예측값을 계산해야 합니다. 이를 위해 atmeans 옵션을 넣어주시면 됩니다.

margins, at(free_choice=(0 (1) 10)) atmeans

marginsplot, recast(line) recastci(rarea) xlabel(0 "전혀" 5 "보통" 10 "매우")

</aside>

<aside> 🧑🏻‍💻 coefplot

coefplot, drop(_cons) xline(0) ciopts(recast(rcap))

coefplot , keep( free_choice SES age inc ideo ) xline(0)

</aside>