© 2015 The MathWorks, Inc.
MATLAB
®
による時系列データ解析と予測
MathWorks Japan
アプリケーションエンジニアリング部 テクニカルコンピューティング 中川 慶子
アジェンダ
需要予測:時系列データモデリング
1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデル
目的:
– 過去データから未来の電力需要を予測する 変数:
1. 温度 2. 湿度 3. 時刻 4. 曜日 5. 休日・祝日フラグ 6. 前週の同時刻電力需要 7. 前日の同時刻電力需要 8. 前日の平均電力需要需要予測
1.データの準備
構造化データをまとめる
CSV 気象データ データベース 電力 エクセル 祝日情報便利ツール
Time Table
– 時系列データ用テーブル – リサンプリングと自動補完 Tall配列
– メモリに入り切らないデータを逐次読み込みにより処理 – 並列分散処理対応
Signal Processing Toolbox™
– 信号生成と前処理(ノイズ除去など) – 測定と特徴抽出(ピーク検出など) – たたみ込みと相関計算 – スペクトル解析(パワースペクトル、コヒーレンス) フィルタ設計環境 FDATool 信号解析環境 SPTool R2016b R2016b
アジェンダ
需要予測:時系列データモデリング
1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデル
目的:
– 過去データから未来の電力需要を予測する 変数:
1. 温度 2. 湿度 3. 時刻 4. 曜日 5. 休日・祝日フラグ 6. 前週の同時刻電力需要 7. 前日の同時刻電力需要 8. 前日の平均電力需要需要予測
需要予測 重回帰分析
非線形重回帰分析
𝑦 = 𝑏1 sin Σ𝑖𝑏𝑖𝑥𝑖 + 𝑏2sin(Σ𝑖𝑏𝑖𝑥𝑖) + 𝑏3sin(Σ𝑖𝑏𝑖𝑥𝑖)
最小二乗法を使いましたが
エラーが正規分布していますか? 正規分布の検定 ttest
相関のプロット corrplot
多重共線性の検定 colintest
Statistics and Machine Learning Toolbox Econometrics Toolbox
需要予測 ニューラルネットワーク
誤差逆伝搬法:ターゲット(応答)とのズレの分だけウエイトをずらす
ニューラルネットワーク: net = fitnet(20);
net = train(net, trainX', trainY'); forecastLoad = sim(net, testX')';
(参考)決定木:
Trees = TreeBagger(100, trainX, trainY); forecastLoad = predict(trees, testX);
Neural Network Toolbox
フィードバック
– 過去データも基底(変数)に含めて係数を推定する需要予測 リカレントニューラルネットワーク
リカレントニューラルネットワーク: net = layrecnet(1:2, 10); [Xs,Xi,Ai,Ts] = preparets(net,trainXc,trainYc);MATLAB における機械学習
機械学習
教師なし学習
教師あり学習
クラスタリング
回帰
分類
線形回帰モデル 一般化線形回帰モデル 非線形回帰モデル 回帰木 アンサンブル学習 ニューラルネット 線形判別器・2次判別器 K-最近傍識別 単純ベイズ分類 決定木 アンサンブル学習 ニューラルネット サポートベクターマシン K-平均法 階層的クラスタリング ニューラルネット 混合ガウス分布 自己組織化マップ訓練データあり
訓練データなし
アジェンダ
需要予測:時系列データモデリング
1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデルモデルの選択1
単変量モデル
– ARIMA – Autoregressive Integrated
Moving Average 自らの過去データと移動平均に依存するモデル – GARCH – Generalized Autoregressive conditional heteroskedasticity 時系列のボラティリテも含んだモデル – 定常な時系列データに対して使える
「定常性」のあ
るデータにする
ARとMA過程
ラグを決める
係数パラメータ
を推定する
観測データを
使った検証
Box Jenkins 法
時系列モデルによる予測の手順
1. 定常性などの検証
定常性はありますか? 単位根検定 unit root test
•
Augmented Dickey-Fuller 検定
•
adftest•
Phillips-Perron 検定
•
pptest•
KPSS 検定 (トレンド定常性)
•
kpsstestARCH/GARCH 効果はありますか?
•
Engle 検定
•
archtest•
Ljung-Box Q-test
•
lbqtest「定常性」のあ
るデータにする
Econometrics Toolbox概念
「定常」なデータとは?
定常: 平均と標準偏差などが時間によらず一定
非定常であるが単位根を持つとは?
–
N回微分をすると定常過程になる
100 150 200 250 300 Trend Stationary Difference Stationary Trend Line「定常性」のあ
るデータにする
2. ラグ次数を決める
0 5 10 15 20 -0.5 0 0.5 1 Lag S a m p le P a rt ia l A u to c o rr e la ti o n s PACF: Returns 0 5 10 15 20 -0.5 0 0.5 1 Lag S a m p le A u to c o rr e la ti o n ACF: Returns 0 5 10 15 20 -0.5 0 0.5 1 Lag S a m p le P a rt ia l A u to c o rr e la ti o n s PACF: Returns2 0 5 10 15 20 -0.5 0 0.5 1 Lag S a m p le A u to c o rr e la ti o n ACF: Returns2 偏自己相関係数 →AR項のラグ 二乗データの 自己相関係数 →分散の MR項のラグ 二乗データの 偏自己相関係数 →分散の AR項のラグ 自己相関係数 →MA項のラグARとMA過程
ラグを決める
Econometrics ToolboxARIMA モデル
AR(1) with constant term
𝑦
𝑡= 𝛿 + 𝑎
1𝑦
𝑡−1+ 𝜖
𝑡 MA(1) = moving average
𝑦
𝑡= 𝜖
𝑡+ 𝑏
1𝜖
𝑡−1 ARMA(1,1) with constant term
𝑦𝑡 = 𝛿 + 𝑎1𝑦𝑡−1 + 𝜖𝑡 + 𝑏1𝜖𝑡−1 ARIMA(1,1,1) – I (integrated)は微分の階数
𝑦
𝑡− 𝑦
𝑡−1= 𝛿 +𝑎
1(𝑦
𝑡−1− 𝑦
𝑡−2) + 𝜖
𝑡+ 𝑏
1𝜖
𝑡−1ARとMA過程
ラグを決める
GARCH Model
Default model: GARCH(1,1)
1 2 1 2 1 1 2
t t t t tA
G
C
y
標準偏差も含めた時系列モデル)
,
0
(
~
2 1 2 1 2 2 1 1 t t Q j j t j P i i t i t t M j j t j R i i t i tN
A
G
b
y
a
y
Generalized ARCH MA ARARとMA過程
ラグを決める
アジェンダ
需要予測:時系列データモデリング
1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデルモデルの選択3
Vector Autoregressive (VAR)
– 複数の時系列 (ベクトル)のモデル 1. 電力需要量 2. 月次平均最高気温 3. 月次平均最低気温 4. 人口 5. 失業率 6. GDP – 時系列間の線形な相互依存性を利用する
6変量VAR(p)モデル
1. Yt は(縦)ベクトル で与えられた時系列 2. a は定数ベクトル 3. Wt は平均が 0 ベクトルで、共分散行列Q の 6 次元正規分布に 従う乱数 t t t t y y y y 6 5 2 1 モデルの選択3
Vector Autoregressive (VAR)
– 複数の時系列 (ベクトル)のモデル 1. 電力需要量 2. 月次平均最高気温 3. 月次平均最低気温 4. 人口 5. 失業率 6. GDP – 時系列間の線形な相互依存性を利用する – 多重共線性に注意 – スケーリングに注意
予測のステップ
VAR:
Model = vgxset('n', numel(YSeries), 'Constant', true, 'nAR', nAR, 'Series', YSeries); Fit = vgxvarx(Model, Y);
FY = vgxpred(Fit, Horizon, [], Y, [], NumPaths);
ARIMA:
garchMdl = garch(1,1);
Model = arima(‘D’, 1, ‘Seasonality’, 12, 'MALags', 1, 'SMALags', 1, 'Variance', garchMdl); Fit = estimate(Model, Fin);
FY = forecast(Fit, 12, 'Y0', Fin);
0.前処理 1.モデルの設定 2.データによる学習・フィッティング 3.予測 4.検証 Econometrics Toolbox
VARモデルによる解析
Spec = vgxset('n', numel(YSeries), …
'Constant', true, 'nAR', nAR, 'Series', YSeries);
Spec = vgxvarx(Spec, Y);
FI = vgxproc(Spec, WX, [], Y1)
各時系列の標準偏差を設定することで
インパルス応答を見ることもできる。
まとめ 時系列データ解析
一変量 多変量 非定常 確率微分方程式 回帰分析※ NARX 機械学習 決定木など ニューラルネットワーク RNN 重回帰分析※ 定常 ARIMA GARCH VAR ※エラーが正規分布している場合 黒:Financial Toolboxご紹介したツールボックス
Neural Network Toolbox
ニューラルネットワークの構築、学習 データフィッティング クラスタリング パターン認識 深層学習 GPUによる計算の高速化 Database Toolbox 各種データベースへの アクセス ODBC JDBC GUIを用いた対話的な アクセスとSQLの作成 Econometric Toolbox 時系列モデル GARCH ARIMAX VAR 状態空間モデル パラメータ推定