회귀모형이 선형(linear)인 경우 최소자승법을 사용하여 쉽게 계수추정치를 얻을 수 있으나 비선형 (nonlinear)인 경우는 최소자승법으로 추정하기가 쉽지 않습니다.
대부분의 경우 에러텀에 자기상관이 존재하는 회귀모형은 모두 비선형모형들입니다.
시계열데이터를 회귀모형에 사용할 때 많은 경우 에러텀들이 자기상관성을 보이기 때문에 비선형모형을 추정할 수 있는 방법을 배우는 것이 매우 중요합니다.
최우추정법이 우선적으로 사용되는 회귀모형은 단순회귀모형이나 다중회귀모형의 에러텀에 자기상관 (autocorrelation)이 있는 경우입니다. 에러텀의 자기상관이 있으면 회귀모형 자체가 비선형(nonlinear)이 되기 때문입니다. 불필요한 복잡함을 피하고 비선형이 되는 것을 보이기 위해 단순회귀모형의 에러텀 (error term)에 자기 상관이 있다고 가정합니다.
여기서 εt 는 가정을 만족시키고, E(εt) = 0, E(εt2) = δ2 인 에러텀입니다.
제 1차 자기상관회귀식(First Order Autoregression Model, AR(1))이라고 합니다.
(1)식을 (t-1)기로 표현하면
이 되고, 양쪽에 α 를 곱하면 다음과 같이 됩니다.
(1) 식에서 (4)를 빼면
(2) 식에서 식 (5) 식의 에러텀은 (ut - aut-1) = et 이므로 식 (5)를 다시 정리하면,
(6)식의 에러텀 et는 가정을 만족시키므로 식 (6)의 계수들을 최소자승법으로 추정하면 아무 문제가 없을 것 입니다.
회귀모형이 비선형이기 때문에 위에서 설명한 최소자승법을 사용한 선형회귀모형의 계수추정방법을 사용하여 true parameter B1, B2, a를 추정할 수 없습니다. 이런 비선형 회귀모형의 계수추정을 위해 최우추정법을 사용하면 쉽게 true parameter를 구할 수 있습니다.
식 (1)번과 식 (2)번에 있는 회귀모형은 에러텀에 자기상관이 있기 때문에 비선형 회귀모형이며, 추정해야 하는 계수들은 B1, B2, a, δ2 로 4개입니다.
이번에는 SAS CODE를 사용해서 계수를 추정해보겠습니다.
data ip;
infile '/home/u45061472/ip.prn';
input mon ip;
logip = log(ip);
ipg = dif(logip)*1200;
if mon < 20080101 then delete;
run;
data fyff;
infile '/home/u45061472/fyff.prn';
input mon fyff;
fyff4 = lag4(fyff);
if mon < 20080101 then delete;
run;
data all;
merge ip fyff;
by mon;
run;
proc reg data=all;
model ipg = fyff4 / dwprob;
run;
proc autoreg data=all;
model ipg=fyff4 / nlag=1 method=ml maxiter=200;
run;
사용할 데이터 fyff(the U.S Federal funds interest rate)로 미국 연방펀드 이자율에 대한 자료와 'monthly industrial production(산업생산)의 연간 성장률' 데이터를 날짜를 기준으로 merge한 데이터 입니다.
사용한 ip 데이터는 2008년 1월 이전 샘플 데이터를 삭제하였습니다. 2008년 1월을 전후로 회귀모형에 구조모형이 있었기 때문에 금융위기 이후 기간만 샘플데이터로 사용하기 위해 2008년 1월 이전 데이터를 모두 삭제하였습니다.
proc reg data=all;
model ipg = fyff4 / dwprob;
run;
proc autoreg data=all;
model ipg=fyff4 / nlag=1 method=ml maxiter=200;
run;
fyff4는 미국산업생산성장율을 4달 전 연방펀드 이자율(fyff4)에 단순회귀분석을 하기 위한 SAS Coding입니다. 에러텀에 자기상관이 있는대도 불구하고 최소자승법으로 추정한 결과와 비교하기 위해 넣었습니다.
/DWPROB; 를 사용하여 Durbin-Watson d 검정을 하는 명령을 옵션으로 추가하였습니다.
샘플데이터는 금융위기 이후, 즉 2008년 1월부터 2018년 8월까지를 사용하였습니다.
제일 중요한 명령어는 아래에 있는 명령어입니다.
proc autoreg data=all;
model ipg=fyff4 / nlag=1 method=ml maxiter=200;
run;
최소자승법을 위한 코딩은 PROC REG 이어었으나 최우추정법을 사용하기 위해서는 PROC AUTOREG을 써야합니다.
NLAG=1은 자기상관의 형태 AR(1), 식 (2)라는 것을 알려주기 위한 것이며, 추정방법은 최우추정법(ML, Maximum Likelihood), METHOD = ML이라는 표기를 하였습니다.
마지막으로 MAXITER = 200 은 최대 반복계산 200번을 의미합니다.
최대 반복계산은 우도함수(likelihood function)가 정규분포처럼 최대점을 찾기 쉽게 되어있습니다.
최소자승법(OLS)을 통해 회귀계수를 추정한 결과
최우추정법(MLE)를 통해 회귀계수를 추정한 결과
위의 결과는 OLS와 MLE를 통해 회귀계수들을 추정한 결과입니다.
AICC는 샘플데이터 수가 작을 경우 AIC가 적절한 페널티(penalty)를 주지 못하는 단점을 보완하기 위해 페널티를 증가시켜 AIC를 보완한 것으로 샘플데이터 수 N이 증가하면 AICC도 AIC가 됩니다.
HQC는 AIC나 SBC와 약간 다른 수식이며, AIC나 SBC와 같이 모형 선택 잣대로 사용될 수 있습니다.
Log Likelihood는 극대화된 로그우도함수 값입니다.
우선, 최소자승법(OLS)으로 추정한 fyff4의 계수 추정치는 -2.89514이고 t value는 -3.61입니다.
이에 비해 최우추정법(MLE)를 통해 얻은 추정치는 -2.7424로 OLS 추정치보다 절대값이 약간 감소했으며, t value는 -2.71로 OLS로 얻은 값 -3.61보다 절대값이 작아졌습니다.
t value가 감소한 결과를 보면, 오차항에 자기상관이 있는데도 불구하고 OLS로 모형의 계수를 추정하면 t value가 실제 정확한 값보다 더 크게 나올 확률이 높다는 사실을 알 수 있습니다.
모형의 에러텀에 자기상관성이 있는지를 검정하는 Durbin-Watson d 검정을 한 결과 검정 통계치(test statistic)는 1.478이고 이 값의 확률값(probability value), Pr < DW는 0.001입니다. 확률값이 0.05보다 훨씬 작기 때문에 귀무가설인 '자기상관이 없다.'는 강하게 기각되어 에러텀에 자기상관이 존재한다는 것을 강하게 말하고 있습니다.
회귀모형의 오차항(error term)에 자기상관이 존재할 경우 이것을 무시하고 최소자승법으로 계수들을 추정하면 추정치의 standard error, t value, Pr > | t | 등은 잘못된 값들이 됩니다.
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.