理工学部生のメモ

大学生の気ままなメモです。書いてあることを真に受けないでください

ベイズ統計学による母数の事後分布の推定について

従来の統計学ベイズ統計学の決定的違い

従来の統計学は母集団の母数は真の値が一定に決まっており、神のみぞ知るその値に対して意味を持った水準を人為的に定め、おおよそこれくらいにあるだろう(信頼区間)と検討をつけるといった感じで統計的推測は行われてきた。

それに対しベイズ統計学の手法は、母集団の母数はサンプリングの仕方によって変動する確率変数とみなし得られた情報によってその母数の分布を推定し、分布の頻度が最大となるような母数の値が最もらしい母数であるとしたり(MAP推定)する。つまり、従来の統計学ベイズ統計学との決定的違いは母数を一定とみなすか、確率変数とみなすかというところである。

ベイズ統計学による母数の事後分布の推定について

まず、おおもとにあるのは以下のベイズの定理であることを忘れてはならない。

ベイズの定理

データDが原因H_i(i=1,2,\cdots,n)からなると仮定するとデータDが得られたもとで原因H_iが起こる確率は


P(H_i|D)=\frac{P(D|H_i)P(H_i)}{P(D|H_1)P(H_1)+,\cdots,+P(D|H_n)P(H_n)}

で与えられる。この展開定理は条件付き確立の定義から容易に求められる。

このベイズの定理を連続確率に拡張し、原因Hの集合を母数θの集合とみなすと以下のベイズ統計学の基本公式が得られる。

ベイズ統計学の基本公式


\pi(\theta|D)=kf(D|\theta)\pi(\theta)

ただし、\pi(\theta|D)事後分布f(D|\theta)(データが従う確率分布)は尤度\pi(\theta)事前分布という。 つまり(事後分布)∝(尤度)×(事前分布)と表現できる。この式が母数の事後分布を推定するにあたって非常に重要である。

具体的にはまず、データが従う確率分布(尤度)は分かっているとしたとき、母数の事前分布を知ることが出来ればベイズ統計学の基本公式の 右辺がある程度埋まり事後分布が求められそうだが、母数の事前分布などどのようにすれば分かるのだろうかという問題が生じる。しかし、 何も情報がなければ母数はどんな値でも一様にとりうると仮定するのが自然である。(理由不十分の原則) つまり事前分布は一様分布と仮定してよい。 当然母数の出方に何らかの規則が見いだせていれば一様分布ではなく、より規則に合いそうな分布を用いればよい。このようにある種の 「職人の勘」によってモデルをフレキシブルに変化させることができるのがベイズ統計学の強みである。(それと同時に批判を受ける部分でもある) 尤度と事前分布が分かれば、あとは比例定数kを求めるだけだがこれは事後分布が確率分布であるという特性を利用すればよい。つまり、 全区間で分布を積分した値が1となることを使えばkは求めることができる。

これでめでたく母数の事後分布が求まり一件落着!と思いきや、実際に計算してみると分かるのだがある大きな壁にぶち当たる。 その壁とはkの値を求める段階での積分計算が必ずしもきれいに出来ないということである。いつもいつも尤度が正規分布、事前分布が 一様分布とは限らないので解析的に解けないパターンもありうるし、さらに言うと今母数が1変数であるという暗黙の了解のもとで 話を進めているが、母数が多変量であるような状況も当然考えられる。そうしたときに母数がn個ならば解析的に解けるかも怪しい確率密度を n重積分しなくてはならなくなる。(これはキツイ!) つまり、ベイズ統計学の基本定理をより現実に近づけようとモデルを複雑にすればするほど現実的にとてもじゃないけど解けるようなものには ならないというジレンマに襲われてしまう。そこでこのジレンマを解決するために編み出されたアルゴリズムマルコフ連鎖モンテカルロ (Markov chain Monte Carlo method:通称MCMC法)である。MCMCについてはまた日を改めてまとめる。

収益率の代わりに対数差分を用いられる理由

ファイナンスの世界でよくデータの対数をとってその差の系列を調べるといったことがあります。ファイナンスを勉強したての方は何故このようなことをするのか疑問に思うでしょう。本記事では収益率を対数差分で代用してもよい理由とその動機について個人的な見解を述べたいと思います。

収益率は対数差分で近似できる

今、ある証券の価格がX_t (t=0,1,2,・・・)で時系列的に与えられるとしましょう。このとき、t期での収益率R_tは以下のようにあらわされます。


R_t=\frac{X_t-X_{t-1}}{X_{t-1}}

例えば、t期で100円だった証券がt+1期で110円となったときの収益率は(110-100)/100=0.1となります。

ここで、x=0の近傍におけるlog(1+x)のテーラー展開を考えると以下のようになります。


log(1+x)=x-\frac{x^2}{2}+\frac{x^3}{3}-\cdots

よってlog(1+x)のx=0の近傍での1次近似は以下のようになります。


log(1+x) \approx x

ここで上の式にx=R_tを代入してみましょう。すると


R_t \approx log(1+R_t)=log(1+\frac{X_t-X_{t-1}}{X_{t-1}})=log(\frac{X_t}{X_{t-1}})=logX_t-logX_{t-1}

となります。ゆえに収益率は対数差分で近似できるわけです。

なんでそんな回りくどいことするの?

普通に収益率を計算すりゃいいじゃんと思う方もいると思いますが、対数差分をとることにはいくつか理由があります。簡単に思いつく理由を列挙してみましょう。

  1. 差をとるだけなので計算アルゴリズムが簡単であるため
  2. 分散不均一構造に対する誤差を減らすため
  3. 非定常過程に対数差分系列をとることによって定常過程と扱えるため

以上の理由について具体的に説明しましょう。といっても理由1については特に言及はいらないですね。

理由2についてですが分散不均一構造とは何ぞやと思う人もいるでしょうから説明しましょう。分散不均一とは名前の通りで分散が一定ではないということです。時系列モデル等の誤差項の分散は一定であるという前提のもとで話が進むことが多いですが実際の時系列データの構造は分散は一定ではありません。株価チャートを見ればわかると思いますが比較的落ち着いた値動きをしていたと思えば激しくなったりしますよね。そのような分散不均一構造のデータに分散一定の過程をしいて分析を行おうとしたときなるべく理想と現実の乖離度を小さくするために対数変換を行おうといったところです。対数変換すれば変動幅は小さくなるので分散も一律に小さくなって差がなくなりますからね。

理由3については少し難しいのですが時系列解析の分野において定常過程(平均が一定であるような過程)を扱う状況が多くある中で実データは非定常過程(平均が一定ではなくトレンドがある過程)であることが多いです。そういった状況で対数差分系列をとることによって非定常過程を定常過程に変えることがよくおこなわれます。

VAR(ベクトル自己回帰)モデルの推定法

現時点でのある量が過去のその量だけでなく他の変量に依存して変化するようなモデルをベクトル自己回帰モデル(以下VARモデル)という。要は自己回帰(AR)モデルの多変量バージョン。基本的に変量の数が多くモデルの規模は大きい。

 Rによる推定の手順

①データの収集、Rに格納

aic関数を使って赤池情報量水準(AIC)から適当なラグを決める

③VAR関数を使って計算

④causality関数を使ってグレンジャー因果性検定を行う

⑤irf関数を使ってインパルス応答関数を求める

数値計算法第一回数値計算法の基礎メモ

問題の記述と解法

  1. 問題の本質の理解
  2. 定式化
  3. 問題の分析方法(何の分析が必要か?)

大きな枠組みで何を考えたいのか?

1.解法を検討する

  1. 回帰分析
  2. 主成分分析
  3. ルンゲ・クッタ法など(微分方程式)

2.計算アルゴリズムを決める

基本的には既存のアルゴリズムを利用する

3.言語を選びプログラムを作成

C言語javaMATLABなど

4.実行した結果の評価を行う

答えがない問題の結果の検証は時間がかかる


プログラミング言語について

  • C言語:基本的に知っていおきたい
  • Java:ネットワークプログラミング
  • PHP:スクリプト系ネットワーク言語
  • MATLAB:研究等でもっとも使いやすい

MATLABの欠点

インタプリタのため処理が遅い。計算時間がかかるものには不向き。

自己回帰モデル

目次

  1. 自己相関係数
  2. 定常性
  3. 自己回帰モデル

自己相関係数

記述統計おいて2つの変量の間の相関関係を表す指標である相関係数なるものがあるが、時系列データにおいて過去のデータと今のデータの間の相関関係を示すものを自己相関係数といい、以下のように定義される。

自己相関係数=
\frac{\displaystyle\sum_{t=h+1}^n(r_t-\bar{r})(r_{t-h}-\bar{r})}{\displaystyle\sum_{t=1}^n(r_t-\bar{r})^2}

ただし、\bar{r}=\frac{1}{n}\displaystyle\sum_{t=1}^nr_tであり、またhはラグ数と呼び比較する2つの時系列データの時間の差を表す。基本的にhが大きくなればなるほど自己相関係数の値は小さくなる。

ラグ数が2のときの関係はラグ数1の関係を二つつなげたものだと考えることができる(推移律)。しかし推移律ではなく、2つの離れたデータの直接的な関係を知りたいときは偏自己相関係数を使う。


定常性

ある確率変数列{R_1,R_2,\cdots,R_n}において

  1. E(R_t)=a
  2. V(R_t)=\gamma_0
  3. Cov(R_t,R_{t-h})=\gamma_h

をみたすようなときこの確率変数列は定常性を持つという。平均も分散も一定で、自己共分散はラグhのみに依存する。特に平均0、分散\sigma^2、共分散0のときの確率変数列を白色雑音(ホワイトノイズ)という。


自己回帰モデル

ある確率変数列:{R_1,R_2,\cdots,R_n}においてR_tR_{t-1}に何らかの関係を見いだせるときその関係性を以下のような回帰モデルで表すことができる。

R_t=\mu+\phi_1R_{t-1}+\epsilon_t

このモデルを自己回帰モデルといい、ラグは1であるのでAR(1)と表す。AR(1)モデルの構成要素は

  • 過去の情報をもとに確定的に決まる部分:\mu+\phi_1R_{t-1}
  • 過去の情報とは無関係に確率的に決まる部分:\epsilon_t

に分けられる。新しい情報は\epsilon_tのみであるので、この\epsilon_tイノベーションと呼ぶこともある。

モデルの推定

実際の分析においてAR(1)モデルのパラメーターである

  1. 自己回帰係数\phi_1
  2. 切片\mu
  3. イノベーションの分散\sigma^2

を推定する必要がある。推定法の1つとしては通常の単回帰モデルの推定と同様に最小二乗法がよく使われる。

理想的なリスク尺度とは?

バリュー・アット・リスクはリスク尺度として多少は機能するが、不十分な点が多くあった。ならば理想的なリスク尺度とはいったいどのようなものだろうか?1997年に発表されたArtzerらの『Thinking Coherently』という論文の中でリスク尺度が満足すべき公理が提示された。

コヒーレント・リスク

リスク尺度(risk measure)とはある時点でのポジションを確率変数Xとしたときに、Xを実数にマッピングする写像のことをいう。つまり、リスク尺度をρとするとその尺度の下でのリスクはρ(X)となる。ρ(X)≦0ならば、ポジションXを受け入れても損失は起こらないのでXを許容できると考える。

以下の4つの公理を満たすようなリスク尺度をコヒーレント(coherent)であるという。

  1. 平行移動不変性(Translation Invariance) すべてのXと無リスク資本の収益Cに対して、\rho(X+C)=\rho(X)-Cが成り立つ。
  2. 劣加法性(Subadditivity) すべてのX_1,X_2に対して、\rho(X_1+X_2) \leq \rho(X_1)+\rho(X_2)が成り立つ。
  3. 正の同次性(Positive Homogeneity) すべてのλ \geq 0およびすべてのXに対して、\rho(λX)=λ \rho (X)が成り立つ。
  4. 単調性(Monotonicity) X_1 \leq X_2であるすべてのX_1,X_2に対して、\rho(X_1) \leq \rho(X_2)が成り立つ。

非同次2階定数係数線形微分方程式の解法


y''+ay'+by'=f(x) \ (a,bは定数) \ \ \ \ \ \ \ \ (1)

のようなタイプの微分方程式非同次2階定数係数線形微分方程式という。(名前が長い。。。) 今仮にこの微分方程式の1つの解y_0(x)が見つかったとしよう。このもとで新たな変数を

z=y-y_0(x)

と置いたときz''+az'+bzの値をyとy_0がともに(1)式の解であることに注意して計算すると以下のようになる。

$$ \begin{align} z''+az'+bz &= (y-y_0)''+a(y-y_0)'+b(y-y_0) \\ &= (y''+ay'+by)-(y''_0+ay'_0+by_0) \\ &= f(x)-f(x) \\ &= 0 \end{align} $$ したがって、

z''+az'+bz=0

が得られ、これはzについての同次型の微分方程式であるので一般解は以下のようになる。

z=C_1y_1(x)+C_2y_2(x)

よって(1)式のyについての一般解は以下のようになる。

y=z(x)+y_0(x)=C_1y_1(x)+C_2y_2(x)+y_0(x)

この結果が意味することは結局、(1)式の一般解は、f(x)=0としたときの微分方程式の一般解に(1)式の特殊解を足し合わせたものになっているのである。

参考文献

講座 数学の考え方〈7〉常微分方程式論

講座 数学の考え方〈7〉常微分方程式論