So-net無料ブログ作成
検索選択

Pythonで状態空間モデリング(1) -時変の平均をもつ時系列モデルの状態空間表現(その1)- [統計学]

最近はPythonをデータ分析に活用する動きが活発になっている。Rとともに2大勢力になってきている。ついに「Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理」という邦訳本も出版されたことだし、日本でもPythonをデータ分析に使う人が増えると思われる。予測モデルを作る際には一般的にはscikit-learnを使うわけだが、こちらは英語のリファレンスしかないので普及にはもう少し時間がかかるだろう。おそらく、scikit-learnについての日本語の解説書もそのうち出版されるのではないかと思っている。

さて、私は状態空間モデリング勉強を姜先生の「ベイズ統計データ解析 (Rで学ぶデータサイエンス 3)」という本を使って進めている。この本はカルマンフィルタのRでの実装が記載されており、実に有用である。難しい数式が並ぶカルマンフィルタも実際のコードを解釈しながら勉強すると比較的シンプルで理解しやすことが分かった。

さらに勉強を進めるべく本のRコードをPythonに翻訳してみた。このような翻訳作業によって状態空間モデリングとPythonの両方を一篇に身に着けてしまおうとある時に思いついた。これはなかなか学習効率がよいので今後も続けてみようと思う。やっぱり統計や機械学習の勉強はコーディングしてみるのが近道である。今回の記事では姜先生の本の7章を解説しつつRコードをPythonにへの翻訳を紹介する。

◆状態空間モデリング
・状態空間モデリングは時系列モデルの一種であり、非定常時系列をモデル化することができる。
伝統的なARIMAモデルなどの時系列モデルを統一的に扱うことができる。
・カルマンフィルタなどの推定アルゴリズムが一見難しいのと分かりやすいRパッケージが少ないためか、あまり一般に普及していない気がする。姜先生の本はコードもあるし分かりやすいのでもっと読まれるべきであろう。
・状態空間モデルは次のようにシンプルな形をしている2つの式から構成される(状態空間表現と呼ばれている)。ところが、この式に複数の要素を導入でき複雑なモデルを構築することができる。シンプルさと複雑さが同居するところが面白いところだ。
・潜在変数を扱えるところもこのモデルの特徴。しかもモデラーの感覚を柔軟に式に導入することができる。これが最大の魅力と現時点では考えている。

【状態空間表現】
・システムモデル
  
・観測モデル
  


◆今回の事例:「時変の平均をもつ時系列モデルの状態空間表現」
・時変の平均をもつ時系列モデルを状態空間表現にしてみる

【時変の平均をもつ時系列モデル】
  

【潜在的な平均の推移】
  

【状態空間表現】
,,
,,
,

【Pythonコード】
#!/usr/bin/env python
#-*- coding:utf-8 -*-
##package
import numpy as np
##define Matrix
L = 1; k = 2; m = 1
F = np.zeros((k, k)); G = np.zeros((k, m))
H = np.zeros((L, k)); R = np.identity(L)

F[0][0] = 2; F[0][1] = -1; F[1][0] = 1
G[0][0] = 1; H[0][0] = 1



(次回へ続く)



Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

  • 作者: Wes McKinney
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2013/12/26
  • メディア: 大型本



ベイズ統計データ解析 (Rで学ぶデータサイエンス 3)

ベイズ統計データ解析 (Rで学ぶデータサイエンス 3)

  • 作者: 姜 興起
  • 出版社/メーカー: 共立出版
  • 発売日: 2010/07/24
  • メディア: 単行本



nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。