統計学入門のお供 Julia (3) - 順位相関係数と自己相関係数

[統計学入門のお供 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を使って計算していきたいと思います。


#１．順位相関係数


　積率相関係数は２つの量的変数の場合に使われます。あるデータに対して２つの質的基準がある場合に、その２つの基準による順位の間の相関関係をあらすのが順位相関係数(rank correlation coefficient)です。スピアマンの順位相関係数とケンドールの順位相関係数があります。


julia的には以下のライブラリを使います。
StatsBase / Rankings and Rank Correlations
http://juliastats.github.io/StatsBase.jl/stable/ranking.html



##１－１．スピアマンの順位相関係数


```math
r_s = 1 - \frac{6}{n^3-n} \sum_{i=1}^n(R_i-R_i')^2
```

JuliaではStatsBase.corspearman関数で計算します。

##１－２．ケンドールの順位相関係数

```math
\begin{align}
\\
&r_k = \frac{G - H}{n(n-1)/2}\\
\\
\\
&G = |\{ (i,j) | R_i > R_j, R_i' > R_j' \quad or \quad R_i < R_j, R_i' < R_j' \}|\\
&H = -1 * |\{ (i,j) | R_i > R_j, R_i' < R_j' \quad or \quad R_i < R_j, R_i' > R_j' \}|\\

&\qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \qquad \qquad  \\
\end{align}
```

JuliaではStatsBase.corkendallで計算します。



##１－３．（例）社会的リスクの順位付け

ここでP65の問3.3を解きます。

以下のような項目を考えます。

```
原子力,自動車,銃,喫煙,バイク,アルコール飲料,自家用飛行機,警察職務,
殺虫剤,外科手術,消防職務,大規模建設工事,狩猟,スプレー,登山,自転車,
飛行機,電気,水泳,避妊ピル,スキー,X線,フットボール,鉄道,食料添加物,
食品着色料,自動芝刈り機,抗生物質,家庭用具,予防注射
```

以下のグループにおいて、上記の項目に対して社会的リスクの順位付けを行います。

```
(a)女性有権者団体
(b)短期大学生
(c)経営者団体
(d)大学教授、研究者、専門職等
```

juliaのプログラムでは、各グループにおける順位を配列の納めます。あとはcorspearman関数とcorkendall関数を使い、順位相関係数を求めます。

```
a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
b=[1,5,2,3,6,7,15,8,4,11,10,14,18,13,22,24,16,19,30,9,25,17,26,23,12,20,28,21,27,29]
c=[8,3,1,4,2,5,11,7,15,9,6,13,10,22,12,14,18,19,17,22,16,24,21,20,28,30,25,26,27,29]
d=[20,1,4,2,6,3,12,17,8,5,18,13,23,26,29,15,16,9,10,11,30,7,27,19,14,21,28,24,22,25]

corspearman(a,b)
0.821579532814238
corspearman(a,c)
0.9249082268824864
corspearman(a,d)
0.5933259176863181
corspearman(b,c)
0.6668150002325743
corspearman(b,d)
0.6373748609566184
corspearman(c,d)
0.5326510212068012


corkendall(a,b)
0.664367816091954
corkendall(a,c)
0.7687001637401946
corkendall(a,d)
0.43908045977011495
corkendall(b,c)
0.5017264541777318
corkendall(b,d)
0.46206896551724136
corkendall(c,d)
0.3590336094115879
```

計算結果を見てみると、似ているのは(a,b)と(a,c)でしょうか。
やや似ているのは(b,c)でしょうか。
あとはあまり相関関係が認められないようです。

一応、蛇足ですがそれぞれの関数の性質を確かめてみました。

```
corspearman(a,a)
1.0
corspearman(a,b)
0.821579532814238
corspearman(b,a)
0.821579532814238
corkendall(c,c)
0.9999999999999999
```



#２．自己相関係数

自己相関係数 auto-correlation coefficient

StatsBase / Correlation Analysis of Signals
https://juliastats.github.io/StatsBase.jl/stable/signalcorr.html

StatsBase.autocor
autocor(x, [lags]; demean=true)


以下は**遅れlag 1の自己相関係数**

```math
r_1 = \frac{\sum_{i=1}^{n-1}(x_i-\bar{x})(x_{i+1}-\bar{x})/(n-1)}{\sum_{i=1}^n(x_i-\bar{x})^2/n}
```

以下は**遅れlag hの自己相関係数**

```math
r_h = \frac{\sum_{i=1}^{n-h}(x_i-\bar{x})(x_{i+h}-\bar{x})/(n-h)}{\sum_{i=1}^n(x_i-\bar{x})^2/n}
```


自己相関係数は適当な問題が無かったので、今回はとりあえずJuliaの関数を示すにとどめます。