상세 컨텐츠

본문 제목

[ SAS ] 실제 DATA를 사용하여 DW d Test+Durbin's h Test 진행하는 프로그램 작성

Language/SAS

by bing_su 2024. 10. 21. 09:47

본문

반응형
SMALL

저번 실습까지는 가상의 Data를 이용하여 생성된 회귀 모형을 분석했다. 이번 실습에서는 실제 Data를 이용하여 DW d Test와 Durbin's h Test를 하는 실습을 진행해보려 한다. 필요한 통계 개념은 이미 이전 게시물들에서 다루었기 때문에 현재 게시물에서는 다루지 않는다. 통계 개념이 필요한 경우 아래의 링크를 참고하면 된다.

- DW d Test: https://bing-su-b.tistory.com/134

 

[ SAS ] Durbin-Watson(DW) d Test

이전 게시물에서 오차항에 자기상관(autocorrelation)이 있는 경우에 대해 살펴봤다. 그와 더불어 오차항에 자기상관이 있는지 여부를 테스트하는 방법에 대해서는 추후 다룬다고 했는데, 이번 게시

bing-su-b.tistory.com

- Durbin's h Test: https://bing-su-b.tistory.com/135

 

[ SAS ] Durbin's h Test

이전 게시물에서 오차항(error term)이 자기상관을 가지는지 검정하는 방법인 Durbin-Watson(DW) d Test에 대해 다뤘다. 이때 이전 시점의 종속 변수가 현재 시점의 종속 변수에 영향을 미치는 회귀 모형

bing-su-b.tistory.com

 

실습에 사용될 Data는 FRED에서 다운로드했다. 데이터 전처리 과정은 해당 게시물에서 다루었기 때문에 생략한다. 이 과정에 대한 설명이 필요한 경우 하이퍼링크를 참고하면 된다.

 

실습에 사용된 각각의 파일 이름에 해당하는 실제 데이터는 아래와 같다.

  • ip.prn: industrial production
  • fyff.prn: federal funds rate
  • unemp.prn: unemployment rate

[ 실제 데이터를 사용하여 회귀 분석을 진행하는 프로그램 ]

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 */
	ipg1=LAG(ipg);  /* ipg 변수를 한 시점씩 밀어줌 */
RUN;

DATA fyff;
	INFILE '/home/u63329964/mydata/fyff.prn';  /* mydata 디렉토리의 fyff.prn 파일을 불러옴 */
	INPUT mon fyff;  /* mon, fyff 변수에 데이터를 입력할 것임 */
	fyff4=LAG4(fyff);  /* 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 변수를 기준으로 병합 */
	IF mon<19590101 OR mon>20191201 THEN DELETE;
	num=__N__;
RUN;
/* regression 1 */
PROC REG DATA=all;
	/* regression model 1-1: DW Test 진행 */
	MODEL ipg=fyff4 dunemp / DWPROB;  
    /* regression model 1-2 */
	MODEL ipg=fyff4 dunemp ipg1;  
    /* regression 결과 Residual(R)=reisd로 표기하여
    이를 DATA 바구니 out1에 담는다. */
	OUTPUT OUT=out1 R=resid;
RUN;

DATA all;
	/* out1 DATA 바구니를 all DATA 테이블에 담는다. */
	SET out1;
	resid1=LAG(resid);  /* residual을 한 시점씩 밀어줌 */
RUN;
/* regression 2 */
PROC REG DATA=all;
	/* regression model */
	MODEL resid=resid1 fyff4 dunemp ipg1;
RUN;

해당 프로그램을 실행하면 아래와 같은 결과가 나온다. 

반응형
LIST

관련글 더보기

댓글 영역