지금까지 여러가지 방식의 회귀 분석을 진행했다. 이번 게시물에서는 회귀 모형의 함수 형태가 적절한지 검정하는 방법에 대해 다루고 실습을 진행해 보려고 한다.
프로그램을 작성하기에 앞서, 프로그램 분석에 필요한 통계 개념을 짚고 넘어가자.
IFF Test는 함수 형태의 오류를 검정하기 위한 방법이다. 함수 형태가 올바르게 지정되지 않았을 때, 이를 검출하는 데 사용할 수 있다. 뒤에서 다룰 Ramsey RESET Test와도 비슷한 원리를 가지고 수행된다. 주어진 기본 회귀 모형이 다음과 같다고 가정해보자.
$y_t = \beta_0 +\beta_1 x_{1t}+\beta_2 x_{2t}+\nu_t$
IFF Test의 귀무가설($H_0$)은 "함수 형태가 올바르게 지정되었다."는 것이므로 위의 모형이 귀무가설에 해당한다고 할 수 있다. 반면 대립가설($H_1$)은 "함수 형태에 오류가 존재한다."는 것이므로 다음과 같은 기본 회귀 모형에 제곱항과 상호작용항을 추가한 보조 회귀 모형에 해당한다고 할 수 있다.
$y_t =\beta_0+\beta_1 x_{1t}+\beta_2 x_{2t}+ \alpha_1 x_{1t}^2 +\alpha_2 x_{2t}^2 +\alpha_3 x_{1t}x_{2t}+u_t$
즉, 위의 모형으로부터 IFF Test의 귀무가설($H_0$)과 대립가설($H_1$)을 다음과 같이 설정할 수 있다.
한편, 앞서 다뤘던 White Test와 IFF Test의 수식이 수학적으로 매우 유사함을 확인할 수 있다.
White Test 수식 확인: https://bing-su-b.tistory.com/137
그러나 White Test는 이분산(Heteroscedasticity)을 검정하기 위해 잔차 제곱($e_t^2$)을 종속 변수로 사용한다. 그러나 IFF Test는 함수 형태의 오류를 검정하기 위해 종속 변수 $y_t$ 자체를 사용한다.
Ramsey RESET test는 회귀 모형의 함수 형태 오류나 누락된 변수 여부를 검정하기 위한 방법이다. 이는 Specification Error를 확인하는 중요한 진단 도구이다. Ramsey RESET test의 귀무가설($H_0$)과 대립가설($H_1$)은 다음과 같이 정의된다.
귀무가설 $H_0$의 검정은 기본 회귀 모형에 거듭제곱항을 포함한 확장된 회귀 모형(augmented regression)을 기반으로 진행한다. 먼저 기본 회귀 모형은 다음과 같다.
$\hat{y_t} = b_0 + b_1 x_{1t}+b_2 x_{2t}$
이때, $\hat{y_t}$는 기본 회귀 모형의 예측값이며, $b_0$, $b_1$, $b_2$는 OLS 추정치다. 확장된 회귀 모형은 해당 모형에 제곱, 세제곱, 네제곱 항을 추가한 모형이며, 다음과 같이 나타낼 수 있다.
$y_t =\beta_0 +\beta_1 x_{1t}+\beta_2 x_{2t}+\alpha_1 \hat{y_t}^2 +\alpha_2 \hat{y_t}^3 +\alpha_3 \hat{y_t}^4 +u_t$
위의 모형으로부터 Ramsey RESET Test의 귀무가설($H_0$)과 대립가설($H_1$)은 다음과 같이 설정할 수 있다.
F Test 역시 다른 검정 방법과 마찬가지로 회귀 분석에서 특정 가설을 검정하기 위하여 사용된다. IFF Test나 Ramsey RESET Test와 같이 모형에 오류가 존재하는지 확인하는 데 F Test를 사용할 수 있다.
F Test는 기본적으로 두 개의 회귀 모형의 적합도 차이를 검정한다. 두 개의 회귀 모형은 다음과 같다.
이러한 모형을 토대로 F Test의 귀무가설($H_0$)과 대립가설($H_1$)은 다음과 같이 정의된다.
이때 F Value 자체의 절대적인 기준은 존재하지 않으며, F Test에서의 기준은 p Value이다. 즉, F Value는 상대적인 크기로 이해해야 한다. 한편, F Test statistic은 다음과 같이 계산할 수 있다.
$F=\frac{(SSE_R -SSE_U )/q}{SSE_U /(n-k)}$
통계 개념에 대한 설명은 여기서 마무리를 하고, 프로그램 작성에 필요한 SAS 개념을 짚고 넘어가보려 한다. (이전 실습에서 다룬 개념은 다루지 않습니다. 이 게시물에서 다루지 않는 개념이지만, 코드를 살펴보며 생소한 개념이 있으시다면 제 블로그 검색 or 이 카테고리에 있는 글을 읽고 와 주세요.)
F Test는 회귀 분석을 위한 Procedure에서 TEST Option을 사용하여 수행할 수 있다. TEST 문 안에 귀무가설에 해당하는 회귀 계수를 모두 0으로 지정해주면 된다. 해당 문법을 정리하면 아래와 같다.
PROC REG DATA=xxx;
/* 종속 변수 y, 독립 변수 x1, x2, pred2, pred3인 regression model 설정 */
MODEL y = x1 x2 pred2 pred3;
/* F Test를 위한 귀무가설 설정 */
TEST pred2=pred3=0;
RUN;
위의 개념들을 토대로 이제 실습을 진행해보려고 한다.
DATA ip;
INFILE '/home/u63329964/mydata/ip.prn'; /* mydata 디렉토리의 ip.prn 파일을 불러옴 */
INPUT mon ip; /* mon, ip 변수에 데이터를 입력할 것임 */
logip=LOG(ip); /* ip 값에 자연 로그(ln)을 취함 */
/* ip의 성장률을 바꾸는 Logic */
ipg=DIF(logip)*1200; /* 연간 퍼센트 성장률 > 12*100=1200 */
RUN;
DATA fyff;
INFILE '/home/u63329964/mydata/fyff.prn'; /* mydata 디렉토리의 fyff.prn 파일을 불러옴 */
INPUT mon fyff; /* mon, fyff 변수에 데이터를 입력할 것임 */
/* fyff 변수 시점을 밀어줌 */
fyff4=LAG4(fyff);
fyff5=LAG5(fyff);
RUN;
DATA unemp;
INFILE '/home/u63329964/mydata/unemp.prn'; /* mydata 디렉토리의 unemp.prn 파일을 불러옴 */
INPUT mon unemp; /* mon, unemp 변수에 데이터를 입력할 것임 */
dunemp=DIF(unemp)*10; /* 월간 변화량에 10을 곱하여 조정 */
RUN;
DATA all;
MERGE ip fyff unemp;
BY mon; /* mon 변수를 기준으로 병합 */
fyff42=fyff4**2; /* fyff4 변수를 제곱 */
dunemp2=dunemp**2; /* dunemp 변수를 제곱 */
fydu=fyff4*dunemp; /* 두 독립 변수를 곱한 값 정의 */
IF mon<19590101 OR mon>20191201 THEN DELETE;
num=__N__;
RUN;
/* regression 1 */
PROC REG DATA=all;
MODEL ipg=fyff4 dunemp;
/* regression 결과 Predicted(P)=pred,
Residual(R)=resid로 표기하여 이를 DATA 바구니 out1에 담는다. */
OUTPUT OUT=out1 P=Pred R=resid;
RUN;
DATA all;
/* out1 DATA 바구니를 all DATA 테이블에 담는다. */
SET out1;
/* 예측 값의 거듭제곱항 정의 */
pred2=pred**2;
pred3=pred**3;
pred4=pred**4;
RUN;
/* regression 2 */
PROC REG DATA=all;
MODEL ipg=fyff4 dunemp fyff42 dunemp2 fydu;
TEST fyff42=dunemp2=fydu=0; /* IFF Specification Test */
MODEL ipg=fyff4 dunemp pred2 pred3 pred4;
TEST pred2=pred3=pred4=0; /* Ramsey Specification Test */
RUN;
실제 데이터를 이용하여 IFF Test와 Ramsey RESET Test를 수행하고 있는 프로그램이다. 각각의 검정 결과를 해석해보고자 한다. 해당 프로그램 실행 결과를 나타내면 아래와 같다.
회귀 모형의 Specification Test를 수행하기 위해서는 F Value를 계산하는 과정이 필요하다. F Value는 다음과 같은 식으로 계산할 수 있다.
$F=\frac{(SSE_R -SSE_U)/q}{SSE_U /(n-k)}$
해당 모형에서 $SSE_R$은 55888, 표본(Sample)의 크기인 $n$은 732라는 것을 확인할 수 있다.
해당 모형에서 $SSE_U$는 54296이고 추가된 변수는 $fyff42$, $dunemp2$, $fydu$ 총 3개이므로 $q=3$이다. 또한 해당 비제한 회귀 모형(Unrestricted Regression Model)에서 회귀 계수는 총 6개이므로 $k=6$이다. 이와 같은 통계치를 이용하여 해당 모형에서의 F Value를 계산하면 다음과 같다.
$F=\frac{(SSE_R -SSE_U)/q}{SSE_U/(n-k)}=\frac{(55888-54296)/3}{54296/(732-6)}=7.096$
F Value가 약 7.10으로 꽤 큰 편이라고 할 수 있고, p Value도 0.05보다 훨씬 작은 0.0001이어서 귀무가설이 기각되므로, 추가된 비선형 항들이 통계적으로 유의하다는 결론을 내릴 수 있다. 실제로 추가된 변수 중 $fyff42$의 t Value는 -3.17로 꽤 큰 편에 속하고, p Value는 0.0016으로 0.05보다 작기 때문에 해당 회귀 계수가 0이라는 귀무가설을 강하게 기각하고 있다는 것을 확인할 수 있다.
해당 모형에서 $SSE_U$는 53966이고 추가된 변수는 $pred2$, $pred3$, $pred4$ 총 3개이므로 $q=3$이다. 또한 해당 비제한 회귀 모형(Unrestricted Regression Model)에서 회귀 계수는 총 6개이므로 $k=6$이다. 이와 같은 통계치를 이용하여 해당 모형에서의 F Value를 계산하면 다음과 같다.
$F=\frac{(SSE_R -SSE_U)/q}{SSE_U /(n-k)}=\frac{(55888-53966)/3}{53966/(732-6)}=8.619$
F Value가 앞서 수행한 IFF Test보다 더 큰 값으로 도출되었고, p Value도 0.0001보다 훨씬 작기 때문에 귀무가설이 기각된다. 따라서 추가된 비선형 항들이 통계적으로 유의하다는 결론을 내릴 수 있다. 실제로 추가된 변수 중 $pred2$, $pred3$, $pred4$의 t Value 각각 -4.39, 2.77, 3.24로 꽤 큰 값이며, p Value는 모두 0.05보다 작기 때문에 추가된 변수의 회귀 계수가 0이라는 귀무가설을 강하게 기각하고 있다는 것을 확인할 수 있다.
[ SAS ] 최우추정법(Maximum Likelihood Estimation Method) (0) | 2024.12.17 |
---|---|
[ SAS ] 비선형 회귀 모형의 추정 (0) | 2024.12.17 |
[ SAS ] 이분산 (Heteroscedasticity) (2) | 2024.12.16 |
[ SAS ] 실제 DATA를 사용하여 DW d Test+Durbin's h Test 진행하는 프로그램 작성 (1) | 2024.10.21 |
[ SAS ] Durbin's h Test (0) | 2024.10.19 |
댓글 영역