상세 컨텐츠

본문 제목

[ SAS ] - 자기상관성(Autocorrelation)

Language/SAS

by bing_su 2024. 10. 7. 15:55

본문

반응형
SMALL

지금까지 계속 회귀 분석을 하는 여러 프로그램을 살펴 봤다. 이번 실습 시간에도 작성한 프로그램에서 회귀 분석 시 발생할 수 있는 문제인, 자기상관성을 관찰해 볼 것이다.

 

프로그램을 작성하기 이전에, 프로그램 분석에 필요한 통계 개념을 짚고 넘어가자.

[ AutoRegressive MODEL (AR MODEL) ]

고전적 가정(Classical Assumption)에 대한 내용 중, 3번째 assumption에서는 '대부분의 경제 데이터는 3번째 가정을 만족시키기 못한다'는 내용을 다뤘다. Classical Assumption 중 3번째 assumption의 내용은 아래와 같다. (나머지 가정에 대한 내용이 궁금하신 분들은 해당 링크 참고해주세요.)

$E(u_i u_j) = 0$ (if  $i \neq j$)

$E(u_i u_j) = \sigma^2$ (if  $i=j$)

즉, Classical Assumption 3번을 만족시키지 못한다는 의미는 $i \neq j$일 때, $E(u_i u_j) \neq 0$이 된다는 것이다. 예시로 t기의 오차항(error term) $u_t$가 바로 전기의 오차항(error term) $u_{t-1}$의 선형 함수인 상황은 아래와 같이 표현할 수 있다.

$u_t=\alpha u_{t-1}+\varepsilon_t$

여기서 $\alpha$는 parameter이며, $\varepsilon_t$는 Classical Assumption 3번째를 만족시키는 random variable이라고 가정한다. 조금 더 자세히 설명하자면 $\varepsilon_t$는 백색 잡음(White noise) 과정을 거친다고 가정한다. 백색 잡음 과정에 대한 자세한 설명은 아래와 같다. 필요하신 분만 참고하시면 될 듯.

더보기

백색 잡음 과정(White Noise Process)

: 서로 독립이고 동일한 분포를 따르는 (independent and identically distributed, i.i.d) 확률 변수들의 계열로 구성된 확률 과정으로, $\varepsilon \sim WN(0, \sigma_{\varepsilon}^2)$을 만족한다.

 

시계열 모형(Time Series Model)에서 오차항끼리 자기상관관계가 존재하는 경우를 생각해보자. 만약 t 시점까지의 오차항이 k-시차 전까지의 오차항과 자기상관관계가 있다고 하면, 아래와 같이 t 시점의 오차항을 그 이전 시차들의 오차항의 선형 결합으로 나타낼 수 있다.

$u_t=\alpha_1 u_{t-1}+\alpha_2 u_{t-2}+\cdots+\alpha_k u_{t-k}+\varepsilon_t$

이러한 상황에서 오차항(error term)은 k-차 자기회귀 과정(AutoRegressive Process)을 따른다고 하며, 위와 같은 모형을 k-차 자기회귀모형이라고 한다. 이때, 1-시차 전의 과거 값으로 이루어진 모형을 AR(1) 모형(1st order AutoRegressive Model)이라고 한다. 즉, AR(1) 과정을 거치는 모형은 아래와 같이 작성할 수 있다.

$u_t=\alpha u_{t-1}+\varepsilon_t$

 

종합하여 오차항(error term)에 자기상관이 있는 회귀 모형(regression model)은 아래와 같이 표현할 수 있다.

$Y_t=\beta_1+\beta_2 X_t+u_t \cdots$ ①

$u_t=\alpha u_{t-1}+\varepsilon_t \cdots$ ②

AR(1) Model의 경우 정상성을 띠기 위하여 (쉽게 말하자면 시계열 데이터가 안정적이기 위해서는) 회귀계수 $|\alpha|<1$을 만족해야 한다. 일단 정상성 조건 하에서의 기댓값과 분산을 구하는 과정은 해당 게시물에서는 다루지 않을 예정이다. 

 

한편 이러한 모형으로부터 $u_t$는 $u_{t-1}$의 함수이므로 $E(u_t u_{t-1}) \neq 0$임을 도출할 수 있다. 따라서 Classical Assumption 3번째를 만족시키지 못하고 결과적으로 $\beta_2$의 OLS Estimator에 해당하는 $b_2$의 Variance, $Var(b_2)$를 구할 수 없다. 그럼에도 불구하고 OLS 방식으로 회귀 모형을 추정하는 모든 컴퓨터 프로그램들은 Classical Assumption이 모두 만족되었다고 가정하므로 $b_2$의 Variance를 $\frac{s^2}{\sum_{i=1}^n x_i^2}$으로 계산하여 Regression의 결과물로 제공한다. 식 ②에 의하여 회귀 모형 ①은 Classical Assumption 3번째를 만족하지 않으므로 OLS 방식으로 추정하여 제공된 Regression 결과, 표준 오차(standard errors)는 틀린 값이 되고 이를 이용하여 얻어지는 t Value, P Value 역시 잘못된 값이 된다.

[ 오차항(Error Term)의 자기상관(Autocorrelation) 처리 ]

결국 AR(1) model을 비롯한 AR model에서 오차항 $u_t$는 Classical Assumption 3번째를 만족하지 않는다. 이러한 자기상관(Autocorrelation)을 처리하는 과정에서 회귀식을 변형하면 오차항을 백색 잡음(White Noise)으로 만들 수 있다.

$Y_t=\beta_1+\beta_2 X_t+u_t \cdots$ ③ (∵ 식 ①)

$Y_{t-1}=\beta_1+\beta_2 X_{t-1}+u_{t-1} \cdots$ ④

$\alpha Y_{t-1}=\alpha \beta_1+\alpha \beta_2 X_{t-1}+\alpha u_{t-1} \cdots$ ⑤ (∵ 식 ④$\times \alpha$)

(식 ③)에서 (식 ⑤)를 빼면 아래와 같이 정리된다.

$Y_t-\alpha Y_{t-1}=(\beta_1-\alpha \beta_1)+\beta_2 X_t-\alpha \beta_2 X_{t-1}+(u_t-\alpha u_{t-1})$

$Y_t=(\beta_1-\alpha \beta_1)+\beta_2 X_t-\alpha \beta_2 X_{t-1}+\alpha Y_{t-1}+\varepsilon_t \cdots$ ⑥

(∵  $\varepsilon_t=u_t-\alpha u_{t-1}$)

 

이렇게 회귀 방정식의 변형을 통하여 오차항(error term)을 백색 잡음(white noise)으로 만들 수 있으며, 이에 따라 Classical Assumption 3번째를 만족하게 된다. 그러나 이렇게 얻어진 방정식 ⑥은 선형 회귀 방정식(linear regression model)이 아니기 때문에 OLS 방식을 사용하여 parameter $\beta_1$, $\beta_2$, $\alpha$를 추정할 수 없다. 식 ⑥에서 $\alpha \beta_1$, $\alpha \beta_2$가 회귀 모형을 비선형으로 만들기 때문이다. 결국 이러한 경우에는 OLS 외에 다른 추정 방법을 사용해야 한다. 그 전에 오차항에 자기상관(autocorrelation)이 있는지 여부를 테스트하는 방법을 알아야 한다. 이를 테스트 하는 방법에 대해서는 추후 다룰 예정이다. 

 

이제 Classical Assumption을 모두 만족하는 경우와 3번째 Classical Assumption을 만족하지 못하는 경우에 대해 실습을 진행하며 각 결과를 비교해보자.

[ Classical Assumption을 모두 만족하는 모형을 분석하는 프로그램 ]

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;
/* regreesion */
PROC REG DATA=ex;
	MODEL y=x;  /* regression model */
	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 사용 */

[ Classical Assumption 3번째를 만족시키지 못하는 모형을 분석하는 프로그램]

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;
	MODEL y=x;  /* regression model */
	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=DOT 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;

 

위의 두 프로그램은 각각 Classical Assumption을 모두 만족시키는 모형과 Classical Assumption 중 3번째를 만족시키지 못하는 모형을 분석한 프로그램이다. 각 프로그램의 실행 결과를 비교하여 나타내면 아래와 같다.

regression 결과 비교

주요 통계량을 비교하여 표로 정리하면 아래와 같다.

  Mean Square Error
(MSE$=s^2$)
R-Square
($R^2$)
Parameter 추정치 (t Value)
Intercept
($a$, $b_1$)
X
($b$, $b_2$)
CA 3 만족 model 1.12345 0.9688 9.92 (65.91) 0.10 (78.42)
CA 3 불만족 model 6.73065 0.8705 9.24 (25.08) 0.12 (36.48)
  • MSE(Mean Square Error)$=s^2$은 $\sigma^2$의 추정치이다. 이는 parameter 추정치들의 분산에 직접 영향을 미치는 값이라고 할 수 있다. 결과를 통해 오차항의 자기상관 유무에 따라 이 크기가 크게 영향을 받는 것을 확인할 수 있다.
  • $R^2$의 크기도 $s^2$만큼 크게 영향을 받지는 않으나, 오차항(error term)의 자기상관이 강하게 존재할 경우에는 $R^2$가 하락할 수 있음을 확인할 수 있다.
  • paramter 추정치들의 t 값도 큰 영향을 받는 것을 확인할 수 있다. 절편(intercept) 추정치의 t 값은 강한 자기상관이 존재할 경우 크게 감소하고, 기울기(x) 추정치의 t 값도 크게 감소함을 확인할 수 있다. 오차항에 자기상관이 존재함에도 OLS 방식으로 parameter를 추정하는 것의 가장 큰 문제는 t 값의 크기가 과장될 수 있다는 것이다. 즉, 실제로 통계적 유의성이 없는 계수  추정치가 통계적 유의성이 있다고 판단할 수 있는 가능성이 존재한다. 이러한 오류를 회피할 수 있는 새로운 추정 방법에 대한 논의는 추후 다룰 예정이다.

pred*x graph 비교

GPLOT을 통하여 pred와 x의 관계는 각각 위와 같이 나타난다.

resid*x graph 비교

GPLOT을 통하여 resid와 x의 관계는 각각 위와 같이 나타난다.

pred*x와 y*x를 겹쳐 작성된 graph 비교

GPLOT을 통하여 pred*x 관계를 도식화한 그림과 y*x 관계를 도식화한 그림은 위와 같이 나타난다.

반응형
LIST

관련글 더보기

댓글 영역