R言語

【R言語】相関係数の検定・無相関性の検定 関数cor.testの使い方

  1. HOME >
  2. R言語 >

【R言語】相関係数の検定・無相関性の検定 関数cor.testの使い方

スポンサーリンク

R言語で相関係数の検定を行う方法を紹介します。

この記事では、t分布に基づく無相関性の検定を実行する関数やその使い方について見ていきます。

フィッシャーのz変換を用いた相関係数の検定、差の検定については次の記事を参照していください。

【R言語】フィッシャーのZ変換を用いた相関係数・相関係数の差の検定

R言語でフィッシャーのZ変換を用いた相関係数の検定を行う方法を紹介します。 この記事では、正規近似であるフィッシャーのZ変換による相関係数の検定と相関係数の差の検定を解説していきます。 相関係数の検定 ...

続きを見る

無相関性の検定だけでなく、フィッシャーのz変換を用いた相関係数の検定も解説します。

この記事で紹介するプログラミングコードは以下からダウンロードできます。

相関係数の検定の詳細については次の記事を参照してください。

【統計学】相関係数の検定・無相関性の検定

相関係数の検定を解説する。 相関係数の検定の検定統計量や棄却域の導出について解説する。 相関係数の分布の導出を行い、検定統計量をどのように構成すればよいかみていく。 相関係数については以下の記事を参照 ...

続きを見る

Rでデータ解析を始めるならコレ
¥3,300 (2022/06/01 17:20時点 | Amazon調べ)
統計学初学者向けの教材です
¥2,970 (2022/06/01 17:41時点 | Amazon調べ)

相関係数の検定

相関係数の検定の関数をいくつか紹介します。

関数cor.test

関数cor.testによって、相関係数の検定(無相関性の検定)を実行することができます。

cor.test(x, y, alternative = c("two.sided", "less", "greater"), method = c("pearson", "kendall", "spearman"), exact = NULL, conf.level = 0.95, continuity = FALSE, ...)

cor.testの引数は以下の通りです。

関数cor.testの引数
x, ynumeric型の観測値のベクトル。xとyの長さは同じでなくてはならない。
alternativecharacter型。"two.sided"で両側仮説、"greater"で右片側仮説。"less"で左片側仮説を指定する。
methodcharacter型。"pearson"でPearsonの積率相関係数、"kendall"でKendallのτ、"spearman"でSpearmanのρに関する検定を指定できる。
exactlogical型。KendallとSpearmanの検定の際に正確なp値を計算するかどうか。
conf.level信頼区間の信頼水準。ピアソンの積率相関係数の検定かつサンプルサイズが4以上のときに適用される。
continuitylogical型。trueの場合、KendallとSpearmanの検定の際に連続性補正が適用される。
formula~ u + vの形から成るformula型のオブジェクト。
data観測値から成る行列またはデータフレーム。
subset検定に用いる観測値を指定するためのベクトル。
na.actionデータにNAがある場合に実行する関数。デフォルトでna.action。

関数cor.testは以下の無相関性の検定を実行します。任意の相関係数に関する検定ではないことに注意が必要です。この次に紹介する関数を用いることで、任意の相関係数についての検定を実行することが可能です。

相関係数の検定(ピアソンの積率相関係数)

相関係数\(\rho\)の2変量正規分布から\((x_1, y_1), (x_2, y_2)\ldots, (x_n, y_n)\)の2組から成る標本が与えられているとし、ピアソンの標本相関係数を\(r\)とする。また、対応する確率変数をそれぞれ\((X_1, Y_1), (X_2, Y_2)\ldots, (X_n, Y_n)\)、\(R\)とする。このとき次の仮説検定を考える。\begin{align}&H_0:\ \rho = 0\\ &H_1:\ \rho \neq 0\end{align}この仮説検定の検定統計量は次で与えられる。\begin{align} R \sqrt{\cfrac{n - 2}{1 - R^2}} \sim t_{n-2}. \end{align}また、有意水準\(\alpha\)の棄却域は次で与えられる。\begin{align}(-\infty, - t_{n - 2, \alpha / 2}) \cup (t_{n - 2, \alpha / 2}, \infty),\end{align}ここに、\(t_{n , \alpha}\)は自由度\(n\)のt分布の上側\(\alpha\)点である。

Pearsonの相関係数だけでなく、引数methodを"Spearman"または"Kendall"に指定することで、以下のSpearmanやKendallの相関係数に基づく検定を行うことができます。母集団分布が正規性を持たないとき、ノンパラメトリック手法であるSpearmanやKendallの相関係数の検定を行います。

実行例

上で紹介した関数の実行例をみていきます。

関数cor.test

次のデータセットirisを用いてcor.testを解説していきます。

irisSepal.LengthPetal.Lengthの標本相関係数と散布図は以下の通りです。

散布図

次のように、標本相関係数の関数corと同じ書き方で相関係数の検定を行うことができます。cor.testの第1引数と第2引数に1つ目の標本と2つ目の標本を指定するだけです。

2行目のようにformulaを使った書き方もあります。好きな方を適宜使ってください。

testResultを参照すると次の検定結果がコンソールに表示されます。

ポイント

「p-value < 2.2e-16」とあるように有意水準0.05で相関係数は0であるとはいえないことが分かりました。すなわち、Sepal.LengthとPetal.Lengthには相関があることが分かりました。

t検定などで紹介したように、p値や信頼区間などの検定結果はtestResultの後ろに$を付けることで抽出することができます。以下のように、検定統計量の値、自由度、p値などの値を取得することができます。

検定結果をcsvファイルに保存したいときは、上の検定結果をデータフレームに格納し、write.csvでデータフレームを出力するよいでしょう。

上を実行すると次の画像の検定結果のcsvファイルが出力されます。

検定結果

また、cor.testの引数method"spearman""kendall"にすることでノンパラメトリックな相関係数の検定を行うことができます。

データセットUSJudgeRatingsについて、CONTINTGのヒストグラムは次のようになります。

ヒストグラム

上の図のようにデータが正規性を持つかどうか微妙なときは、SpearmanやKendallの相関係数に基づく検定を行う必要があります。

以下のようにPearsonの相関係数のときと同様に、SpearmanとKendallの標本相関係数の算出および相関係数の検定を行うことが可能です。

SpearmanとKendallの相関係数の検定の結果は以下のようになります。

まとめ

R言語の相関係数の検定で便利な関数やその実行例を紹介しました。

無相関性の検定の場合はcor.testで実行することができます。

デフォルトの場合、ピアソンの積率相関係数に基づくt分布を用いた検定を行います。

引数methodによりSpearmanやKendallの相関係数に基づく検定を行うことができます。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-, , ,