📈📉 비즈니스 어낼리틱스/🕑 시계열 분석

🕑시계열 데이터 분석 13 - 자기상관 해결 5. 자기상관오차회귀모형

nyamin9 2023. 4. 25. 13:29

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


🕑 오차의 자기상관 해결 05. 자기상관오차회귀모형

 

 

🕑 오차의 자기상관 해결방법

 

1. 변수변환 & 회귀분석

 

2. 회귀 가변수를 이용한 회귀모형

 

3. 시계열 모형 : 선형회귀모형의 형태 : 시간이 다른 변수값(과거값)을 사용한다는 점에서 다름

 

  • 자기회귀모형 (Autoregressive, AR model)

      - y 변수를 과거의 y값으로 적합. .

 

  • 자기회귀시차분포모형 (Autoregressive Distributed Lag –ARDL)

      - y변수를 x변수와 과거의 x값, 과거의 y값으로 적합.

 

  • 자기상관오차회귀모형 (Regression model with autoregressive error)

      - y변수를 X변수로 적합. 오차항의 자기상관은 오차항의 AR로 적합.

 

  • 그 외 시계열 모형 (Moving average (MA), ARMA, ARIMA)

 

4. 회귀모형에서 회귀계수의 추정방법을 바꾸는 방법

 

 


☑️ Y 변수만 분석할 경우 사용하는 방법

  • 시계열분해기법(time series decomposition method)

  • 지수평활법(exponential smoothing)

  • ARIMA(autoregressive integrated moving average)

 

 

☑️ X-Y 변수의 관계를 분석할 경우 -> X의 변화의 따른 Y의 변화 파악

  • 회귀모형

  • 시계열회귀모형

  • 자기회귀모형

  • 자기회귀시차분포모형

  • 자기상관오차회귀모형

  • 전이함수잡음모형(transfer function noise model)

  • 개입분석(intervention analysis)

 

 

이 중에서 자기회귀모형, 자기회귀시차분포모형, 자기상관오차회귀모형을 시계열 모형이라고 합니다.

 

 


🚩 시계열 모형을 위한 가정 - 안정적 시계열 : Stationary Condition (정상성 조건)

 

  • a) 평균이 해당기간 동안 일정해야 하며, 트렌드가 없어야 합니다.



 

  • b) 분산이 해당기간 동안 일정해야 합니다.



 

  • c) 공분산 혹은 자기상관은 시차에만 의존해야 합니다. 즉, 일정 시차를 두고 반복되는 추세를 보줘야 합니다.



  • d) 위 가정을 만족하지 못하면 변수변환 (로그, 차분)을 통해 정상시계열로 만들어 다음의 모델을 사용합니다.

   

    • AR

    • DL

    • Regression model with autoregressive error

    • 혹은 좀더 복잡한 시계열 모형을 사용하여 해결

 

 


🕑 01. 자기상관오차회귀모형

 

 

오차에 대한 AR모델과 X,Y에 대한 회귀모형이 둘 다 존재하는 모델을 사용합니다.

 

회귀모형은 독립변수로 $X_{t}$ 만 사용하여 적합합니다.

$Y_t=β_0+ϴ_1X_t+u_t$

 

오차항의 자기상관 $u_t$는 오차항의 AR모형으로 따로 적합해줍니다.

$u_t=ρu_{t-1}+v_t$

 

따라서 오차항의 적합을 위해서는 오차항 AR모델의 차수를 미리 정해야 합니다.

주로 1차 자기상관이 있다는 가정 하에 선형 모델을 적합해줍니다.




🕑 02. 추정방법 : Cochrane-Orcutt Estimation 추정

 

 

$Y_t=β_0+ϴ_1X_t+u_t$

$u_t=ρu_{t-1}+v_t$

 

먼저 회귀모형으로 $β,ϴ$ 를 추정하여 $X,Y$ 를 적합시키고, 오차항을 구해줍니다.

이후 오차항을 적합시키는 과정에서 $ρ$ 를 추정합니다.

$ρ$ 를 사용해서 다시 오차항을 계산하고, 다시 선형회귀식을 적합합니다.

이를 계속 반복하다가 β,ϴ,ρ가 한 지점으로 수렴하면 종료합니다.

 

 


🕑 03. regression with first order autocorrelated error : GLS(EGLS) 사용

 

 

Cochrane-Orcutt 모델링. 오차항 모델링 : cochrane.orcutt(LINEAR-MODEL) 함수

 

선형모델 따로, 오차항 따로 모델링을 진행합니다.

 

 

 

☑️ 모델링 순서 : 선형회귀모델링 -> Cochrane-Orcutt 모델링

#install.packages("orcutt")
library(orcutt)

## 1. 선형모델 모델링
regmodel = lm(inf~pcwage)

## 2. Cochrane-Orcutt 모델링. 오차항 모델링
model <- cochrane.orcutt(regmodel)
summary(model)
## Call:
## lm(formula = inf ~ pcwage)
## 
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.218302   0.024630   8.863  < 2e-16 ***
## pcwage      0.140037   0.068527   2.044  0.04199 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1986 on 266 degrees of freedom
## Multiple R-squared:  0.0155 ,  Adjusted R-squared:  0.0118
## F-statistic: 4.2 on 1 and 266 DF,  p-value: < 4.199e-02
## 
## Durbin-Watson statistic 
## (original):    1.39673 , p-value: 3.71e-07
## (transformed): 1.89950 , p-value: 2.123e-01

 

 

선형모델을 먼저 적합하고, 그 다음 오차항을 적합해서 최종 모델을 만듭니다.

summary 결과, 각 인수의 p-value와 더빈왓슨검정 결과를 보여줍니다.

 

p-value는 알고있는 대로 해석하고, 더빈왓슨검정 결과는 오차의 자기상관에 대한 적합 유무에 따른 값을 보여줍니다.

Original 모델은 p-value가 0.05보다 작기에 1차 자기상관이 있고, Transformed 모델은 1차 자기상관이 해결되었습니다.

 

 


🕑 04. 통계량 확인

 

 

만들어진 최종 모델을 호출해서 모델의 통계량을 확인합니다.

 

 

 

☑️ cochrane.orcutt 모델 호출

model
## Cochrane-orcutt estimation for first order autocorrelation 
##  
## Call:
## lm(formula = inf ~ pcwage)
## 
##  number of interaction: 4
##  rho 0.300656
## 
## Durbin-Watson statistic 
## (original):    1.39673 , p-value: 3.71e-07
## (transformed): 1.89950 , p-value: 2.123e-01
##  
##  coefficients: 
## (Intercept)      pcwage 
##    0.218302    0.140037

 

 

$ρ$ 값은 0.3의 값으로 수렴하였고, 수렴까지는 4번의 interaction이 반복되었습니다.

 

더빈왓슨 통계량의 결과 original 모델, 즉 오차항의 자기상관에 대한 적합이 없는 모델은 1차 자기상관이 존재하였으며, 자기상관이 적합된 transformed 모델은 1차 자기상관 문제가 해결되었습니다.

 

 


🕑 05. 자기상관오차 회귀모형 모델 결과

 

 

$inf_t = 0.2 + 0.14pcwage_t + ε_t$

$ε_t = 0.3ε_t-1 + u_t$

 

오차항 $ε_t$에는 자기상관이 존재하더라도, 오차항의 오차항 $u_t$에는 없어야 합니다.

 

선형회귀 적합에 dynlm 함수를 사용할 수도 있습니다.

 

현재 $Y$변수의 적합을 위해 과거의 $Y$ 변수만을 사용할 때, 만약 dynlm만 사용한다면 자기상관이 잡히지 않을 가능성이 굉장히 높습니다. 이러한 경우 Cochrane-Orcutt Estimation을 사용해 오차항을 적합하면 자기상관이 잡힌 모델을 생성할 수 있습니다.

 

 

자기회귀시차분포모형에서 유의미했던 3개월 전 임금 상승률을 사용하여 모델을 적합하겠습니다.

 

 

 

☑️ dynlm 모델로 Cochrane-Orcutt Estimation 수행

regmodel = dynlm(inf~L(pcwage,3)) 
model <- cochrane.orcutt(regmodel)
summary(model)
## Call:
## dynlm(formula = inf ~ L(pcwage, 3))
## 
##              Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)  0.191793   0.024837   7.722 2.403e-13 ***
## L(pcwage, 3) 0.239854   0.068119   3.521 0.0005064 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1965 on 263 degrees of freedom
## Multiple R-squared:  0.045 ,  Adjusted R-squared:  0.0414
## F-statistic: 12.4 on 1 and 263 DF,  p-value: < 5.064e-04
## 
## Durbin-Watson statistic 
## (original):    1.35984 , p-value: 8.72e-08
## (transformed): 1.87268 , p-value: 1.557e-01

 

 

☑️ 모델 호출

model
## Cochrane-orcutt estimation for first order autocorrelation 
##  
## Call:
## dynlm(formula = inf ~ L(pcwage, 3))
## 
##  number of interaction: 2
##  rho 0.319591
## 
## Durbin-Watson statistic 
## (original):    1.35984 , p-value: 8.72e-08
## (transformed): 1.87268 , p-value: 1.557e-01
##  
##  coefficients: 
##  (Intercept) L(pcwage, 3) 
##     0.191793     0.239854

 

 


이번에는 $Y$ 변수인 월별 물가 상승률의 과거값과 3개월 전의 임금상승률을 사용해 모델을 적합하겠습니다.

 

 

 

☑️ dynlm 모델로 Cochrane-Orcutt Estimation 수행

regmodel2 <- dynlm(inf~L(inf,1)+L(inf,2)+L(inf,11)+L(pcwage,3))
model2 <- cochrane.orcutt(regmodel2)
summary(model2)
## Call:
## dynlm(formula = inf ~ L(inf, 1) + L(inf, 2) + L(inf, 11) + L(pcwage, 
##     3))
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)   0.224709   0.038448   5.844 1.566e-08 ***
## L(inf, 1)    -0.067187   0.058835  -1.142 0.2545571    
## L(inf, 2)    -0.247145   0.058691  -4.211 3.542e-05 ***
## L(inf, 11)    0.198143   0.066723   2.970 0.0032692 ** 
## L(pcwage, 3)  0.229187   0.066833   3.429 0.0007069 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1921 on 252 degrees of freedom
## Multiple R-squared:  0.1416 ,  Adjusted R-squared:  0.128
## F-statistic: 10.4 on 4 and 252 DF,  p-value: < 8.316e-08
##
## Durbin-Watson statistic 
## (original):    1.89079 , p-value: 1.817e-01
## (transformed): 1.98715 , p-value: 4.745e-01

 

 

☑️ 모델 호출

model2
## Cochrane-orcutt estimation for first order autocorrelation 
##  
## Call:
## dynlm(formula = inf ~ L(inf, 1) + L(inf, 2) + L(inf, 11) + L(pcwage, 
##     3))
## 
##  number of interaction: 57
##  rho 0.452438
## 
## Durbin-Watson statistic 
## (original):    1.89079 , p-value: 1.817e-01
## (transformed): 1.98715 , p-value: 4.745e-01
##  
##  coefficients: 
##  (Intercept)    L(inf, 1)    L(inf, 2)   L(inf, 11) L(pcwage, 3) 
##     0.224709    -0.067187    -0.247145     0.198143     0.229187

 

 

확실히 오차항의 자기상관을 잡아주니까 더빈 왓슨 검정의 결과가 괜찮게 나왔으며, 전반적인 모델의 성능도 좋았습니다.

 

지금까지는 자기상관 제거를 위해 변수를 변환 하는데에 많은 시간이 걸렸는데, cochrane.orcutt 함수를 통해 보다 쉬운 방식으로 잡아줄 수 있었습니다. 다양한 경우에, 유용하게 사용할 수 있을 것 같습니다!!

 

다음 포스팅에서는 지금까지 다룬 시계열 모형을 정리하고, 이를 사용해서 미국 신규주택건설에 대한 데이터를 직접 모델링해보도록 하겠습니다!!