이전 게시물에서 오차항에 자기상관(autocorrelation)이 있는 경우에 대해 살펴봤다. 그와 더불어 오차항에 자기상관이 있는지 여부를 테스트하는 방법에 대해서는 추후 다룬다고 했는데, 이번 게시물과 다음 게시물에서 이와 관련된 검증법에 대해 다룰 예정이다. 실습 진행 이전에 프로그램 분석에 필요한 통계 개념을 짚고 넘어가자.
오차항 간 1차 자기상관관계를 검토하기 위하여 Durbin-Watson(DW) d Test를 수행할 수 있다. 이 검증 방법을 사용하기 위하여 회귀 모형은 아래의 가정을 충족해야 한다.
오차항 간 1차 자기상관관계가 있는지 검증하기 위한 귀무가설 $H_0$는 $\alpha=0$이다. 단, 이전 시점의 종속 변수(시차)가 현재 시점의 종속 변수에 영향을 미치는 회귀 모형은 DW d Test를 적용할 수 없다. 예시로 저번 게시물에서 다룬 오차항의 자기상관 처리에서 다뤘던 것을 들 수 있다.
$Y_t=(\beta_1-\alpha \beta_1)+\beta_2 X_t-\alpha \beta_2 X_{t-1}+\alpha Y_{t-1}+\varepsilon_t$
이를 검정하는 문제에 대해서는 추후 다룰 예정이다.
AR(1) model: $e_t=\alpha e_{t-1}+\nu_t$의 OLS 추정치 $\hat{\alpha}$을 먼저 구해보려고 한다. 자기상관계수 $\hat{\alpha}$는 아래와 같이 추정할 수 있다.
$\hat{\alpha}=Corr(e_t, e_{t-1})=\frac{Cov(e_t, e_{t-1})}{\sigma(e_t)\sigma(e_{t-1})}$
$\hat{\alpha}=\frac{\frac{\sum_{t=2}^n e_t e_{t-1}}{n-1}}{\sigma^2(e_t)}$ (∵ $\sigma(e_t) \sim \sigma(e_{t-1})$)
$=\frac{\frac{\sum_{t=2}^n e_t e_{t-1}}{n-1}}{\frac{\sum_{t=1}^n e_t^2}{n-1}}=\frac{\sum_{t=2}^n e_t e_{t-1}}{\sum_{t=1}^n e_t^2}$
한편 DW d Test를 하기 위한 통계량(statistic)은 다음과 같이 주어진다.
$d=\frac{\sum_{t=2}^n (e_t-e_{t-1})^2}{\sum_{t=1}^n e_t^2}$
위 식을 정리하면 다음과 같이 $d$ Test 통계량을 근사할 수 있다.
$d=\frac{\sum_{t=2}^n e_t^2-2 \sum_{t=2}^n e_t e_{t-1}+\sum_{t=2}^n e_{t-1}^2}{\sum_{t=1}^n e_t^2} \cong 2-2 \hat{\alpha}=2(1-\hat{\alpha})$ (∵ $\frac{\sum e_{t-1}^2}{\sum e_t^2} \cong 1$)
d 값에 따라 오차항 $e_t$는 아래와 같이 해석될 수 있다.
DW 테이블에서 회귀 모형(regression model)의 유의수준, 표본 크기와 독립 변수의 개수에 따라 임계값인 $d_L$(하한값)과 $d_U$(상한값)을 결정할 수 있다. 임계값을 결정하기 위한 Table은 아래의 링크에서 확인할 수 있다.
링크: https://www.slideshare.net/slideshow/durbin-watson-tables/41940497
이렇게 결정된 임계값을 활용하여 범위를 설정할 수 있고, 통계량 $d$의 범위에 따라 DW d Test를 수행할 수 있다. $d$ 값의 분포에 따른 해석은 아래와 같다.
DW d Test에 대한 통계 개념의 설명은 여기서 마무리를 하고, 프로그램 작성에 필요한 SAS 개념을 짚고 넘어가보려 한다. (이전 실습에서 다룬 개념은 다루지 않습니다. 이 게시물에서는 다루지 않는 개념이지만, 코드를 살펴보며 생소한 개념이 있으시다면 제 블로그에서 검색 or 이 카테고리에 있는 글을 읽고 와 주세요.)
Durbin-Watson의 Test를 수행하기 위한 통계치를 계산하기 위하여, Regression Procedure에서 DW나 DWPROB Option을 사용할 수 있다. DW나 DWPROB Option 모두 d 값은 계산해주지만, DW Option의 경우에는 p 값을 계산해주지 않는다. (DW d Test의 경우 p 값은 계산 비용이 많이 들기 때문에 기본적으로 제공해주지 않는다고 한다.) 따라서 p 값을 같이 출력하여 결과를 보고 싶은 경우에는 DWPROB Option을 사용해줘야 한다.
PROC REG DATA=xxx;
/* 종속 변수(Y)를 예측하기 위해 독립 변수(X)를 사용한 regression model 설정 */
MODEL Y=X / DWPROB; /* DW Test를 수행하기 위한 통계치 계산 Option(DWPROB) 사용 */
RUN;
위의 개념들을 토대로 이제 실습을 진행해보려고 한다.
DATA ex;
seed=1234;
beta1=10; /* 절편 설정(true value) */
beta2=0.1; /* 기울기 설정(true value) */
DO i=1 TO 200;
x=i; /* 독립 변수 값 */
u=RANNOR(seed); /* 오차항 */
y=beta1+beta2*x+u; /* 종속 변수 값 */
OUTPUT; /* DO Loop 내부의 변수 값들을 모두 기억 */
END;
RUN;
/* regression */
PROC REG DATA=ex;
/* regression model */
MODEL y=x / DWPROB; /* DWPROB Option을 활용하여 DW Test 진행 */
OUTPUT OUT=out1 P=pred R=resid;
/* regression 결과 Predicted(P)=pred로, Residual(R)=resid로
표기하여 이 변수들을 DATA 바구니 out1에 담는다. */
RUN;
DATA ex;
/* out1 DATA 바구니를 ex DATA 테이블에 담는다. */
SET out1;
RUN;
/* plotting */
PROC GPLOT DATA=ex;
PLOT pred*x;
SYMBOL V=DOT I=JOIN C=BLUE;
RUN;
PROC GPLOT DATA=ex;
PLOT resid*x;
SYMBOL V=STAR I=JOIN C=RED;
RUN;
PROC GPLOT DATA=ex;
PLOT pred*x y*x / OVERLAY;
SYMBOL1 V=DOT I=JOIN C=BLUE;
SYMBOL2 V=STAR C=RED;
RUN;
QUIT; /* SAS Code 마지막에 PROC GPLOT을 하면 PLOT을 2번 함. 이를 방지하기 위해 QUIT 사용 */
DATA fx;
seed1=1234;
seed2=5678;
alpha=0.9; /* 자기상관 계수 설정 */
beta1=10; /* 절편 설정 (true value) */
beta2=0.1; /* 기울기 설정 (true value) */
ulag=RANNOR(seed1); /* 오차항 생성 */
DO i=1 TO 200;
x=i; /* 독립 변수 값 */
u=alpha*ulag+RANNOR(seed2); /* 오차항끼리 자기상관관계 존재 */
y=beta1+beta2*x+u; /* 종속 변수 값 */
OUTPUT; /* DO Loop 내부 변수 값들을 모두 기억 */
ulag=u; /* 오차항을 이전 오차항으로 갱신 */
END;
RUN;
/* regression */
PROC REG DATA=fx;
/* regression model */
MODEL y=x / DWPROB; /* DWPROB Option을 활용하여 DW Test 진행 */
OUTPUT OUT=out1 P=pred R=resid;
/* regression 결과 Predicted(P)=pred로, Residual(R)=resid로
표기하여 이 변수들을 DATA 바구니 out1에 담는다. */
RUN;
DATA fx;
/* out1 DATA 바구니를 fx DATA 테이블에 담는다. */
SET out1;
RUN;
/* plotting */
PROC GPLOT DATA=fx;
PLOT pred*x; /* 세로축을 pred, 가로축을 x로 지정 */
SYMBOL V=STAR I=JOIN C=BLUE; /* Symbol Setting */
RUN;
PROC GPLOT DATA=fx;
PLOT resid*x; /* 세로축을 resid, 가로축을 x로 지정 */
SYMBOL V=STAR I=JOIN C=RED; /* Symbol Setting */
RUN;
PROC GPLOT DATA=fx;
PLOT pred*x y*x / OVERLAY; /* pred*x y*x 그림을 겹쳐 그림(OVERLAY Option) */
SYMBOL1 V=DOT I=JOIN C=BLUE; /* pred*x에 사용되는 Symbol Setting */
SYMBOL2 V=STAR C=RED; /* y*x에 사용되는 Symbol Setting */
RUN;
QUIT; /* SAS Code 마지막에 PROC GPLOT을 하면 PLOT을 2번 함. 이를 방지하기 위해 QUIT 사용 */
프로그램 자체는 자기상관성을 다루었던 이전 게시물의 프로그램과 동일하다. 다만 DW d Test를 추가로 수행한다는 점에서 이전 게시물의 프로그램과는 차이가 있다. 그래프나 regression model 자체의 주요 통계량은 이전 게시물에서 분석했으니 이번 게시물에서는 DW d Test 결과의 차이만 분석을 진행하고자 한다.
혹시 regression model에 대한 분석이 필요하신 분은 아래의 링크 참고해주시면 됩니다.
링크: https://bing-su-b.tistory.com/133
결과 해석에 앞서 Durbin-Watson Test 결과에서 나타나는 메시지에 대해 먼저 알아보려고 한다.
이 내용을 토대로 각 프로그램의 결과를 살펴보자.
첫번째(왼쪽) 프로그램의 경우에는 아래와 같이 분석할 수 있다.
두번째(오른쪽) 프로그램의 경우에는 아래와 같이 분석할 수 있다.
첫 번째 프로그램의 경우에는 Classical Assumption을 모두 만족시키는 모형을 사용했으며, 두 번째 프로그램은 Classical Assumption 3번째를 만족시키지 못하는 모형을 사용했다. 두 프로그램에서는 모두 regression model의 parameter를 OLS 방식으로 추정하고 Durbin-Watson(DW) d Test로 오차항의 자기상관 존재 여부를 검증했다.
DW d Test 결과 CA를 모두 만족시키는 모형에서는 자기상관이 없다는 귀무가설 $H_0$: $\hat{\alpha}=0$을 기각하지 못했고, CA 3번째를 만족시키지 못한 모형에서는 귀무가설을 강하게 기각시킬 수 있었으며 양의 자기상관을 가진다는 사실을 도출할 수 있었다.
이렇게 이번 게시물에서는 저번 게시물에서 다루지 못한 오차항(error term)에 자기상관(autocorrelation)이 존재하는지 여부를 검정할 수 있었다.
[ SAS ] 실제 DATA를 사용하여 DW d Test+Durbin's h Test 진행하는 프로그램 작성 (1) | 2024.10.21 |
---|---|
[ SAS ] Durbin's h Test (0) | 2024.10.19 |
[ SAS ] - 자기상관성(Autocorrelation) (0) | 2024.10.07 |
[ SAS ] - 구조 변화(Structural Change)를 관찰하는 프로그램 작성 (0) | 2023.06.17 |
[ SAS ] - 다중공선성(Multicollinearity) (0) | 2023.06.16 |
댓글 영역