ピアソンの相関分析・相関係数: 計算方法など

UB3/statistics/correlation/pearson

このページの最終更新日: 2020/06/02

  1. 概要: ピアソンの相関とは
  2. R の cor 関数を使った相関分析
    • cor 関数
    • cor.test 関数
    • 実例
  3. 相関係数 ρ は足し算できない

広告

概要: ピアソンの相関とは

ピアソンの相関は、2 つの変数 x と y が正規分布 normal distribution しているとみなせるとき、それらの間にどの程度の相関があるかを調べる方法である。正規分布を仮定しているので、パラメトリックな統計手法である。

ピアソンの相関では、2 組の数値からなるデータ列 (xi,yi) ただし (i=1,2, ... n) があるとき、相関係数が以下の式で与えられる。通常は ロー ρ で表される。x̄, ȳ はそれぞれのデータの相加平均である。



相関係数は、正の相関のときには正の値を、負の相関のときには負の値をとる。


車の重量と馬力の正の相関。ρ = 0.8471。


車の重量と燃費の負の相関。ρ = -0.7440。


このページには、R を使った相関係数の算出方法と、その相関が 有意であるかどうか を算出する方法を示す。MATLAB corr 関数 でも同様の分析が可能であり、その方法はリンク先に示した。


R の cor 関数を使った相関分析

いずれ専用のページを作る可能性あり。

相関係数の算出は cor 関数、相関しているかどうかの検定は cor.test 関数である。基本的な使い方は以下の通り。

cor 関数

シンプルな使い方は以下の通り。x と y がともに vector のとき、両者の correlation を計算する。x と y が行列の場合は、それぞれの列に対して covariances または correlations を計算する。

cor(x, y, use="everything", method=c("pearson"))

use

use = "everything" はデフォルトで、指定しなければ自動的に everything になる、つまり全てのデータが使われる。データに欠損値 NA がなければ問題ないが、NA があると結果も NA になってしまう。use = "complete.obs" にすると、組み合わせが完全なものだけ (欠損値がないものだけ) が使われる (2)。

use の引数には、everything および complete.obs のほかに、NA が入っているとエラーになる all.obs など 5 つがある。文献 2 を参照のこと。

method

pearson の部分を kendall または spearman にすることで、ノンパラメトリックな分析も可能。method = "pearson" としても動いた。


cor.test 関数

cor.test(x, y, use="everything", method=c("pearson"))

Pearson's product momemt correlation coefficient, Kendall's tau または Spearman's rho を使って、相関が有意であるかどうかを検定する。

  • rho, tau なども計算されるので、実際は cor をやる必要はなく、cor.test のみで十分である。

各パラメーターの解説は このページ に。


実例

基本的な手順は次の通り。

  1. 散布図を作り、大体の傾向をつかむ。最終的にこの散布図のデータがどこにも使われなかったとしても、データの理解に重要なステップである。
  2. 相関がありそうだったら、まず正規性をチェック。
  3. その結果に応じて、パラメトリックまたはノンパラメトリックな検定を cor および cor.test を用いて行う。

R 組み込みデータセット swiss を使ってみる。swiss はスイスの各地方における出生率と、さまざまな社会要因のデータである。

最も関係していそうな Examination と Education に相関があるかどうかを調べてみよう。まずは plot で散布図を作るのが常道である。

plot(swiss$Education, swiss$Examination)

右肩上がりのプロットになり、正の相関があるように見える。そこで、次のステップへ進む。Shapiro-Wilk 検定とその結果を示す。

shapiro.test(swiss$Education)
W = 0.7482, p-value = 1.312e-07

shapiro.test(swiss$Examination)
W = 0.96962, p-value = 0.2563

Shapiro-Wilk 検定の帰無仮説は「変数は正規分布に従う母集団からサンプリングされた」である。したがって、Education では帰無仮説が否定されてしまって、つまり正規分布には従わないことになる。一方、Examination では帰無仮説が否定できず、つまりこの変数は正規分布に従うことになる (参考: 仮説検定)。

実際にヒストグラムを書いてみると、Education は非常に skew した分布になっていることもわかる。

したがって、これらの相関をテストするには、ノンパラメトリックな手法を使わなければならない。今回は Spearman の方法を使ってみる。

cor(swiss$Education, swiss$Examination, method=c("spearman"))

これでスピアマンの相関係数 0.6746038 が算出される。cor.test は、以下のようにスピアマンにすると P 値などは算出されるが、Cannot compute exact p-value with ties というエラーメッセージが出る。tie というのは「同じ数値」があるということで、Mann-Whitney U 検定でも同じエラーに遭遇することがある。解決方法などは このページ に。

cor.test(swiss$Education, swiss$Examination, method=c("spearman"))


広告

相関係数 ρ は足し算できない



広告

References

  1. 兵庫研究大学 成田滋氏のページ. 直線的関連. Link.
  2. Untitled Note. データに NA がある時の相関係数. Link: Last access 2020/05/26.

コメント欄

各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。

禁止ワード: http, the, м (ロシア語のフォントです)


このページにコメント

Name:


Comment:



これまでに投稿されたコメント

Date Name Comment