1.今回の内容
相関係数・最小二乗法をフォートランプログラミングから理解する。


(前回のおさらい)分散の計算はどうやって行ったか?

@平均値を求める
 goukei=0
 do k=1,345
  goukei =goukei+csal(k)
 enddo
 heikin=goukei/345

A残差平方和を求める→「各データの平均値からのズレ」の二乗の総和

 bunsan=0
 do k=1,345
  bunsan=bunsan+(csal(k)-heikin)**2
 enddo

B分散を求める→残差平方和をサンプル数で除算
 bunsan=bunsan/345

基本的に上記のスクリプトの応用のみ!



2.相関係数とは
2つのデータセットが与えられた時、散布図を書くとなんとなく右肩上がりや左肩上がりの分布が見える時がある。
たとえばいま使っているデータでは、CTDの塩分(3列目)とボトル塩分(4列目)を用いて散布図を書くと、
明らかに右肩上がりの分布図が見られる(図1)。
これは2つの変量の間に「正の相関」があることを示している。
※ただしこれだけではセンサーの精度がよいということにはならない。

      図1:CTD塩分(3列目)とボトル塩分(4列目)の比較

正の相関があることはなんとなくわかるが、それ以上はわからない。
そこで相関の度合いを定量化する。この定量化した値を相関係数と呼ぶ。
2変数をXとY(CTD塩分とボトル塩分)とおき、データの総数をn(今回は345個)とすると、
2変数の相関係数は@式で表される。

 

 

 

                                                ---- @

 


結局、2変数の共分散をそれぞれの変数の標準偏差で割ると、相関係数が得られるということである。

さてこの相関係数はいったい何者か?
根本原理はベクトルの内積にあります。思い出しましょう。

 

 














       
 図2:2つのベクトルとなす角θ


ベクトルaとbの内積は

  


これを変形すると

  ---- A

 


このA式は実は@式と同じであります。
つまりaベクトルをCTD塩分の平均値からのズレ、bベクトルをボトル塩分の平均値からのからのズレと考えればよい。

n次元のベクトルを a=(a1,a2,a3,....), b=(b1,b2,b3,....)とおくと内積は以下のようになる

内積=a1b1+a2b2+a3b3+・・・・anbn 

 

  となる。これをnで割れば共分散になる。
 次にn次元のベクトルの大きさは

  

 


 ベクトルbについても同じ。これらは@式の分母に相当する。

 結局,相関係数rとは2変数(ベクトル)のなす角度θによるcosθを計算しているに過ぎない。


3.回帰式

ここからは図1にある一次の回帰式を求める。
下図のように実測値と予測値の差が最小になるような傾き・切片を持つ回帰式を求める。

 

 

 

 

 

 

 

 

 



        図3:回帰直線のイメージ

 図2のd1(x1, y1)で考えてみる。d1の直上にある回帰直線のy座標は「ax1+b」になる。
 従ってd1から回帰直線までの距離は

  {y1 - (ax1+b)} 
 で表される。今回の場合も、距離の大きさを考えるのだから、二乗して総和を求める。

距離の二乗和をSとすると,

      

 

  ここで

 

, , , ,



 とすると,

 

                    ----C

 


  つまり距離の二乗和Sは「傾きa」と「切片b」の2次関数になる。
  仮にaを固定するとbの二次関数である。
  二次関数の最小値とは、傾きがゼロになる部分であるから、
  上式Cをa,bで偏微分したものがゼロになると置けばよい。

                    ----D

                     ----E

 


  連立方程式から傾きaと切片bは以下のようになる。

 

                                              ----F

                                              ----G

 





4.課題
課題1:CTD塩分とボトル塩分の散布図にある1次の回帰式を求めよ。

攻略法:結局F式、G式を解けばよいのだから
 1)C式の手前に記述した
B~EをそれぞれDOループを使って計算する
 2)
F式、G式にB~Eをそれぞれ代入して、傾きaと切片bを計算する
だけでよい。

課題2:決定係数を求めよ。
決定係数とは、課題1で求めた1次の回帰式が、どの程度当てはまっているかの指標である。
課題1で求めた1次の回帰式から、CTDの塩分から「予想される実際の塩分」が得られる。


Step1:「予想される実際の塩分」の計算
DOループを使って、 
予想される実際の塩分= 傾きa  × CTD塩分 + 切片b 
を計算する



Step2:残差平方和を求める(「実際のボトル塩分」と「予想される実際の塩分」から残差平方和を求める
便宜上、ここで求める残差平方和をSSR(Sum of Squared Residuals)とする。

これもDOループを使って
SSR=SSR+(ボトル塩分ー予想される実際の塩分)**2
を計算する



Step3:全平方和TSSを求める(ボトル塩分の平均値からのズレを合計する
便宜上、ここで求めるズレの合計をTSS(Total Sum of Squares)とする。

これはボトル塩分の分散を求めるときにすでに計算している。
よって
TSS=bunsan2*345



Step4:決定係数の計算
決定係数は以下の式で求められる。

決定係数R2 = 1−(
SSR/TSS)