library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
ma(nhtemp,2)
## Time Series:
## Start = 1912
## End = 1971
## Frequency = 1
## [1] NA 50.975 50.550 50.250 49.450 48.750 49.600 50.225 50.350 50.975
## [11] 50.775 49.825 49.700 49.725 49.525 50.175 50.775 50.900 51.600 52.225
## [21] 51.875 50.950 50.225 50.150 50.650 51.350 51.525 50.600 50.050 50.800
## [31] 51.075 50.975 51.375 51.700 51.750 51.425 51.825 52.600 52.375 52.475
## [41] 53.375 53.575 52.650 51.725 51.600 51.575 51.400 51.750 51.925 51.475
## [51] 50.950 51.000 51.425 51.550 51.400 51.300 51.600 51.850 52.150 NA
par(mfrow = c(3,1))
plot(nhtemp, lwd = 2, ylab = "Temperature", main = "raw time series")
plot(ma(nhtemp,3), lwd = 2, ylab = "Temperature", main = "3 moving average time series", col = "green")
plot(ma(nhtemp,11), lwd = 2, ylab = "Temperature", main = "11 moving average time series", col = "blue")
head(co2)
## Jan Feb Mar Apr May Jun
## 1959 315.42 316.31 316.50 317.56 318.13 318.00
co2.decomp = stl(co2, s.window = "periodic")
par(mfrow = c(1,1))
plot(co2.decomp, lwd = 2, main = "시계열 성분 분해")
계절 효과 제거
co2.no_seonal = co2 - co2.decomp$time.series[,"seasonal"]
par(mfrow = c(2,1))
plot(co2, lwd = 2, main = "co2 raw data")
plot(co2.no_seonal, lwd = 2, main = "co2 no seonal effect")
par(mfrow = c(1,1))
monthplot(co2, xlab = "Mouth" ,lwd = 2, main = "월별 데이터")
seasonplot(co2, lwd =2 , main = "연도별 데이터", year.labels = FALSE)
지수 예측모델 사용법
LakeHuron
## Time Series:
## Start = 1875
## End = 1972
## Frequency = 1
## [1] 580.38 581.86 580.97 580.80 579.79 580.39 580.42 580.82 581.40 581.32
## [11] 581.44 581.68 581.17 580.53 580.01 579.91 579.14 579.16 579.55 579.67
## [21] 578.44 578.24 579.10 579.09 579.35 578.82 579.32 579.01 579.00 579.80
## [31] 579.83 579.72 579.89 580.01 579.37 578.69 578.19 578.67 579.55 578.92
## [41] 578.09 579.37 580.13 580.14 579.51 579.24 578.66 578.86 578.05 577.79
## [51] 576.75 576.75 577.82 578.64 580.58 579.48 577.38 576.90 576.94 576.24
## [61] 576.84 576.85 576.90 577.79 578.18 577.51 577.23 578.42 579.61 579.05
## [71] 579.26 579.22 579.38 579.10 577.95 578.12 579.75 580.85 580.41 579.96
## [81] 579.61 578.76 578.18 577.21 577.13 579.10 578.25 577.91 576.89 575.96
## [91] 576.80 577.68 578.38 578.52 579.74 579.31 579.89 579.96
lake.ets = ets(LakeHuron, model = "ANN")
lake.ets
## ETS(A,N,N)
##
## Call:
## ets(y = LakeHuron, model = "ANN")
##
## Smoothing parameters:
## alpha = 0.9999
##
## Initial states:
## l = 580.3824
##
## sigma: 0.7491
##
## AIC AICc BIC
## 396.6777 396.9331 404.4326
lake.ets.pred = forecast(lake.ets, h = 5)
lake.ets.pred
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1973 579.96 579.0000 580.9200 578.4918 581.4281
## 1974 579.96 578.6025 581.3175 577.8838 582.0362
## 1975 579.96 578.2974 581.6226 577.4172 582.5027
## 1976 579.96 578.0402 581.8798 577.0239 582.8961
## 1977 579.96 577.8136 582.1064 576.6774 583.2426
plot(lake.ets.pred, lwd = 2, lty = 3, flwd = 3, shadecols = c("royalblue","red"),main = "forecast for level of Lake Huron")
stable : 안정된, 안정적인
시계열의 확률적 성질들이 시간의 흐름에 영향 X
자기회귀 표현방식 시점 t의 값 \(Z_t\)을 과거시점들의 값들을 이용한 회귀식으로 표현 \(a_t\)는 백색잡음(whitenoise), \(\pi_i\)는 상수
\(Z_t = \pi_{1}Z_{t-1} + \pi_2Z_{t-2} + ... + a_t\)
이동평균 표현방식 시점 t의 값 \(Z_t\)을 현재와 과거시점의 백색잡음으로 표현 \(\psi_i\)는 상수
\(Z_t = a_t - \psi_1a_{t-1} - \psi_2a_{t-2} - ...\)
AR방식과 MA방식이 결합된 형태
ARMA모형에 차분 과정 추가
이론적 배경
자기상관함수(ACF) : 시차에 따른 일련의 자기상관
ACF는 시차에 따른 관측값 간의 연관 정도를 보여줌. 시차가 커질수록 ACF는 점차 0에 가까워짐. (멀리 떨어진 데이터일 수록 연관이 적다.) (10년전 키로 일주일후 키를 예측하는 것보다, 한달전 키로 일주일 후 키를 예측하는게 더 정확하다.)
정상 시계열의 ACF는 빠르게 0으로 접근(시간에 상관없기 때문) 비정상 시계열은 ACF는 천천히 감소하며 종종 큰 양수를 가질 수 도.
편자기상관(patial autocorrelation) : 시차가 다른 두 시계열 데이터 간의 순수한 상호 연관성 두 시점 사이의 값들은 무시
ACF, PACF를 R로 구하고, 어떤 모델이 더 적합한지 판단
정상 시계열로 변환하는 법