【R講座】相関解析

R講座

研究室に配属されたばかりの新入生や、これからRで統計分析を始めたいと思っている方へ向けて、【R講座】では、RとRStudioの基本的な使い方から統計手法の選び方、基本的なデータ分析方法を解説しています。特にRが初めての方でも安心して学べるように、RStudioのクリック操作も紹介していきます。実際のコード例を交えながら進めるので、これからの研究やデータ分析に、役立てていただけたら嬉しいです。

みなさん、こんにちは!

ここでは、この回で紹介したピアソンの相関係数とスピアマンの相関係数について解説しています。

今回の内容
  • 相関係数の概要
  • ピアソンの相関係数
  • スピアマンの相関係数
  • 結果の見方

相関係数とは

2つの目的変数が関連性があるかを測る統計量です。

ピアソンの相関係数はパラメトリック検定であるのに対して、スピアマンの相関係数はノンパラメトリック検定です。

前提条件

ピアソンの相関係数またはスピアマンの相関係数を求める際には以下の条件を確認します。

  • 正規性
    • 両変数が正規分布のとき → ピアソンの相関係数
    • 両変数が正規分布のとき以外 → スピアマンの相関係数
  • データ尺度:間隔尺度または比率尺度であること。
仮説の設定

ピアソンの相関係数またはスピアマンの相関係数では次の仮説を設定します。

  • 帰無仮説(H0:母集団の相関係数は0である(相関がない)
  • 対立仮説(H1:母集団の相関係数は0ではない(相関がある)

関数の構造と引数オプション

Rでピアソンの相関係数またはスピアマンの相関係数を求める際には、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(formula, data, subset, na.action, ...)

引数オプション
  • x, y: データ値の数値ベクトル。xyは同じ長さである必要があります。
  • alternative: 対立仮説を指定し、"two.sided"(両側検定)、"greater"(正の相関)、"less"(負の相関)のいずれかを選択。頭文字のみでも指定可能。
  • method: 使用する相関係数の種類を指定する文字列。"pearson"、"kendall"、"spearman"のいずれかを選択。省略形も可。
  • exact: 正確なp値を計算するかどうかを指定する論理値。KendallのτとSpearmanのρに使用。デフォルト(NULL)の意味は'Details'セクションを参照。
  • conf.level: 返される信頼区間の信頼水準。現在はPearsonの積率相関係数で、少なくとも4組の完全な観測対がある場合にのみ使用。
  • continuity: 論理値。TRUEの場合、KendallのτとSpearmanのρで正確に計算されない場合に連続性補正を使用。
  • formula: ~ u + v形式の式。uvはそれぞれのサンプルのデータ値を与える数値変数。サンプルは同じ長さである必要がある。
  • data: オプションの行列またはデータフレーム(または類似のもの)で、formulaで指定された変数を含む。デフォルトでは変数はenvironment(formula)から取得。
  • subset: 使用する観測値のサブセットを指定するオプションのベクトル。
  • na.action: データにNAが含まれる場合の処理方法を指定する関数。デフォルトはgetOption("na.action")

簡単にまとめると、cor.test()関数では、次の2通りの方法を使えます。

  • ベクトル型の場合:cor.test(ベクトル1, ベクトル2)
  • フォーミュラ型の場合:cor.test(~ 説明変数1 + 説明変数2)

分析の実践

次のステップでデータを分析していきます。

Rで相関解析の手順
  • STEP 1
    データの読み込み

    csvファイルからデータを読み込みます。

  • STEP 2
    マンホイットニーのU検定の実行

    cor.test()関数で相関解析を実行します。

  • STEP 3
    結果の出力

    計算された結果がコンソールペインに出力されます。

使用するデータ

この講座では、説明のために同じ CSV データを使い回しています。
実際には、データの性質(分布・尺度・サンプル数など)に合わせて、適切な統計検定を選びましょう。

csvファイル

このcsvファイルには次のデータが含まれています。

Temperature (°C)Height (cm)Weight (g)
259.88120857.412763
2510.19768450.685115
258.93130746.762492
259.19678739.134970
258.88623539.840711
2511.58009242.322098
2511.49781938.802799
2510.26264545.518258
258.76709954.717364
259.99627638.195093
3016.511672114.702570
3014.52430286.885794
3015.79791699.034751
3014.025997123.697199
3015.689373108.906265
3014.04416197.478168
3013.76829391.342362
3014.043108105.825860
3014.13021799.874707
3014.08931996.251452

データの読み込み

まずは、次のコードを使って、オブジェクト「data」にread.csv()関数でcsvファイルのデータを代入します。

# データの読み込み
data <- read.csv(file.choose(),
                 check.names = F)

相関解析

cor.test()で相関解析を行います。引数のmethod = " "を変更することでピアソンの相関係数やスピアマンの相関係数を選択できます。(指定がない場合はピアソンの相関係数が計算されます。)

# ピアソンの相関係数
cor.test(data$`Height (cm)`, data$`Weight (g)`, method = "pearson")

結果の見方

計算の結果はコンソールペインに表示されます。

	Pearson's product-moment correlation

data:  data$`Height (cm)` and data$`Weight (g)`
t = 8.6114, df = 18, p-value = 8.454e-08
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.7537088 0.9589116
sample estimates:
      cor 
0.8970387 

この結果のから、相関係数(cor)が0.8970387(1に近い)で強い相関関係があります。また、p値0.05より小さいため、相関が統計的に有意であると判断できます。

有意水準・p値・信頼区間
項目説明
有意水準 (α)帰無仮説を棄却する基準。通常 0.05(5%) や 0.01(1%) を使用する。
例: α = 0.05なら、5%未満の確率で偶然起こる差を「有意」と判断する。
p値検定統計量が観測された値以上になる確率。
p値 < 有意水準 (α) なら、統計的に有意と判断し、帰無仮説を棄却する。
統計的に有意とは?「偶然の変動では説明できない差がある」と判断すること。ただし「実験的に重要」や「因果関係がある」とは限らない。
信頼区間 (Confidence Interval, CI)母集団の真の値(2つのグループの平均値の差)が含まれる範囲を示す。例えば 95%信頼区間 は、繰り返し実験したときに95%の確率で真の値(平均値の差)を含む。
信頼区間と有意性の関係もし信頼区間が ゼロ(または比較対象の値)を含まなければ、統計的に有意と判断できる。
例:平均差の95%信頼区間が (0.5, 2.3) なら、有意水準5%で有意。
注意点統計的有意でも「効果の大きさ(実用的な意味)」とは異なる。
p値が大きくても「差がない」とは言えない(サンプル数が少ない可能性)。

まとめ

まとめ
  • 相関係数の概要
    • 2つのデータの関連性を調べる統計量
  • ピアソンの相関係数
    • cor.test(ベクトル1, ベクトル2, method = "pearson")
  • スピアマンの相関係数
    • cor.test(ベクトル1, ベクトル2, method = "spearman")
  • 結果の見方
    • 1または−1に近いほど関連性あり
    • 0に近いと関連性なし
    • 有意水準・p値・信頼区間から判断
    • 統計的な意味と実用的な意味に注意

ここでは、Rを使用して相関解析を行う方法について解説しました。

Rでは、コードの文法が正しければどんな統計手法でも計算が実行されてしまうため、結果が出たからといって安心するのは危険です。統計解析では、データの種類や前提条件に適した手法を選ぶことが重要であり、誤った検定を適用すると意味のない結果を得てしまう可能性があります。

そのため、単にコードを動かすだけでなく、

  • データの分布(正規分布かどうか)
  • 変数の尺度(カテゴリーデータか、連続データか)
  • サンプルサイズ(母数が少ないと適さない検定もある)

などを考慮し、統計の知識をもとに適切な解析方法を選択する必要があります。

タイトルとURLをコピーしました