matlab による時系列データ解析と予測 · 5 便利ツール time table –...

27
1 © 2015 The MathWorks, Inc. MATLAB ® による時系列データ解析と予測 MathWorks Japan アプリケーションエンジニアリング部 テクニカルコンピューティング 中川 慶子

Upload: others

Post on 13-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

1© 2015 The MathWorks, Inc.

MATLAB®による時系列データ解析と予測

MathWorks Japan

アプリケーションエンジニアリング部 テクニカルコンピューティング

中川慶子

Page 2: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

2

アジェンダ

需要予測:時系列データモデリング1. データの準備

データの取得

生データの前処理

2. 機械学習

非線形重回帰

ニューラルネットワーク

RNN

3. 自己回帰系モデル

ARIMA/GARCHモデル

VARモデル

Page 3: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

3

目的:

– 過去データから未来の電力需要を予測する

変数:

1. 温度

2. 湿度

3. 時刻

4. 曜日

5. 休日・祝日フラグ

6. 前週の同時刻電力需要

7. 前日の同時刻電力需要

8. 前日の平均電力需要

需要予測

Page 4: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

4

1.データの準備構造化データをまとめる

CSV

気象データ

データベース電力

エクセル祝日情報

Page 5: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

5

便利ツール

Time Table– 時系列データ用テーブル

– リサンプリングと自動補完

Tall配列– メモリに入り切らないデータを逐次読み込みにより処理

– 並列分散処理対応

Signal Processing Toolbox™– 信号生成と前処理(ノイズ除去など)

– 測定と特徴抽出(ピーク検出など)

– たたみ込みと相関計算

– スペクトル解析(パワースペクトル、コヒーレンス)

フィルタ設計環境

FDATool

信号解析環境

SPTool

R2016b

R2016b

Page 6: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

6

アジェンダ

需要予測:時系列データモデリング1. データの準備

データの取得

生データの前処理

2. 機械学習

非線形重回帰

ニューラルネットワーク

RNN

3. 自己回帰系モデル

ARIMA/GARCHモデル

VARモデル

Page 7: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

7

目的:

– 過去データから未来の電力需要を予測する

変数:

1. 温度

2. 湿度

3. 時刻

4. 曜日

5. 休日・祝日フラグ

6. 前週の同時刻電力需要

7. 前日の同時刻電力需要

8. 前日の平均電力需要

需要予測

Page 8: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

8

需要予測 重回帰分析

非線形重回帰分析𝑦 = 𝑏1 sin Σ𝑖𝑏𝑖𝑥𝑖 + 𝑏2sin(Σ𝑖𝑏𝑖𝑥𝑖) + 𝑏3sin(Σ𝑖𝑏𝑖𝑥𝑖)

最小二乗法を使いましたがエラーが正規分布していますか?

正規分布の検定 ttest

相関のプロット corrplot

多重共線性の検定 colintest

Statistics and Machine Learning Toolbox

Econometrics Toolbox

Page 9: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

9

需要予測 ニューラルネットワーク

誤差逆伝搬法:ターゲット(応答)とのズレの分だけウエイトをずらす

ニューラルネットワーク:net = fitnet(20);net = train(net, trainX', trainY');forecastLoad = sim(net, testX')';

(参考)決定木:Trees = TreeBagger(100, trainX, trainY);

forecastLoad = predict(trees, testX);

Neural Network Toolbox

Statistics and Machine Learning Toolbox

Page 10: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

10

フィードバック– 過去データも基底(変数)に含めて係数を推定する

需要予測 リカレントニューラルネットワーク

リカレントニューラルネットワーク:net = layrecnet(1:2, 10);[Xs,Xi,Ai,Ts] = preparets(net,trainXc,trainYc);net = train(net,Xs,Ts,Xi,Ai);forecastLoad = sim(net, testX', Xf, Af);

Neural Network Toolbox

Page 11: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

11

MATLAB における機械学習

機械学習

教師なし学習 教師あり学習

クラスタリング 回帰 分類

線形回帰モデル

一般化線形回帰モデル

非線形回帰モデル

回帰木

アンサンブル学習

ニューラルネット

線形判別器・2次判別器

K-最近傍識別

単純ベイズ分類

決定木

アンサンブル学習

ニューラルネット

サポートベクターマシン

K-平均法

階層的クラスタリング

ニューラルネット

混合ガウス分布

自己組織化マップ

訓練データあり訓練データなし

Page 12: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

12

アジェンダ

需要予測:時系列データモデリング1. データの準備

データの取得

生データの前処理

2. 機械学習

非線形重回帰

ニューラルネットワーク

RNN

3. 自己回帰系モデル

ARIMA/GARCHモデル

VARモデル

Page 13: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

13

モデルの選択1

単変量モデル– ARIMA – Autoregressive Integrated

Moving Average

自らの過去データと移動平均に依存するモデル

– GARCH – Generalized

Autoregressive conditional

heteroskedasticity

時系列のボラティリテも含んだモデル

– 定常な時系列データに対して使える

Page 14: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

14

「定常性」のあ

るデータにする

ARとMA過程

ラグを決める

係数パラメータ

を推定する

観測データを

使った検証

Box Jenkins 法

時系列モデルによる予測の手順

Page 15: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

15

1. 定常性などの検証

定常性はありますか? 単位根検定 unit root test

• Augmented Dickey-Fuller 検定

• adftest

• Phillips-Perron 検定

• pptest

• KPSS 検定 (トレンド定常性)

• kpsstest

ARCH/GARCH 効果はありますか?

• Engle 検定

• archtest

• Ljung-Box Q-test

• lbqtest

「定常性」のあるデータにする

Econometrics Toolbox

Page 16: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

16

概念

「定常」なデータとは?

定常: 平均と標準偏差などが時間によらず一定

非定常であるが単位根を持つとは?

– N回微分をすると定常過程になる

0 100 200 300 400 500 600 700 800 900 1000-50

0

50

100

150

200

250

300

Trend Stationary

Difference Stationary

Trend Line

「定常性」のあるデータにする

Page 17: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

17

2. ラグ次数を決める

0 5 10 15 20-0.5

0

0.5

1

Lag

Sam

ple

Part

ial A

uto

corr

ela

tions PACF: Returns

0 5 10 15 20-0.5

0

0.5

1

Lag

Sam

ple

Auto

corr

ela

tion

ACF: Returns

0 5 10 15 20-0.5

0

0.5

1

Lag

Sam

ple

Part

ial A

uto

corr

ela

tions PACF: Returns2

0 5 10 15 20-0.5

0

0.5

1

Lag

Sam

ple

Auto

corr

ela

tion

ACF: Returns2

偏自己相関係数→AR項のラグ

二乗データの自己相関係数→分散の

MR項のラグ

二乗データの偏自己相関係数→分散の

AR項のラグ

自己相関係数→MA項のラグ

ARとMA過程ラグを決める

Econometrics Toolbox

Page 18: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

18

ARIMA モデル

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𝜖𝑡−1

ARとMA過程ラグを決める

Page 19: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

19

GARCH Model

Default model: GARCH(1,1)

12

1

2

11

2

ttt

tt

AG

Cy

標準偏差も含めた時系列モデル

),0(~ 2

1

2

1

22

11

tt

Q

j

jtj

P

i

itit

t

M

j

jtj

R

i

itit

N

AG

byay

Generalized ARCH

MAAR

ARとMA過程ラグを決める

Page 20: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

20

アジェンダ

需要予測:時系列データモデリング1. データの準備

データの取得

生データの前処理

2. 機械学習

非線形重回帰

ニューラルネットワーク

RNN

3. 自己回帰系モデル

ARIMA/GARCHモデル

VARモデル

Page 21: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

21

モデルの選択3

Vector Autoregressive (VAR)

– 複数の時系列 (ベクトル)のモデル

1. 電力需要量

2. 月次平均最高気温

3. 月次平均最低気温

4. 人口

5. 失業率

6. GDP

– 時系列間の線形な相互依存性を利用する

Page 22: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

22

6変量VAR(p)モデル

1. Yt は(縦)ベクトル で与えられた時系列

2. a は定数ベクトル

3. Wt は平均が 0 ベクトルで、共分散行列Q の 6 次元正規分布に従う乱数

t

t

t

t

y

y

y

y

6

5

2

1

Page 23: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

23

モデルの選択3

Vector Autoregressive (VAR)

– 複数の時系列 (ベクトル)のモデル

1. 電力需要量

2. 月次平均最高気温

3. 月次平均最低気温

4. 人口

5. 失業率

6. GDP

– 時系列間の線形な相互依存性を利用する

– 多重共線性に注意

– スケーリングに注意

Page 24: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

24

予測のステップ

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

Page 25: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

25

VARモデルによる解析

Spec = vgxset('n', numel(YSeries), …'Constant', true, 'nAR', nAR, 'Series', YSeries);

Spec = vgxvarx(Spec, Y);FI = vgxproc(Spec, WX, [], Y1)

各時系列の標準偏差を設定することでインパルス応答を見ることもできる。

Econometrics Toolbox

Page 26: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

26

まとめ 時系列データ解析

一変量 多変量

非定常 確率微分方程式回帰分析※NARX

機械学習決定木などニューラルネットワーク

RNN

重回帰分析※

定常 ARIMA

GARCH

VAR

※エラーが正規分布している場合

黒:Financial Toolbox

青:Statistics and Machine Learning Toolbox

茶:Neural Network Toolbox

紫:Econometrics Toolbox

Page 27: MATLAB による時系列データ解析と予測 · 5 便利ツール Time Table – 時系列データ用テーブル – リサンプリングと自動補完 Tall配列 – メモリに入り切らないデータを逐次読み込みにより処理

27

ご紹介したツールボックス

Neural Network Toolbox

ニューラルネットワークの構築、学習

データフィッティング

クラスタリング

パターン認識

深層学習

GPUによる計算の高速化

Database Toolbox

各種データベースへの

アクセス

ODBC

JDBC

GUIを用いた対話的な

アクセスとSQLの作成

Econometric Toolbox

時系列モデル GARCH

ARIMAX

VAR

状態空間モデル

パラメータ推定

モデルの検証