「独立」と「無相関」

複数の確率変数があるとき、それらがてんでバラバラ好き勝手に変動しているとき「無相関」という言葉を使います。 また「独立」という言葉もあります。
どちらも何となく似たような意味合いなので、混同している(というか気にしていない)場合もあるようですが、もちろんこの2つは異なる定義があります。
では「無相関」と「独立」の関係を見てみましょう。

「独立」なら「無相関」か?

その通り!「独立」の方が強いです。これはまぁ言葉通りのイメージではないでしょうか。「独立」しているのに何らかの関連性があるとは考えにくいです。

「無相関」なら「独立」か?

これは違います!。お互いに関連せずに変動していても「独立」でない場合があります。
これを理解するにはやはり「相関」を正しく理解することが必要です。
相関の定義は、
です。細かい内容はさておき、重要なのは相関はデータ全体でひとつの値、つまり平均や標準偏差と同じデータの特徴を現す量であることです。
平均は分布の位置、標準偏差は分布の広がり具合です。では相関が何を表す量か?それは下の Flash で確認してください。

相関係数が 0 つまり無相関の場合とそうでない場合のデータプロットの違いが分かりましたか?無相関だと分布が全体としてまん丸になるになりますね。もっとも無相関だからといって分布がまん丸になるとは限りませんが、少なくともまん丸なら無相関です。
では下のようなプロットはどうでしょう?

このプロット (x, y) を生成する確率変数 X と Y は無相関です(まん丸で、どっちに傾けても変化なし)。しかしこの図をみて X と Y が勝手に変動していると認識する人はいないでしょう(たとえば X が 0付近なら、Y は 付近しか値がとれない)。
 

STDEVP? STDEV?

確率や統計にかかわる者が一度は悩む…否、一生悩む問題が 「標準偏差を求めるときって、STDEV を使うのか STDEVP を使うのか?」でしょう(STDEV や STDEVP は Excel の関数です。念のため)。 この2つの関数の違いは、
  • STDEVP:((データを2乗したものの平均)-(データの平均の2乗))/ データ数
  • STDEV:((データを2乗したものの平均)-(データの平均の2乗))/ (データ数 – 1)
となっていて、教科書には「データ数から1を引くのは、自由度が1つ減ってどうのこうの…」という説明があり、分かったような分からないような…みなさんはこの2つの標準偏差の違いをしっかり理解していますか?

データの分布:STDEVP

こちらがいわゆる普通の標準偏差です。高校まではこちらの標準偏差しか学ばないでしょう。

あるデータが与えられました。データの羅列だけでは特徴はつかめません。そこでデータを集約して特徴をとらえようと考えます。代表的な特徴値としては、
  • データの典型的な値は?
  • データはどれくらいばらついている?
といったところではないでしょうか。データの典型的な値としては平均や中央値、そしてバラツキ度合いが STDEVP で求められる標準偏差です(定義から明らか)。
このように単に与えられたデータの特徴の1つとしての標準偏差が STDEVP です。

データの背後の真の分布:STDEV

1年後の株価を知りたい!これは人間誰しも持つ欲望でしょう。しかし、残念ながら株価は確率的に変動していて正確に知る方法はなさそうです。
株価は確率的に変動する、そして株価の変動(対数収益率)は正規分布に従うというのが一般的な知見です(最近はいろいろと異論があるようですが)。
時々刻々と記録されていく株価の変動は1つの正規分布、つまりある平均 とある標準偏差 をもつ正規分布(この2つで正規分布は決定できるというのは常識です)に従っていて、きっと分布の平均 と標準偏差 は神様が決めているんでしょう。 われわれにはその平均 と標準偏差 を正確に知る術はありませんから、なんとかして推定したいと考えます。

例えば株価の変動を毎日毎日記録していきます。1年ごとにデータをまとめて、それぞれのデータセットの平均 と “標準偏差” を求めます。 ここで “標準偏差” 何らかの方法 (具体的には STDEV で求めた標準偏差か STDEVP で求めた標準偏差)に従ったデータのバラツキ具合を表す値です。

結論から言うと、このときの標準偏差は STDEV で求ます。それの根拠は、、、

過去のある1年のデータから”標準偏差” を求めたとします。これは神様が決めた本当の正規分布(無限の過去から無限の未来まですべての株価のデータの分布)からたまたま選んだ300個ほどのデータから求めた”標準偏差” です。これを としましょう。 他の1年のデータから求めた”標準偏差” もたまたま選んだ300個ほどデータから求めたもので、これを とします。 当然 となっていることでしょう。どの1年のデータを持ってきても、そこから求められる “標準偏差” はデータセット毎に異なる値になります。
こうして幾つかのバラバラの値の”標準偏差” が得られました。

まとめると
  • 本当の標準偏差 は絶対に知りえない
  • 観測から得られた はばらついている
です。そこで

ばらついている の平均が本当の標準偏差 になるようにしよう

という指針を採用します。
すると、STDEVP で求めた標準偏差はこの指針に従わないことが示され、STDEV の定義式で求められる標準偏差こそが新の標準偏差の推定値としてふさわしい(この指針を満たしている)ことが分かります!(細かい計算は適当な教科書を見てください)

結論:
  • データそのもののバラツキ具合:STDEVP
  • データの抽出元の真の標準偏差の推定値:STDEV
ということです。

サンプルエクセルシート

Stdevp_Stdev.xls
ダウンロード

真の分布は 平均 3(セル B1)、標準偏差 2(セル B2) の正規分布です。
そして、この分布からたまたま選んだ10個(C列からK列)のデータセットが全部で10,000セット(5行目から10004行目)あります。 そして各データセットの STDEVP(L列) と STDEV(M列) が計算されています。
STDEVP の平均(セル C2)と STDEV の平均(セル D2)を比較してみてください。STDEV の方が真の分布の推定値にふさわしいことが分かります(もっともっとデータセットを用意すれば STDEV の平均は真の標準偏差に近づいていきます)。
 

特異値分解入門(3)

不正な相関行列 が与えられると何が起きるが考えてみましょう。
前回の解説の “事実3″ で悲劇が起きます。つまり、
とする時になって、ハッと気が付くのです…「固有値が負だ!」と。
そしてコンピューターは無情にも「負の平方根は計算できません」というメッセージを残して息絶えます。
ちなみに第1回に載せた不正な相関行列、
の固有値は となります。

この困難を打破してとにかく答えを出したい!そこでいよいよ特異値分解の登場です。

先ずは特異値分解で任意の行列(なんと正方行列でなくてもいい!) はどのように分解されるか見てみましょう。
となります。とりあえずここでは として実対称正方行列であるところの相関行列 だけを対象にして順に説明していきましょう。

行列 から なる行列を計算します。この行列は自動的に、
  • 正方行列
  • 対称行列
  • 半正定値行列
となるんです!(もちろんもとの行列が実数の行列ならば も実数)。最後の特徴に注目してください。簡単に言うと、元の行列()2乗することで負だった固有値があったとしてもそれが正になるということです。
というわけで行列 は互いに直交する固有ベクトルを持ち、固有値は全て0以上となります。この固有ベクトルを並べた行列が です。
次に、 なる行列を作ります。この行列は の場合と全く同様に
  • 正方行列
  • 対称行列
  • 半正定値行列
となります。 の固有ベクトルを並べた行列が です。
最後に は行列 の固有値の絶対値を対角に並べた対角行列になります。

ここまでの手順で分かるように、各行列 は元の行列 がどんなものであれ安定的に得ることができます(計算は止まらない!)。 前にも述べましたがこれが最も重要な点です。

とにもかくにも行列 は、
という形に分解されました。次に
とします(対角成分は固有値の絶対値なので安心して平方根がとれる)。すると、
となります。

あと一息です

さてここで行列 が正しい相関行列、つまり半正定値だとどうなるか。その場合は となって特異値分解は前回の解説の結果と同じになります。 つまり とすることで、相関行列は となって目標達成です。
しかしそうでない場合はどうでしょう。その場合もやはり同じく とすることで手をうちませんか?もちろんこの場合は ではありますが(だから)…でも、
  • 安定的に答えが出る
  • 正しい相関行列の場合は正しい答えが出る
という望ましい性質を持ってます。
因みに正しい相関行列ではない場合にも、 の各成分の符号は元の行列 のそれに等しくなります(正の相関が負になることはない)。

再び
を例に計算してみましょう。特異値分解の結果は、
となります(であることが分かりますか?第1固有ベクトルの符号が逆転しています!こうすることで、固有値の方を正に揃えているという訳です)。そして、
となります。ここから を計算すると、
となります(うーん、確かにとはちょっと違うなぁ。残念)。

以上で相関行列の分解に特異値分解を用いる理由とその方法の解説を終了します。
 

特異値分解入門(2)

ここで相関行列 満たしているはずの性質を今一度列挙してみましょう。
  • 成分 は実数
  • 対称行列
  • 半正定値
  • 対角成分
  • 対角成分以外
この相関行列 を、
という形に分解するのが目的です(覚えてましたか?)
前回その方法としてコレスキー分解を紹介しましたが、どうも安心して使えなさそうだとわかりました。
次に紹介するのは固有値分解です。これは半正定値実対称行列を分解してくれます。
ではここからは線形代数の勉強です(証明などの詳細は省きます。教科書に必ず載っていますので調べてみてください)。

事実1

任意の実正方行列 は、ある正方行列 とこれまた正方行列、ただし対角成分のみしか値がない対角行列 を使って、
という形に分解される(これを行列のスペクトル分解といいます)。
ここで行列 は行列 固有ベクトルを横に並べたもので、対角行列 の成分は行列 固有値です。

事実2

更に行列 が対称行列であった場合、行列の固有ベクトルが全て直交する。すると、
となる。というわけで

事実3

更に更に行列 が半正定値だとすれば、行列の固有値は全て0以上。つまり行列 は、
と出来るではないか!すると、


となります。ここで という事実(積の順番が入れ替わる)と、対角行列は転置しても変化しないこと(この場合 )に注意すると、
やった!! とおけば目標達成じゃないか!

しかし…
実務上(ここがポイント)、相関行列がいつもいつもタチの良い形であるとは限らないのです!もちろん実対称行列であることはどんな場合も間違いないですが(複素数の相関や、の相関行列を作れるものなら作ってみろ)、 半正定値を満たさない場合は往々にしてありえるのです。例えば…
  • データに欠損があって、欠損データを適当に埋める
  • 乱数列のうち、いくつかのペアについては相関が(観測とは無関係に)与えられている
  • 測定誤差
などの場合、相関係数に矛盾が出ることがあるのです。相関係数が矛盾するとはどういうことか、ひとつ最も大げさな例を示してみましょう。
以下の3変数の相関行列を見てください。
実数であるとか、対称であるとか相関行列の性質は確かに満たしているんですが…何がおかしいか分かりますか?
  • 第1変数と第2変数の相関係数 は 1。第1変数と第2変数は完全相関で全く同じ値になる
  • 第2変数と第3変数の相関係数 は 1。第2変数と第3変数は完全相関で全く同じ値になる
ってことは必然的に第1変数と第3変数は同じ値になるはずです。しかし与えられた相関係数 は -1 になっている!つまり矛盾しているわけです。
要するに相関係数がありえない組み合わせになっている場合がありえるのです(さすがに例のような大げさなのはないでしょうけど)。このとき、相関行列は半正定値ではなくなってコレスキー分解が機能しなくなります。

実務上、相関行列が与えられたら(それに矛盾があろうとなかろうと)計算がストップしてしまうことは望ましくありません。とにかく安定して何らかの答えを出すことが求められます。 もちろん正しい相関行列(半正定値実対称行列)は正しく分解されることが前提です。

そこで NtRand では相関行列の分解に特異値分解(Singular Value Decomposition,SVD)という手法を採用しています。
 

特異値分解入門(1)

互いに相関を持った正規乱数のセット(多変量正規乱数)を生成すること、これが金融工学のモンテカルロシミュレーションにおいて最も重要な技術となります。 系列の正規乱数列を生成する場合を考えます。 これらの乱数列の相関構造を記述するのが相関行列と呼ばれる の正方行列 です。 最終的に
という形に分解することが目標となります(ここで t は転置行列です)。分解して得られた行列 を使って実際に相関乱数を生成する方法については、これも一般的な数値計算の教科書に載っていますのでそちらをご覧ください。

すぐ後で説明するように、この分解にはコレスキー分解を使えと、多くの教科書で教えていますが、実務上コレスキー分解ではうまくいかない場合があります。
NtRand あるいは Numerical Technologies 社の製品では相関行列の分解に特異値分解という方法を採用しています。
これから3回にわたって、なぜコレスキー分解ではダメなのか、そしてなぜ特異値分解だとうまくいくのかを説明します。

相関行列について

相関行列 は、その ij 成分が確率変数 との相関係数 である行列です。 この定義から対角成分 は確率変数 と自分自身との相関、つまり 1 となります。また、 も定義から明らかです。
つまりこの行列は、
  • 正方行列
  • 成分は実数
  • 対角成分は 1
  • 対角成分以外は
  • 対称(
という性質を持っています。
更に相関係数の定義から、この行列は半正定値であることが示されます(半正定値って何だ?それは行列の固有値が全て0以上であること。固有値って何かって?それは勉強してください)。 つまり相関行列はその定義から半正定値実対称行列であるということです。

コレスキー分解 (Cholesky decomposition)

という分解を行う技として、どの教科書にも書いてあるのがコレスキー分解という方法です。 どの教科書にも載っているので、ここでは説明しません。
この手法は正定値実対称行列を目的の形に分解してくれるので、正定値実対称行列である相関行列に対して使えば目標達成!メデタシ、メデタシとなる筋書きです。
しかし…
実はコレスキー分解は容易に失敗します。その代表的な状況が観測データが少ない場合です。 確率変数の数が100個で、その観測データの数が100個未満の場合は、定義に従った正しい相関行列であってもコレスキー分解は失敗します。 なぜなら、この状況で作られる相関行列は必然的に正定値行列になるからです。コレスキー分解は正定値行列専用です。
それでは、少なくとも正しく作られた相関行列では間違いなく
と分解してくれるより強力な方法はないでしょうか?