Stata 회귀분석 해석 - stata hoegwibunseog haeseog

자동차 사고가 얼마나 발생하는지 예측 (종속변수)하기 위해 영향을 미치는 요인으로서 기온과 강수량을 독립변수로 설정했다. 1999년 무작위로 10일을 선정해 기온과 강수량이 사고 발생 횟수에 영향을 미쳤는지 확인하기 위해 회귀분석을 실시한다. 회귀방정식, R2, Adjusted-R2를 계산하고 해석하라. 전체 회귀분석의 유의성 여부를 결정하고, 개별 회귀계수의 유의성을 검정하고, 모수 추정치를 해석한다.

- 종속변수 Y: 사고 발생 규모 (No. of Accidents)

- 독립변수 X2: 기온 (Temperature)

- 독립변수 X3: 강수량 (Precipitation)

STATA 회귀분석 결과

Stata 회귀분석 해석 - stata hoegwibunseog haeseog

회귀식 (Regression Equation)

Yi = 20.00163 – 0.1947705 X2i + 1.093706 X3i + ûi

전체 회귀분석의 유의성 여부: (F-) significance test

H0: β2 = β3 = 0

H1: β2 ≠ 0 or β3 ≠ 0

F-value는 10.61이고, 그에 대한 p-value는 0.0076이므로, 우리는 α = 0.01 의 신뢰 수준에서 H0를 기각할 수 있다. 그것은 종속변수와 독립변수가 통계적으로 유의하다는 것을 의미한다.

R2 해석

R2 = 0.7520

이 값은 독립변수들이 종속변수에 대해 75.20%의 설명력을 가졌다는 것을 의미한다.

Adjusted-R2 = 0.6811

이 값은 독립변수의 개수를 고려해 조정한 후 독립변수들이 종속변수에 대해 78.11%의 설명력을 가졌다는 것을 의미한다.

개별 회귀계수의 유의성 점검: (t-) significance test

H0: β2 = 0

H1: β2 ≠ 0

주어진 t-value는 -4.23이고, 그에 대한 p-value는 0.004이므로, 우리는 α = 0.01의 신뢰 수준에서 H0를 기각할 수 있다. 이것은 다른 독립변수들이 변함 없을 때 해당 독립변수와 종속변수 사이가 통계적으로 유의하다는 것을 의미한다.

H0: β3 = 0

H1: β3 ≠ 0

주어진 t-value는 0.64이고, 그에 대한 p-value는 0.540이므로, 우리는 α = 0.1의 신뢰 수준에서 H0를 기각할 수 없다. 이것은 해당 독립변수와 종속변수 사이가 통계적으로 유의미하지 않다는 것을 의미한다.

계수 해석: Interpretation of Parameter Estimates

βhat1 = 20.00163

이것은 모든 독립변수가 0일 때 종속변수의 값을 의미한다.

βhat2 = – 0.1947705

이것은 다른 독립변수가 변화 없을 때 해당 독립변수가 1 유닛 변화하면 종속변수는 -0.1947705 유닛 변화한다는 것을 의미한다.

βhat3 = 1.093706

이것은 다른 독립변수가 변화 없을 때 해당 독립변수가 1 유닛 변화하면 종속변수는 1.093706 유닛 변화한다는 것을 의미한다.

안녕하세요^^ Ph.D Ryu 입니다~

오늘은 진행 중인 연구가 길어지면서 모처럼 새벽에 이렇게 포스팅을 합니다.

박사과정 중에는 1주일에 3-4일을 밤새워서 연구한 적도 있었는데, 이제 그럴 일이 많이 없네요.

오랜만에 새벽에 공부를 하다가 회귀분석에 대해서 간략하게 서술을 하려고합니다.

자 이제 시작합니다^^

자료는 auto자료를 사용하시면됩니다.

이렇게 auto자료를 쓰세요 하면 모르시는 분이 있으니깐 어떻게 하냐면요~

STATA를 실행하셔서 command 창에 대고 다음과 같이 쓰세요~

sysuse auto

그렇게 하면 STATA 내부에 있는 auto라는 예제파일을 끌고 옵니다. 간략하게 자료를 설명하자면, 해당 파일은 자동차와 관련된 자료입니다. 메이커가 적혀있고, 가격, rep78(78년 수리횟수라고 제가 조작적 정의를 했다고 한다면), 그 이후 트렁크 크기 등등의 내용이 삽입되어있습니다.

1) simple reg

y=ɑ+βx1+e(error) → 오차항은 종속변수의 일부라는 생각을 갖고 있어야 됩니다. 그리고 통제변수를 늘리면 늘릴수록 오차항은 작아지겠지만, 오차항을 완벽히 제거는 불가능합니다.

reg price weight

// 단순회귀분석 예제입니다.

이렇게 돌리시면되요. 저는 단순회귀분석을 참 중요하게 생각해요. 이유를 적어볼까요?

회귀분석을 하기전에 실시하는 일련의 과정을 볼께요(이건 제가하는 순서예요 지극히 개인적인 생각입니다)

1. tab을 이용해서 샘플의 구성확인을 해요

2. 기술통계량을 확인하는데, 표준편차, 왜도, 첨도, 중앙값과 평균값을 확인해서 정규성을 확인하고, 최대값과 최소값을 확인한 후 winsor를 고민

3. histogram을 이용해서 분포의 정도를 확인

4. 피어슨상관계수로 종속변수와 독립변수의 기본적인 상관계수 및 유의성을 확인

5. 드디어 회귀분석을 돌려요~

그런데 여기서 통제변수 싹다 넣고 돌리기 전에 저는 반드시 종속변수와 독립변수를 넣고 단순을 돌려봐요. 그리고 나서 통제변수를 하나씩 넣어봅니다. 그리고 단순을 돌린상태의 계수값과 유의성을 확인하세요. 부호가 뒤틀릴수 있으니 항상 단순부터 돌려보시고 추후에 하나씩 통제변수를 투입하면서 돌아가는 변수를 확인하세요.

reg price weight, noconstant

//사용하는 방법거의 없다. 이익조정에서 상수가 없는 측정치가 있긴하지만, 상수항 없는 회귀분석에서 R^는 우리가 알고 있는 R^가 아닙니다(즉, 높아짐)

→ 상수항이 없는 회귀분석을 일반적 회귀분석으로 해석불가능해요

//상수항을 넣어야지만 선형회귀가 추정됩니다.

//왜 항상 선형회귀모형을 추정? 이유는 상수항 때문(절편을 받쳐줘야된다)

//선형회귀를 만들 수 있는 이유가 상수항이 존재하기 때문입니다.

//상수항이 있음으로써 두 변수를 선형으로 추정이 가능합니다.

보시면 상수항이 있고 없고의 독립변수의 계수가 다르죠? 그리고 여기서 나타나는 R^는 읽지마세요!

Stata 회귀분석 해석 - stata hoegwibunseog haeseog

2) multiple reg

reg price weight length turn gear_ratio

//다중회귀분석 예시입니다.

reg price weight length turn gear_ratio, beta (*beta= 표준화 계수)

//각각의 변수의 측정단위가 다르기 때문에 단순한 coef를 비교하는 것은 의미가 없을 수 있기 때문에 표준화 계수를 사용합니다.

2-1) 예측값과 잔차계산

reg ln_price ln_weight ln_length

predict a

//post-estimation command: '추정후에' 뒤에 바로 뒤에 넣기

//해당 predict은 y의 추정치를 구하는 방법이다

predict b, resid

//새로운 변수 a를 만들고 여기에서 y_hat값(predicted values) 입력

//새로운 변수 b를 만들고 여기에서 잔차값(residuals) 입력

// 잔차를 계산하는 이유: 오차항의 가정을 만족하는가를 확인하기 위해서!

// 해당 predictd의 ,resid를 달게되면 잔차값을 만든다

2-2) 회귀분석표 만들기

reg price weight length

estimates store M1

reg price weight length turn gear_ratio

estimates store M2

estimates table M1 M2, b(%9.3f) stat(r2 N) star(0.01 0.05 0.1)

//위에 문구를 쭉 돌려주세요~

//소수점 3째짜리가 까지 쓴다 b(%9.3f) = 소수점찍는거다

//하단부분에 r^와 count를 넣는다

//작은거 부터 큰값으로 star를 넣어야됨 → star(0.01 0.05 0.1)

돌리면 이렇게 표로 나타나게 되는데, 이거 보고 느껴지는게 있으시죠??!!

상수항이 너무 커요.... 커도 너무 커요.... 그리고 계수들도 크죠?

이렇게 되면 변수의 size effect때문에 원하는 값이 돌아갈수 있어요

이럴땐, ln을 써서 계수들의 사이즈를 낮춰주세요^^

gen ln_price=ln(price)

gen ln_weight=ln(weight)

gen ln_length=ln(length)

다른 조건문 예시입니다^^(응용해보시면 좋을꺼 같아요~)

reg ln_price ln_weight ln_length if foreign>0

//조건확인

estimates store M1

reg ln_price ln_weight length if foreign==1

//조건확인

estimates store M2

estimates table M1 M2, b(%9.3f) stat(r2 N) star(0.01 0.05 0.1)

예시로 돌려봤는데, 보시면 계수값이 많이 떨어지는걸 볼수 있네요^^

2-3) 더미변수를 포함한 선형회귀모형

(더미변수를 tab으로 만들지 않고 바로 회귀분석에서 만들어서 돌리는 방법을 주로 사용)

xi: reg 종속변수 독립변수 i.더미변수(or 연도/산업변수) 독립변수 독립변수

2-4) interaction variable(상호작용변수)를 포함한 선형회귀모형

gen A=B*C 로 해서 A를 사용해도 되고, 아래처럼 해도됩니다.

xi: reg price weight turn gear_ratio c.gear_ratio#c.turn

//reg에서는 곱하는게 *이 아니라 #만을 사용

//interaction 할 때 : 범주형 변수에는 I, 연속형 변수는 c를 붙여줘야 됩니다.

//상호작용을 해석하는게 더 중요해요

다음 포스팅에서는 회귀분석의 옵션을 알아볼꺼예요~

이분산성이 발생하는 경우? 자기상관이 발생하는 경우에는 어떠한 옵션을 걸어줘야될까요?

그리고 이분산성이 발생하는 걸 확인하려면 어떤 검정을 하고 자기상관때는 어떤 검정을 해서 판단을 할지 방법을 알아볼께요~

그래야지 이분산성, 자기상관이 있는줄 알아야 통제를 하겠죠?

모두들 힘내서 연구하시고, 건강 유의하세요^^

그럼 다음 포스팅에서 뵙겠습니다!

Stata 회귀분석 해석 - stata hoegwibunseog haeseog