統計学入門のお供 Julia (2) - ピアソンの積率相関係数

[統計学入門のお供 Julia (1) - 標準得点、偏差値得点 - Qiita](https://qiita.com/sand/items/904271431a7809ce2066)
[統計学入門のお供 Julia (2) - ピアソンの積率相関係数 - Qiita](https://qiita.com/sand/items/06970a14ffc8cab69403)
[統計学入門のお供 Julia (3) - 順位相関係数と自己相関係数 - Qiita](https://qiita.com/sand/items/4f90e951bde8b318f232)
[統計学入門のお供 Julia (4) - 最小二乗法と決定係数 - Qiita](https://qiita.com/sand/items/38e7e08a50b82849a859)
[統計学入門のお供 Julia (5) - ベイズの定理 - Qiita](https://qiita.com/sand/items/439ecea5e825aa2cd9cb)
[統計学入門のお供 Julia (6) - ド・メレの問題 = Oiita](https://qiita.com/sand/items/e8bd52fa5560b7c81469)




　統計学を勉強するため「統計学入門」（東京大学出版会）を読み始めました。練習問題があるのですが、これも勉強中のJuliaを使って計算していきたいと思います。

#１．ピアソンの積率相関係数

P47 「3.3.1 積率相関係数」の内容をJuliaを使って少し確認してみました。

2次元データの列$$(x_1,y_1), (x_2,y_2), ..., (x_n,y_n)$$が与えられたとき、以下のように**ピアソンの積率相関係数**を定義できます。これは単に**相関係数**とも呼ばれます。定義には**共分散** convarianceや**標準偏差**が用いられます。


```math
\begin{align}
\\
&r_{xy} = \frac {C_{xy}}{S_xS_y}　：　ピアソンの積率相関係数\\

&where \\
&C_{xy} = \frac {\sum (x_i - \bar{x})  (y_i - \bar{y})} {n}　：共分散\\
&S_x = \sqrt {\frac{\sum(x_i-\bar{x})^2}{n}}　：xの標準偏差\\
&S_y = \sqrt {\frac{\sum(y_i-\bar{y})^2}{n}}　：yの標準偏差
\\
\\
&i.e.\\
&r_{xy} = \frac {\sum (x_i - \bar{x})  (y_i - \bar{y})} {\sqrt {\sum(x_i-\bar{x})^2} \sqrt {\sum(y_i-\bar{y})^2}}
\\
\\
&このようにして定義した r_{xy} には以下の性質があります。\\
\\
&-1 \leqq r_{xy} \leqq +1
\\
&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad  \qquad \qquad \\
\end{align}
```

Juliaでは、この辺の関数は全て標準ライブラリのStatisticsにあります。素晴らしいですね。
https://docs.julialang.org/en/v1/stdlib/Statistics/index.html


ピアソンの積率相関係数は**cor(X, Y)**で計算します。相関係数の意味をハッキリさせるために以下のような極端な例のデータp1,p2,p3を見てみます。


```julia
using Statistics

p1=[1 1; 2 1; 1 2; 2 2]
cor(p1[:, 1], p1[:, 2])
0.0

p2=[1 1; 2 2; 3 3; 4 4]
cor(p2[:, 1], p2[:, 2])
1.0

p3=[1 4; 2 3; 3 2; 4 1]
cor(p3[:, 1], p3[:, 2])
-1.0
```

p1はきれいに4点に分散しているので、相関係数は0.0です。相関関係がないということですね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61915/a549a1d0-5332-6b9a-e706-4a58fe9cd205.png)


p2は正比例の直線上にあるので、相関係数は最大値の1.0になります。つまり相関関係が強くあり、**正の完全相関**にあります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61915/49db3a4e-2461-2a94-8cca-57340300464d.png)


p2は逆比例の直線上にあるので、相関係数は最小値の-1.0になります。これも相関関係が強くあり、**負の完全相関**にあります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61915/f7a9b5a4-300f-7a10-d583-fd4cb2fef4bb.png)



ちなみに**共分散** convariance は **cov(x, y, corrected = false)** で計算します。

```julia
cov(p1[:, 1], p1[:, 2], corrected = false)
0.0

cov(p2[:, 1], p2[:, 2], corrected = false)
1.25

cov(p3[:, 1], p3[:, 2], corrected = false)
-1.25
```


今回は、以下の記事を参考にさせていただきました。
[「Juliaで学ぶ統計学入門（第3章:2次元のデータ）」 - Qiita](https://qiita.com/nezuq/items/77d8790f52035827ab5d)



#２．共分散の例

共分散のイメージが掴みにくいので、以下のサイトを参考にもう少しいじってみたいと思います。

[「共分散とは？その求め方と解釈。2変数データや2つの確率変数の関係性」](https://atarimae.biz/archives/15752)

A,B,C,Dの4人の数学と国語の点数です。数学と国語の点数の相関関係を調べます。

|   |x(数学)  |y(国語)  |
|---|---|---|
|A  | x[1]=36 | y[1]=90|
|B  | x[2]=73 | y[2]=57|
|C  | x[3]=51 | y[3]=36|
|D  | x[4]=80 | y[4]=17|



```julia
p=[36 90; 73 57; 51 36; 80 17]

function mydev(x,y)
    s = 0.0
    n = length(x)
    xx = zeros(n)
    yy = zeros(n)
    z = zeros(n)
    mx=mean(x)     # xの平均
    my=mean(y)     # yの平均

    for i in 1:n
        xx[i]=x[i]-mx     # xの偏差
        yy[i]=y[i]-my     # yの偏差
        z[i] = xx[i] * yy[i]     # xとyの偏差の積
    end
    println(xx)
    println(yy)
    println(z)
    mycov = sum(z) / n    # 共分散
end

mydev(p[:, 1], p[:, 2])
```

出力は以下の通りです。

```
xx = [-24.0, 13.0, -9.0, 20.0]
yy = [40.0, 7.0, -14.0, -33.0]
z = [-960.0, 91.0, 126.0, -660.0]
mycov = -350.75
```




| | xx[i]=x[i]-mx（xの偏差）| yy[i]=y[i]-my（yの偏差）| 積 |
|---|---|---|---|
|A  | -24.0 |  40.0 | -960.0 |
|B  |  13.0 |  7.0  |   91.0 |
|C  | -9.0  | -14.0 |  126.0 |
|D  |  20.0 | -33.0 | -600.0 |

共分散はmycovの値で-350.75となります。


この共分散をわかりやすく図で表現すると以下のようになります。
偏差の積を面積（= x座標*y座標 = xx[i]*yy[i]）とみなし、正を青枠、負を赤枠にします。

Aの偏差の積は左上の赤枠の面積（負）です。
Bの偏差の積は右上の青枠の面積（正）です。
Cの偏差の積は左下の青枠の面積（正）です。
Dの偏差の積は右下の青枠の面積（負）です。

共分散の計算は、「青枠の面積の和 - 赤枠の面積の和」をnで割る、ということになります。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/61915/32c9c3e3-4ef8-e8e2-92a9-84f95f976bbd.png)



もちろん直接 cov関数を使っても同じ結果です。cor関数で相関係数も求めておきます。

```julia
cov(p[:, 1], p[:, 2], corrected = false)
-350.75

cor(p[:, 1], p[:, 2])
-0.7397455838571361
```

　あえて結論を言えばですが、4人の「数学と国語の点数の共分散」が −350.75 で、相関係数が-0.7397であることは数学と国語の点数には負の相関関係があると言えます。数学で良い点数を取っている人は、国語の点数が悪い傾向があると言えます。



#３．（例）都道府県別の自民党支持率と持ち家比率

P64の問3.1を解きます
都道府県別の自民党支持率と持ち家比率(1983)の散布図と相関係数を求めます。

それぞれのデータを以下の都道府県の順番に並べ変数化します。

```
北海道,青森,岩手,宮城,秋田,山形,福島,茨城,栃木,群馬,
埼玉,千葉,東京,神奈川,新潟,富山,石川,福井,山梨,長野,
岐阜,静岡,愛知,三重,滋賀,京都,大阪,兵庫,奈良,和歌山,
鳥取,島根,岡山,広島,山口,徳島,香川,愛媛,高知,
福岡,佐賀,長崎,熊本,大分,宮崎,鹿児島,沖縄
```



散布図のplotのパラメータは以下のドキュメントを参照
https://docs.juliaplots.org/latest/attributes/

変数aに都道府県別の自民党支持率
変数bに都道府県別の持ち家比率

```
a=[41.4,76.3,59.2,51.8,52.5,53.2,62.4,55,57.7,63.2,37.5,48.5,32.4,20.5,47.9,68.9,68.5,52.5,63.3,58.8,59.7,48.4,40.7,51,50.9,34.3,25.8,32.1,34.4,55.1,60.3,57,45.6,54.2,55.1,55.7,70.3,61.8,47.6,42.5,71.3,55.2,65.2,42.9,54.7,62,48.2]
b=[52.8,71.2,72.6,63.7,81.3,81.8,70.9,74,73.2,72.9,66.7,65.7,43.7,55.5,79.6,85.7,75.3,80.5,73,77,77.5,69.2,60,78.2,79.5,61.8,49.6,59.6,72.1,71,76.3,72.8,71.8,60.7,67,71.8,71.2,68.3,68.5,54.8,76,65.8,69.4,66.9,69.7,71.2,59]

plot(a,b,
    seriestype=:scatter,
    title="Jimin-House(1983)",
    lab="House",
    xlabel = "a (Jimin)",
    ylabel = "b (House)",
    legend=:topleft
    )


cor(a,b)
0.6381967303580814
```

相関係数が0.638ということは弱い相関関係を示していると解釈できるのだろうか。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61915/5547b735-6947-cf6e-3a2d-a5170afb9e46.png)






今回は以上です。