평활법 실습

단순 평활법

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)

지수 예측 모델

지수 예측모델 사용법

ets 함수

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")


정상적 시계열

정상성(stationarity)

stable : 안정된, 안정적인

시계열의 확률적 성질들이 시간의 흐름에 영향 X

정상성이 중요한 이유

분석의 목표는 현재까지 데이터를 기반으로 미래를 예측. 이때 지금까지 유지된 성질이 미래에도 유지될거라는 믿음 필요.

비정상적인 시계열 데이터로 수학적인 변환을 통해 정상적 시계열 데이터로 변환 할 수 있음.

정상성 설명1 정상성 설명2

AR(autoregressive) 모형

자기회귀 표현방식 시점 t의 값 \(Z_t\)을 과거시점들의 값들을 이용한 회귀식으로 표현 \(a_t\)는 백색잡음(whitenoise), \(\pi_i\)는 상수

\(Z_t = \pi_{1}Z_{t-1} + \pi_2Z_{t-2} + ... + a_t\)

MA(moving average) 모형

이동평균 표현방식 시점 t의 값 \(Z_t\)을 현재와 과거시점의 백색잡음으로 표현 \(\psi_i\)는 상수

\(Z_t = a_t - \psi_1a_{t-1} - \psi_2a_{t-2} - ...\)

ARMA 모형

AR방식과 MA방식이 결합된 형태

ARIMA 모형

ARMA모형에 차분 과정 추가

어떤 모형을 선택해야 할 까?

이론적 배경

ACF

자기상관함수(ACF) : 시차에 따른 일련의 자기상관

ACF는 시차에 따른 관측값 간의 연관 정도를 보여줌. 시차가 커질수록 ACF는 점차 0에 가까워짐. (멀리 떨어진 데이터일 수록 연관이 적다.) (10년전 키로 일주일후 키를 예측하는 것보다, 한달전 키로 일주일 후 키를 예측하는게 더 정확하다.)

정상 시계열의 ACF는 빠르게 0으로 접근(시간에 상관없기 때문) 비정상 시계열은 ACF는 천천히 감소하며 종종 큰 양수를 가질 수 도.

PACF

편자기상관(patial autocorrelation) : 시차가 다른 두 시계열 데이터 간의 순수한 상호 연관성 두 시점 사이의 값들은 무시

다음주

ACF, PACF를 R로 구하고, 어떤 모델이 더 적합한지 판단

정상 시계열로 변환하는 법