단순회귀모형 식의 α와 β 같은 회귀무형 계수들(parameters)이 오랜 세월 동안 전혀 변화가 없으리라고 가정하는 것은 적절치 않은 경우가 종종 있습니다.
특히, 전세계가 겪은 큰 경제충격, 예를 들면 1973년의 제1차 오일쇼크, 1978년부터 1979년까지 이어진 제2차 오일쇼크, 2008년의 금융위기 등이 있었음에도 불구하고 거시경제변수를 이용한 회귀모형의 계수들 값에 전혀 변화가 없다고 가정하기는 힘듭니다.
실제 예를 들면, 2008년에 전세계에 큰 충격을 주었던 금융위기(financial crisis)와 같은 금융시장의 격변이 있었음에도 불구하고 산업생산지수의 성장률과 이자율 간의 회귀모형에 있는 α와 β 값들은 변화가 없었다고 가정하는 것은 직관적이지 않습니다. 변화가 없었다고 하는 것봐, 예를 들면, 금융위기로 인해 회귀모형 계수들의 값이 변화다라고 가정하는 것이 더 직관적이고 타당하다고 판단된다.
회귀모형의 계수들(parameters) 값이 어느 시점을 기점으로 갑자기 변화하는 것을 회귀모형의 구조변화라고 합니다. 즉, 어느 시점을 기점으로 그 이전과 그 이후에 계수 값들이 다르다는 것이다. 이렇게 회귀모형에 구조변화(Structural Change)가 존재하는 모형은 다음과 같이 표기할 수 있습니다.
위의 식을 살펴보면,
위와 같은 구조변화 회귀모형은 거시경제 데이터뿐만 아니라, 일반 기업데이터에서도 흔히 발견되는 모형이라고 할 수 있습니다. 생산기술의 혁신이나, 새로운 시장의 개척 등으로 인하여 마케팅비용 대비 매출액 증가율이 이전보다 커졌다면 이것도 구조변화 회귀모형을 사용할 수 있는경우라고 할 수 있습니다. 또한, 기업활동도 거시경제적 충격에서도 자유로울 수 없습니다. 국가경제가 충격을 받으면, 기업활동도 충격을 받을 것이고, 생산, 팬매, 관리 등 많은 면에서 급격한 변화가 발생할 수 있습니다. 그러므로 구조변화를 포함하는 회귀모형은 상당한 효용가치가 있을 것입니다.
미국 연방준비은행(U.S Federal Reserve Bank) St. Louis 지점에서 구축한 홈페이지 http://fred.stlouisfed.org/ 에서 industrial production: total index(indpro) 데이터를 사용하여 구조변화 회귀모형을 알아보려 합니다. 데이터는 파일로 첨부하였습니다.
data ip;
infile '/home/u45061472/ip.prn';
input mon ip;
logip = log(ip);
ipg = dif(logip)*1200;
if mon < 19590101 then delete;
num = _N_;
run;
data fyff;
infile '/home/u45061472/fyff.prn';
input mon fyff;
if mon < 19590101 then delete;
if mon < 20080101 then do;
int1 = 1;
int2 = 0;
fyff1 = fyff;
fyff2 = 0;
end;
else do;
int1 = 0;
int2 = 1;
fyff1= 0;
fyff2 = fyff;
end;
run;
data all;
merge ip fyff;
by mon;
run;
proc reg data = all;
model ipg = fyff;
model ipg = int1 int2 fyff1 fyff2 / noint;
test int1 = int2, fyff1 = fyff2;
run;
이제는 위의 코드를 자세히 살펴보겠습니다.
fyff.prn는 'monthly industrial production(산업생산)의 연간 성장률' 데이터입니다.
data ip;
infile '/home/u45061472/ip.prn';
input mon ip;
logip = log(ip);
ipg = dif(logip)*1200;
if mon < 19590101 then delete;
num = _N_;
run;
산업생산의 연간 성장률은 경제지표를 나타내는 지표 중 하나입니다. (경제지표를 나타내는 지표는 소비자 물가 상승률, 인플레이션 등이 있다.) 아래는 ip.prn 데이터의 일부이다. 첫번째 칼럼은 mon으로 yyyymmdd형식으로 되어 있으며 두번째 칼럼은 ip로 industrial production으로 산업생산의 연간성장률 자료를 나타냅니다.
logip = log(ip);
ipg = dif(logip)*1200;
위의 코드는 산업생산지수를 지수의 연간성장률로 바꾸는 과정이다.
우선 ip 지수를 LOG 값으로 전환하고
그 로그 값을 1차 차분한 후 1200을 곱해서 연간성장률을 %로 표시합니다.
if mon < 19590101 then delete;
ip 데이터 중 1959년 이전의 데이터를 지우는 코드입니다.
현재와 너무 먼 데이터는 결과를 왜곡시킬 수 있어 1959년부터 2018년 8월까지의 데이터를 사용하여 데이터의 수는 716개이다.
data fyff;
infile '/home/u45061472/fyff.prn';
input mon fyff;
if mon < 19590101 then delete;
if mon < 20080101 then do;
int1 = 1;
int2 = 0;
fyff1 = fyff;
fyff2 = 0;
end;
else do;
int1 = 0;
int2 = 1;
fyff1= 0;
fyff2 = fyff;
end;
run;
if mon < 20080101 then do;
위의 코드를 보면 2008년 1월에 회귀식의 구조변화가 발생했다는 가정하에 구조변화점을 기준으로 구조변화 전과 후에 해당하는 설명변수들을 만들기 위해 작업 시작을 의미합니다.
int1 = 1;
int2 = 0;
fyff1 = fyff;
fyff2 = 0;
end;
위와 같은 코드는 if mon < 20080101(금융위기 이전)이 만족되었을 경우 실행해야 하는 명령어입니다.
int1 은 금융위기 이전 기간이기 때문에 int = 1;이 되어야 합니다.
int2 = 0;은 금융위기 이후의 회귀모형의 절편을 위한 독립변수 값이기 때문에 금융위기 이후 기간 회귀모형의 절편을 위한 독립변수 값 int2는 0이 되어야 합니다.
금융위기 이전 기간의 설명변수인 fyff1은 fyff로 하였으며, 금융위기 이후의 설명변수 fyff2는 0으로 하였습니다.
else do;
int1 = 0;
int2 = 1;
fyff1= 0;
fyff2 = fyff;
end;
run;
위의 else do 구문은 금융 위기 이후의 기간이면 다음과 같은 명령문을 실행하라는 의미입니다.
data all;
merge ip fyff;
by mon;
run;
proc reg data = all;
model ipg = fyff;
model ipg = int1 int2 fyff1 fyff2 / noint;
test int1 = int2, fyff1 = fyff2;
run;
proc reg문은 회귀분석을 시작하는 줄 입니다.
model ipg = fyff;
구조변화가 없을 때의 회귀모형입니다. 이 모형이 귀무가설 : '구조변화가 없다.'를 대변하는 모형입니다.
model ipg = int1 ing2 fyff1 fyff2 / noint
위의 코드는 구조변화가 있을 때의 모형에서 귀무가설로 제시된 모형입니다.
회귀분석 명령의 model이고 2개의 절편과 2개의 설명변수가 있습니다. 금융위기 이전 기간을 위한 절편(int1) 기울기(fyff1), 금융위기 기후 기간을 위한 절편(int2)과 기울기(fyff2)가 있습니다.
model 마지막에 "/"는 회귀분석에 옵션을 지정하는 명령이 표기됩니다.
'/ noint' 옵션은 NOINTercept의 줄인말로 회귀모형에 자동적으로 추가하는 절편(intercept)를 추가하지 말라는 옵션입니다. 만약 이 옵션을 지정하지 않으면 에러(error)가 발생합니다. 이유는 이미 int1과 int2 변수들이 절편을 위해 추가되어 있는데, 이에 더해 절편을 추가하면 금융위기 이전, 이후 모두 절편이 2개씩이 되어 최소자승법으로 계수추정이 불가능하게 되기 때문입니다.
종속변수 Y는 ipg (the growth rate of US industrial production)이고,
설명변수 X는 fyff (the U.S Federal funds interest rate)입니다.
위의 결과는 구조변화가 일어나지 않았다는 귀무가설 하에서 단순회귀모형의 결과입니다.
parameter estimates의 fyff의 계수추정치는 -0.17248이고, t value는 -1.75, pr > |t| 는 0.081입니다.
그러므로 계수추정치는 통계적으로 유의하지 않습니다.
위의 결과는 회귀모형의 계수값들이 순식간에 변화하는 구조변화(structual change)가 일어났다고 가정하고 2008년 1월 이전과 이후를 분리하여 회귀모형을 추정한 결과입니다
parameter estimates에서 구조변화 이전의 계수 추정치와 이후의 계수 추정치를 비교한는 것도 중요하다고 할 수 있습니다. 2008년 1월 이전, 즉 구조변화 이전기간의 절편, int1의 추정치 6.22547과 이후 기간의의 절편 int2의 추정치 1.31823 사이에는 큰 차이가 존재합니다. 이후 기간 절편은 통계적으로 유의하지 않고 그 긊은 이전 값보다 훨씬 작다는 것을 알 수 있습니다.
2007년 12월 이후 2018년 8월 샘플수는 128개로 금융위기 이전기간의 샘플 수보다 훨씬 적어서 추정치의 t value와 pr > |t| 값의 절대값이 작아질 수 있다는 것을 감안하더라도, 금유위기 이후의 절편과 기울기가 모두 5% 유의수준에서 통계적으로 유의하지 않다는 것을 알 수 있습니다.
즉, 금융위기 이후에는 연방정부 이자율이 산업생산성장률을 결정하는데 중요하지 않은 변수가 되었다는 것입니다.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.