평활법에 의한 시계열
이동평균평활법
1. 단순이동평균법 (simple moving average method)
더보기
- 정의
- 수평적 시계열에 적용(수평적 시계열: 시간의 경과에 따라 평균 수준이 변하지 않는 시계열)
- 가장 최근의 m-기간 동안 자료들의 단순평균으로 다음 값을 예측하는 방법 - 예측식
Fn+1=1m(Zn+Zn−1+⋯+Zn−m+1)=1mn∑t=n−m+1Zi=MAn
Zn: n시점에서의 실제값
Fn+1: 시점 n에서 추정한 n+1시점 예측값
2. 선형이동평균법 (linear moving method)
더보기
- 정의
- 선형 추세성을 갖는 시계열에 적용
- 이중이동평균을 이용하여 현재 시점이 n인 경우 n+l 시점의 값을 예측하는 방법
(이중이동평균(MA'): 원계열의 이동평균을 다시 이동평균한 것) - 예측식
Fn+1=an+bn⋅l=(2MAn−MA′n)+1m−1(MAn−MA′n)⋅l
MAn: 이동평균
MA′n: 이중이동평균 = 1m(MAn+MAn−1+⋯+MAn−m+1)
지수평활법
1. 단순지수평활법 (simple exponential smooting method)
더보기
- 정의
- 단순이동평균법과 같이 수평적 시계열자료에 적용되는 방법
- 단순이동평균법의 단점을 보완하고자 최근의 자료들에 대해 더 많은 가중값을 부여하는 방법 - 예측식
Fn+1=αZn+(1−α)F(n−1)+1orSMn=αZn+(1−α)SMn−1
α: 평활 상수(smoothing constant), 0과 1사이의 값
SMn: 시점 n에서의 평활 값 = SMn=αZn+α(1−α)Zn−1+α(1−α)2Zn−2+⋯
2. 선형지수평활법 (linear exponential smoothing method): 추세성을 갖는 시계열 예측을 위한 지수평활법
(1) 브라운의 선형지수평활법 (Brown's linear exponential smoothing method)
더보기
- 정의: 지수평활값과 이중지수평활값을 이용하여 미래의 값을 예측하는 방법
- 예측식
Fn+1=an+bn⋅l=2SMn−SM′n+α1−α(SMn−SM′n)⋅l
Fn+1: 시점 n+l에 대한 예측값
SMn: 지수평활값 = αZn+(1−α)SMn−1
SM′n: 이중지수평활값 = αSMn+(1−α)SM′n−1
(2) 홀트의 선형지수평활법 (Holt's linear exponential smoothing method))
더보기
- 정의
- 지수평활값과 이중지수평활값을 이용하지 않는다는 점을 제외하면 브라운 방법과 유사
- 추세를 먼저 추정한 후 이를 이용하여 예측하는 방법 - 예측식
Fn+1=SMn+Tn⋅l
SMn=αZn+(1−α)(SMn−1+Tn−1)
Tn=β(SMn−SMn−1)+(1−α)Tn−1
SMn: 자료의 평활
Tn: 추세의 평활
(3) 이차지수평활법(quadratic exponential smoothing): 시계열이 이차곡선 형태의 추세를 갖는 경우 적용하는 예측방법
계절지수평활법
1. 윈터스의 승법적 계절지수평활법 (Winters's multiplicative seasonal exponential smoothing method)
더보기
- 정의
- 홀트의 선형지수평활법을 확장시킨 방법
- 관측된 시계열이 선형추세성과 승법적 계절변동을 나타낼 때 사용하는 방법
(승법적 계절변동: 시계열의 진폭이 점차적으로 증가 혹은 감소하는 경우) - 예측식
Fn+1=(an+bnl)Sn+l−Ll=1,2,⋯,L
an=αZnSn−L+(1−α)(an−1+bn−1) : 수평성분
bn=β(an−an−1)+(1−β)bn−1 : 추세성분
Sn=γZnan+(1−γ)Sn−L : 계절성분
L: 계절성의 길이
Sn: 계절 인자
α,β,γ: 평활 상수
2. 원터스의 가법적 계절지수평활법 (Winters's additive seasonal exponential smoothing method)
더보기
- 정의
- 관측된 시계열이 선형추세성과 가법적 계절변동을 나타낼 때 사용하는 방법
(가법적 계절변동: 시계열의 계절적 진폭이 시간의 흐름에 따라 일정한 경우) - 예측식
Fn+1=an+bnl+Sn+l−Ll=1,2,⋯,L
an=α(Zn−Sn−L)+(1−α)(an−1+bn−1) : 수평성분
bn=β(an−an−1)+(1−β)bn−1 : 추세성분
Sn=γ(Zn−an)+(1−γ)Sn−L : 계절성분
L: 계절성의 길이
Sn: 계절 인자
α,β,γ: 평활 상수
trade index(순상품교역조건지수).csv
0.00MB
wattage(전력사용량).csv
0.00MB
SAS Code (더보기 클릭 ↓)
더보기
/*======================================================================================================*/
/* 선형지수평활법 */
/*======================================================================================================*/
/*===================== 데이터 불러오기 =====================*/
data trade;
infile "/home/시계열/trade index(순상품교역조건지수).csv";
input trade;
date=intnx("month", "01jan01"d, _n_-1);
format date monyy.;
run;
/* - intnx(interval, from, n): interval은 관측주기, from은 시작 지점, n은 지정된 수만큼 증가된 시점이 시간변수의 시작점
- _n_: SAS의 키워드로 데이터 수를 의미, data 단계가 처음 수행되었으면 n=1, _n_-1=0이 됨.
- intcx(interval, from, to): interval은 시간구간, 즉 관측주기, from은 시작지점, to는 종료시점
- 일별 자료 = date. 월별 자료 = monyy. 분기별 자료 = qtr. */
symbol1 i=join cv=black; /* i : join(직선), none(산점도), niddle(바늘모양), spline | cv : 점의 색 */
proc gplot data=trade;
plot trade*date=1;
run;
/*===================== 홀트 선형지수평활법 =====================*/
proc forecast data=trade method=winters trend=2 interval=month weight=0.2
out=TIMES.tout outest=toutest outall;
var trade;
id date;
run;
/* - data: proc forecast를 실행할 시계열자료가 포함된 데이터
- trend: 1(상수 추세), 2(선형적 추세), 3(2차 경향 추세) default는 2
- method
- 단계적 AR: method = stepar,
- 단순지수평활법: method = expo trend = 1
- 브라운 선형지수평활법: method = expo trend = 2
- 홀트 선형지수평활법: method = winters trend = 2
- 승법적 계절수평활법: method = winters trend = 2 season = 12(4) (추세성이 없으면 trend = 1),
- 가법적 계절수평활법: method = addwinters trend = 2 season = 12(4) (추세성이 없으면 trend = 1)
- interval: 시계열 이터의 주기(qtr, month, day)
- weight: expo, winters, addwinters 방법에서의 가중값
- lead: 예측 시점(default=12)
- var: 예측하려는 변수 */
proc print data=tout;
run;
proc print data=toutest;
run;
/* 시각화 */
data tout;
set tout;
if _type_="RESIDUAL" then delete;
run;
symbol1 h=1 l=1 i=join v=none c=black;
symbol2 h=1 l=2 i=join v=none c=black;
proc gplot data=tout;
plot trade*date=_type_/frame;
run;
/*===================== 브라운 선형지수평활법 =====================*/
proc forecast data=trade method=expo trend=2 interval=month weight=0.2
out=tout2 outest=toutest2 outall;
var trade;
id date;
run;
proc print data=tout2;
run;
proc print data=toutest2;
run;
/* 시각화 */
data tout2;
set tout2;
if _type_="RESIDUAL" then delete;
run;
symbol1 h=1 l=1 i=join v=none c=black;
symbol2 h=1 l=2 i=join v=none c=black;
proc gplot data=tout;
plot trade*date=_type_/frame;
run;
/*======================================================================================================*/
/* 계절지수평활법 */
/*======================================================================================================*/
/*===================== 데이터 불러오기 =====================*/
data wattage;
infile "/home/시계열/wattage(전력사용량).csv";
input wattage;
date=intnx("month", "01jan01"d, _n_-1);
format date monyy.;
run;
symbol1 i=join cv=black;
proc gplot data=wattage;
plot wattage*date=1;
run;
/*===================== 가법적 계절지수평활법 =====================*/
proc forecast data=wattage method=addwinters trend=2 interval=month weight=0.2
weight=0.1 weight=0.7 seasons=12 out=wout5 outest=woutest5 outfull outresid;
var wattage;
id date;
run;
proc print data=wout5;
run;
proc print data=woutest5;
run;
/* 시각화 */
data wout5;
set wout5;
if _type_="RESIDUAL" then delete;
run;
symbol1 h=1 l=1 i=join v=none c=black;
symbol2 h=1 l=2 i=join v=none c=black;
proc gplot data=wout5;
plot wattage*date=_type_/frame overlay legend;
run;
/*===================== 승법적 계절지수평활법 =====================*/
proc forecast data=wattage method=winters trend=2 interval=month weight=0.2
weight=0.1 weight=0.7 seasons=12 out=wout6 outest=woutest6 outfull outresid;
var wattage;
id date;
run;
proc print data=wout6;
run;
proc print data=woutest6;
run;
/* 시각화 */
data wout6;
set wout6;
if _type_="RESIDUAL" then delete;
run;
symbol1 h=1 l=1 i=join v=none c=black;
symbol2 h=1 l=2 i=join v=none c=black;
proc gplot data=wout6;
plot wattage*date=_type_/frame overlay legend;
run;
반응형
반응형
'SAS' 카테고리의 다른 글
[내 맘대로 SAS 공부] 범주형(categorical) 변수 처리 (0) | 2023.01.03 |
---|---|
[내 맘대로 SAS 공부] 산점도(scatter plot)과 히스토그램(histogram) (0) | 2023.01.02 |
[내 맘대로 SAS 공부] 간단한 선형 회귀 분석 (0) | 2022.12.30 |