スポンサーリンク

2変数関数の相関係数の計算方法と,3次元グラフ描画 (gnuplotで視点をぐりぐり動かす)

2変数関数(=グラフは3次元になる)を2つ用意し,

  • まず相関係数を求めてみる。
  • 次に,3次元グラフを描画する。

問題

 0 \leq x \leq 1, \\ 0 \leq y \leq 1 \\ X(x,y) = 11x \\ Y(x,y) = 5(x+y)

である時,X,Yの相関係数を求めなさい。

http://q.hatena.ne.jp/1229990989


解答


相関係数の定義は

 \rho_{XY} = \frac{ \text{Cov} (X,Y) }{ \sqrt{ V(X) } \sqrt{V(Y)} }

という計算式である。


ただし,


平均:

 E(X) = \mu_X  \\ = E_{xy} (X) \\ = \frac{ \int_{-\infty}^{+\infty} dx \int_{-\infty}^{+\infty} dy X(x,y) }{ \int_{-\infty}^{+\infty} dx \int_{-\infty}^{+\infty} dy }

分散:

 V(X) \\ = V_{xy} (X) \\ = E\{( X - \mu_X )^2 \} \\ = E\{ X^2 - 2 X \mu_X  + \mu_X^2 \} \\ = E( X^2 ) - 2 \mu_X E(X) + E(\mu_X^2 ) \\ = E( X^2 ) - 2 (E(X))^2 + \mu_X^2 \\ = E_{xy} (X^2) - (E_{xy}(X))^2

共分散:

 \text{Cov}(X,Y) = E\{ ( X - \mu_X ) ( Y - \mu_Y ) \}

という計算方法で,それぞれ定義されている。

※EやVの下添え字の小文字の「xy」は,「xとyを両方動かしたときの」平均・分散という意味。



従って,ここまでは意味を理解して暗記する必要があり,ここから先は計算だけすればよい。

なお積分の範囲が0から1なので,計算しなくて済む項がたくさんある。



まず平均から。

 E_{xy}(X) \\ = \frac{ \int_{0}^{1} dx \int_{0}^{1} dy (11x) }{ \int_{0}^{1} dx \int_{0}^{1} dy } \\ = \frac{ \int_{0}^{1} dx (11x) }{ 1 \cdot 1 } \\ = \frac{11}{2}


 E_{xy}(Y) \\ = \frac{ \int_{0}^{1} dx \int_{0}^{1} dy (5(x+y)) }{ \int_{0}^{1} dx \int_{0}^{1} dy } \\ = \frac{ 5 \int_{0}^{1} dy [ \frac{1}{2}x^2 + yx ]_{x=0}^{x=1} }{ 1 \cdot 1 } \\ = 5 \int_{0}^{1} dy ( \frac{1}{2} + y ) \\ = 5( \frac{1}{2} + \frac{1}{2} ) \\ = 5


分散。

 V_{xy}(X) \\ = E( 11^2 x^2) - ( \frac{11}{2} )^2 \\ = \cdots \\ = \frac{11^2}{3} - \frac{11^2}{4} \\ = \frac{11^2}{12}


 V_{xy}(Y) \\ = E( 5^2 (x+y)^2 ) - 5^2 \\ = \int_{0}^{1} dx \int_{0}^{1} dy 25 (x^2 + y^2 + 2xy) - 25 \\ = 25 \int_{0}^{1} dy [ \frac{1}{3}x^3 + y^2 x + yx^2 ]_{x=0}^{x=1} - 25 \\ = 25 \int_{0}^{1} dy (\frac{1}{3} + y^2 + y) - 25 \\ = \frac{25}{6}


共分散。

 \text{Cov}(X, Y) \\ = E_{xy} \{ (11x - \frac{11}{2})( 5x+5y-5 ) \} \\ = 55 \int_{0}^{1} dx \int_{0}^{1} dy ( x^2 + xy - \frac{3}{2}x - \frac{y}{2} + \frac{1}{2} ) \\ = \frac{55}{12}


従って相関係数は

 \rho_{XY} = \frac{ \frac{55}{12} }{ \sqrt{\frac{11^2}{12}} \sqrt{\frac{25}{6}} } \\ = \frac{\sqrt{2}}{2} \\ = 0.707

となる。


3次元でグラフを描画してみる

gnuplotをダウンロード

Primary download site on SourceForge . をクリック
→最新版パッケージのDownloadをクリック
→gp***win32.zipをクリック


解凍して,gnuplot\bin\wgnuplot.exe を実行。


ターミナルが開くが,初期設定では文字が読みにくい。

右クリックでChoose FontしてMSゴシック等を選んで,Update wgnuplot.iniして設定を保存。



ターミナルに下記を打ち込んでみよう。

	set hidden3d;
	set xlabel 'x'
	set ylabel 'y'
	set ticslevel 0;
	
	set terminal png
	set output "a.png"
	splot 11 * x , 5 * ( x + y )
	exit

冒頭のようなグラフ画像がpng形式で出力される。


参考:

3次元プロット
http://t16web.lanl.gov/Kawano/gnuplot...

グラフを画像ファイルにする
http://lagendra.s.kanazawa-u.ac.jp/og...


なお,下記だけ打ち込むと,マウスで画面をドラッグして視点をぐりぐり動かせる。

	set hidden3d;
	set xlabel 'x'
	set ylabel 'y'
	set ticslevel 0;
	
	splot 11 * x , 5 * ( x + y )

イメージ

2つの関数の「傾向がどれだけ似ているか」を尋ねられている。


2つの平面は極めて近く,重なって見える。

つまり,x,yの変化に対する傾向が似ている。

だから相関係数も高い。


X,Yがそれぞれ何らかの企業の株価である場合,X,Yの組み合わせのポートフォリオは良い選択肢ではない。

相関係数が高いので,「共倒れ」になる可能性があるからだ。


関連する記事:

 「相関係数とは何か?」 を体系的に理解するための6ステップ
http://language-and-engineering.hatenablog.jp/entry/20090128/1233151846


WSH・JScriptから Graphviz を利用するためのクラス (関係グラフを描画して、複雑な構造のデータを可視化する方法)
http://language-and-engineering.hatenablog.jp/entry/20090123/1232705354


Excel VBAで,グラフを自動で描画しよう(データ範囲を動的に変える) + ソフトウェアの品質保証について
http://language-and-engineering.hatenablog.jp/entry/20090516/p1


JavaScript で,クリックした座標に点を追加できるグラフチャートを描画する方法 (jQuery のプラグイン jquery.sparklines / jquery.flotの使い方)
http://language-and-engineering.hatenablog.jp/entry/20081120/1227114053