SAS_codes_time series_3
34410 ワード
ぶんかいほう
成分ごとにモデルを作って正確な分析をしたい.
つまり、モデルは細分化されていると思います.
表列の成分
不規則成分ItI tIt
予測不可能な成分
システムコンポーネント
全体の傾向を表す一般多項式
特定のサイクルで変更を繰り返す
季節成分と似ているが、周期が長い場合は
分解法の基本モデル
Zt=Tt+St+Ct+ItZ_t=T_t+S_t+C_t+I_tZt=Tt+St+Ct+It
Zt=Tt×St×Ct×ItZ_t=T_t×S_t×C_t×I_tZt=Tt×St×Ct×It
4.1トレンドモデル分解
これは乗算モデルで、段階的に使用するのに適しています。
data food;
infile 'D:\UOS_2021_2\time_analysis\SAS_codes\data\food.txt';
input food @@;
date = intnx('month','1jan80'd,_n_-1);
format date monyy;
t+1; /* 행 베이스 계산이므로 */
mon = month(date);
if mon=1 then i1=1; else i1=0;
if mon=2 then i2=1; else i2=0;
if mon=3 then i3=1; else i3=0;
if mon=4 then i4=1; else i4=0;
if mon=5 then i5=1; else i5=0;
if mon=6 then i6=1; else i6=0;
if mon=7 then i7=1; else i7=0;
if mon=8 then i8=1; else i8=0;
if mon=9 then i9=1; else i9=0;
if mon=10 then i10=1; else i10=0;
if mon=11 then i11=1; else i11=0;
if mon=12 then i12=1; else i12=0;
run;
reading dataproc reg data=food ;
model food= t/dw;
output out=trendata p=trend ;
id date; run;
トレンドモデルに適合予測値が保存されます.
data adtrdata;
set trendata;
adjtrend=food/trend;
run;
乗方モデルであるため,原子材料からトレンドモデル推定の予測値を分けた.つまり,トレンド分離の資料であるため,季節モデルに適している.
proc reg data = adtrdata;
model adjtrend = i1 - i12 / dwprob;
run;
自分の相関性が見える.従って,自己回帰誤差モデルとして再適応した.
proc autoreg data=adtrdata;
model adjtrend=i1-i12/noint nlag=13 dwprob backstep;
output out=seasdata p=seasonal; run;
整理して、次のようにします.0.乗算モデルが適用されます.
1.原材料に対してトレンドモデルを採用する.
2.原材料に対してトレンドモデルで適切な予測値を区分し、トレンド性を分離する.
3.共有した資料は季節モデルとして適切である.しかし,このとき自己相関が見られるので,自己回帰誤差モデルとして好適である.
data all;
set seasdata;
keep date food trend seasonal irregular fitted;
irregular=adjtrend/seasonal;
fitted=trend*seasonal; run;
proc print data=all;
var date food trend seasonal irregular fitted; run;
原料をトレンド性と季節性に分けて予測した資料です.このとき,予測値の不規則成分を2つのモデルで分離する->本当に不規則かどうかを調べるために
これはモデルの残差とは違います!注意する.
(モデルの残差は予測値と実績値の差です.)
予測値は、トレンドモデルと季節モデルの予測値の積です.
proc arima data=all;
identify var= irregular nlag=12; run;
上で分離した不規則成分IIIに自己相関があるかどうかを調べる./** [그림 4-1] **/
proc sgplot data=all;
series x=date y=food/ lineattrs=(pattern=1 color=blue);
series x=date y=trend/ lineattrs=(pattern=2 color=black); run;
/** [그림 4-2] **/
proc sgplot data=all;
series x=date y=seasonal; run;
/** [그림 4-3] **/
proc sgplot data=all;
series x=date y=irregular;
refline 1.0/ axis=y; run;
/** [그림 4-4] **/
proc sgplot data=all;
series x=date y=food/ lineattrs=(pattern=1 color=blue);
series x=date y=fitted/ lineattrs=(pattern=2 color=black); run;
4.2移動平均法に基づく分解
いどうへいきんほう
これは予測モデルではなく,前処理と考えるべきである.
中心でさえあれば予測できない.
data index;
infile 'D:\UOS_2021_2\time_analysis\SAS_codes\data\mindex.txt';
input index @@;
date=intnx('month','1jan86'd,_n_-1);
format date monyy.;
t+1;
run;
データを読み込みます./** expand 절차를 이용하여 이동평균값 구하기 **/
proc expand data=index out=index1;
convert index = m3_centered / transformout = ( cmovave 3 );
convert index = m7_centered / transformout = ( cmovave 7 trim 3 );
convert index = m3 / transformout = ( movave 3 );
convert index = m7 / transformout = ( movave 7 );
run;
indexというデータセットのindex変数名をm 3 center/に変換するには、後述の条件に従います.cmovave
は、2つのデータに基づいて中心データを平均的に移動させる.movave
は、前のデータに基づいて以下のデータを平均的に移動する.trim
は、対応するデータを両側から削除します./** <표 4-4> **/
proc print data=index1;
var index m3 m7; run;
移動平均のチェック/** [그림 4-5] **/
proc sgplot data=index1;
series x=date y=index/ lineattrs=(pattern=1 color=black);
series x=date y=m3_centered/ lineattrs=(pattern=2 color=blue);
xaxis values=('1jan86'd to '1jan94'd by year); run;
/** [그림 4-6] **/
proc sgplot data=index1;
series x=date y=index/ lineattrs=(pattern=1 color=black);
series x=date y=m7_centered/ lineattrs=(pattern=2 color=blue);
xaxis values=('1jan86'd to '1jan94'd by year); run;
実際のデータと単純移動平均データの比較(決定)そう思いましょう.
まず移動平均法は決してモデルではない.単純な前処理です.△これが間違っているなら、そう理解したほうがいい.
でもどうしてこんなことをするの?
では、移動平均法を利用して季節性を分離することができます.
4.1でランダムにトレンドと季節を別々にモデリングする.
次に,移動平均法におけるいくつかのデータを平均化し,gaに対するhyperparameter mを季節的周期sに等しくした.
では、季節周期に基づいて平均値を計算します.
つまり、季節性がなくなったのです.
極端な例は季節性の周期性が12であり,各データは毎月測定される観察値である.
また,移動平均法のmが12であれば,適用データは12カ月の平均値である.いつも1月からではなく、元のサイクル12を平均し続けているので、サイクル性がなくなったと考えられます.
これにより季節の周期性がなくなり、トレンド(+サイクル)成分が得られる.今後のトレンド分析ではなく、トレンド成分になるだけです.
次の原材料(移動平均適用前、混同しないでください)から適切なトレンド成分を取り除くと、移動平均で除去された季節性が残ります.これが季節性成分(+不規則成分)です.
つまり、これは季節成分です.△これによる季節成分分析ではない.
あといくつかのステップがあります.
問題が発生
proc expand data=food out=foodtest;
convert food = test/transformout = ( cmovave 12 );
convert food = tc/transformout = (cd_tc 12);
run;
この二つの結果は違う
やってみよう.
例は加算モデルです.
data food;
infile 'D:\UOS_2021_2\time_analysis\SAS_codes\data\food.txt'; input food @@;
date=intnx('month','1jan80'd,_n_-1);
format date monyy.; t+1;
mon=month(date); run;
データを取得します./** expand 절차를 이용하여 가법모형의 구성 성분들을 추정하기 **/
proc expand data=food out=food2;
convert food=tc/transformout=(cd_tc 12); /*이거 이상한데? 그냥 오타인거 같은데...*/
convert food=s/transformout=(cda_s 12);
convert food=i/transformout=(cda_i 12);
convert food=sa/transformout=(cda_sa 12); run;
移動平均法で季節成分を除去し,トレンド+サイクル成分を得た.原料からそれ以外の季節成分を抽出する.
不規則成分を得る.
季節調整の成分を得る.
4.3季節調整
季節調整は原材料から季節成分を推定して除去する手順である.
つまり,先の移動平均法も季節調整と見なすことができる.
X-11 ARIMA & X-12 ARIMA
/** X12 절차에서 X11 방법에 의해 여러 가지 성분들을 산출하기 **/
proc X12 data=food seasons=12 start=jan1980;
var food;
x11;
output out=foodout a1 d10 d11 d12 d13;
run;
D 10-D 13は、季節成分、季節調整シリーズ、トレンド+循環成分、不規則成分の順である/** <표 4-7> **/
proc print data=foodout;
run;
/** [그림 4-11]~[그림 4-14] 그리기 **/
data foodout; set foodout(rename=(_date_=date food_a1=food food_d10=d10
food_d11=d11 food_d12=d12 food_d13=d13 ));
label food=" " d10=" " d11=" " d12=" " d13=" " ;
run;
/** [그림 4-11] **/
title "Final seasonal factors";
proc sgplot data=foodout;
series x=date y=d10;
run;
/** [그림 4-12] **/
title "Original time series vs Seasonally adjusted series";
proc sgplot data=foodout;
series x=date y=food/ lineattrs=(pattern=1 color=blue);
series x=date y=d11/ lineattrs=(pattern=2 color=black);
run;
/** [그림 4-13] **/
title "Original time series vs Trend cycle";
proc sgplot data=foodout;
series x=date y=food/ lineattrs=(pattern=1 color=blue);
series x=date y=d12/ lineattrs=(pattern=2 color=black);
run;
/** [그림 4-14] **/
title "Irregular component";
proc sgplot data=foodout;
series x=date y=d13;
refline 1.0/ axis=y;
run;
/* 불규칙 성분이 진짜 불규칙인지 자기상관계수 구해보기 */
proc arima data=foodout;
identify var=d13 nlag=24;
run;
Reference
この問題について(SAS_codes_time series_3), 我々は、より多くの情報をここで見つけました https://velog.io/@jj770206/SAScodestime-series3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol