LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-10-30

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

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

1.順位相関係数

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

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

1-1.スピアマンの順位相関係数

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

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

1-2.ケンドールの順位相関係数

\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で計算します。

1-3.(例)社会的リスクの順位付け

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

2.自己相関係数

自己相関係数 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の自己相関係数

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の自己相関係数

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の関数を示すにとどめます。

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