1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-10-28

統計学入門のお供 Julia (1) - 標準得点、偏差値得点 - Qiita
統計学入門のお供 Julia (2) - ピアソンの積率相関係数 - Qiita
統計学入門のお供 Julia (3) - 順位相関係数と自己相関係数 - Qiita
統計学入門のお供 Julia (4) - 最小二乗法と決定係数 - Qiita
統計学入門のお供 Julia (5) - ベイズの定理 - Qiita
統計学入門のお供 Julia (6) - ド・メレの問題 = Oiita

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

#1.ピアソンの積率相関係数

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

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

\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を見てみます。

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

p2は正比例の直線上にあるので、相関係数は最大値の1.0になります。つまり相関関係が強くあり、正の完全相関にあります。
image.png

p2は逆比例の直線上にあるので、相関係数は最小値の-1.0になります。これも相関関係が強くあり、負の完全相関にあります。
image.png

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

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

#2.共分散の例

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

「共分散とは?その求め方と解釈。2変数データや2つの確率変数の関係性」

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
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

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

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

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

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

#3.(例)都道府県別の自民党支持率と持ち家比率

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

今回は以上です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?