728x90

다음과 같은 데이터가 있습니다. 그냥(?) 60개의 데이터입니다.

이것은 그냥 단순한 60개의 데이터입니다.

향후 10개의 데이터를 예측해 보기로 합니다.

 

그런데 60개이니까,  혹시 12개월 5년 치 데이터가 아닐까? 하며 월별 데이터로도 생각할 수도 있습니다.

그럴 수도 있고, 그렇지 않을 수도 있습니다.

아무런 의미도 없는 그냥 단순한 데이터인데, 뜬금없이 60개니까 월별(^) 데이터로 

한정하는 것은 때로는 잘못된 경우가 되기도 합니다.

 

644 546 515 506 468 729 719 626 677 679 654 630 662 539 419 592 376 390 292 340
457 254 368 376 254 85 198 212 262 368 554 538 478 623 522 404 360 619 524 562
438 327 311 466 423 515 367 340 279 264 411 409 436 468 409 275 265 301 423 405
384 557 474 519 459 504 349 312 303 423 384 425 391 317 404 368 516 558 537 579
567 606 554 335 367 447 354 257 237 212 283 318 439 611 598 586 602 558 541 527

 

(1) 그래도 혹시 12개월 마다 계절성이 있는 것 아닌가?
(2) 아예 별 의미도 없는 데이터,  제멋대로 된 데이터가 아닐까?
     뭐 분석할 것도 없는 것 아닌가? 생각해 보시는 것도 필요합니다.

 

[실습]

 

(1) 일단 데이터를 읽어 온다. read.csv, read.table 등을 이용하기도 하고...

d:\r_stat\ar1.dat 

(2) 시계열로 바꾸기 전에 데이터 그림을 그려 본다.

... 흠..

setwd("d:/r_stat")
(ts01 <- scan("ar1.dat",what="")) # 데이터 읽어오기
ts01
plot(ts01)

시계열이 있는 것 같기도 하고, Random 하게 움직이는 데이터이기도 하고...
상관분석, 회귀분석을 할 때에도 그림을 그려보는 것이 필요합니다.

물론 전처리 과정에서는 필수적인 코스입니다 ^^^

 

(3) 도대체 이 숫자들이 시간에 따른 데이터이라면 데이터 내에 어떤 패튼이 있기나 한 건가?

     사실 이 데이터는 AR(1) 모형이 적합한 데이터입니다.

     그런데 사전에 알려 주지 않으면 어떻게 알 수 있을까?

 

(4) 이때 별 생각없이 ACF, PACF 를 구해 봅니다. 아까 (2)에서 별 생각없이 그래프로 그려 보는 것과 같은 개념입니다.

    ACF    Autocorrelation Function

    PACF  Partial Autocorrelation Function

 

acf(ts01)     # ts01 데이터를 이용하여 ACF 를 구해 봅니다.
Error in acf(ts01) : 'x'는 반드시 수치형이어야 합니다

ts01 <- as.numeric(ts01)    # ts01 을 수치형으로 바꿉니다.

acf(ts01)

pacf(ts01)

 

ACF 그림 - ACF가 천천히 감소하니까 일단 AR 모형인 듯
PACF 그림 - 1차에서만 의미가 있고 2차부터는 의미가 없어 AR(1) 인 듯

(5) ACF와  PACF를 보면 AR(1) 이 맞겠구나... (3)에서 언급한 내용이 조금 해결됩니다.

 

(6) AR(1) 모형이란 것을 알면, Z(t) = a + b1 Z(t-1) 와 같은 모형인데
    이제 계수(parameter) a와 b1의 값을 구하면 되겠네요.
    회귀분석과 비슷하게 구하면 됩니다.

 

arima(ts01,order=c(1,0,0))

arima 함수를 이용하는데, 처음 인수는 시계열데이터, 그 다음은 order 인수인데 (p,d,q) 형태로 들어갑니다.

p:AR 의 차수

d: difference 의 차수

q: MA 의 차수

여기서는 AR(1) 이니까 (1,0,0)  이 됩니다.

 

(7) 이렇게 구한 a와 b1 이 의미가 있는지를 살펴봅니다. 이때 하는 것이 표준편차의 1.96배 보다 크면
     a, b1 이 의미가 있고, 1.96 배 보다 작으면 a, b1 이 별로 의미가 없다...라고 결론을 내립니다.

     사실 이때 계수 a는 별로 따지지를 않습니다. 이는 회귀분석에서도 비슷한 개념입니다.

 

(8) (7)에서 계수가 의미가 있는 것이 알려지면 모형 확립은 완성되었습니다.

    이제 이 모형으로 예측(prediction)을 하면 됩니다.

 

predict(arima(ts01,order=c(1,0,0)),n.ahead=10 )

 

다음은 AR(2) 그리고 MA 모형에 대해서 설명드리겠습니다 ^^^

 

* 혹시 광고가 뜨는 경우가 있는데 관심이 있으시면 클릭해 보시면 감사
  구글에서 랜덤으로 들어가는 모양 ^^^

+ Recent posts