目次
大阪公立大学大学院現代システム科学研究科 武藤拓之の知覚・認知心理学研究室

頻度論とベイズの単相関分析をまとめて実行する自作R関数

説明

多変量のデータフレームを渡すとすべての変数の組み合わせに対する単相関分析を行ってくれる自作のR関数cor_test_allを紹介します。ベイズ相関分析にも対応しており,事後分布から計算される代表値 (EAP,MAP,MED) や確信区間 (中心事後区間,事後最高密度区間),方向性確率 (probability of direction; pd),ベイズファクターなども計算できます。cor.test関数とBayesFactor::correlationBF関数を使ってできる分析を簡単なスクリプトで一括で実行できるようにしたかったので作りました。不備がある可能性があるため使用は自己責任でお願いします。

使い方とサンプルコード

cor_test_all関数のスクリプトはOSFからダウンロードできます。
https://osf.io/jnvsq

cor_test_all関数を使用するためにはtidyverseパッケージとBayesFactorパッケージをインストールしておく必要があります(頻度論的な分析しかしないのであればBayesFactorパッケージは不要)。またHDIを計算する場合はHDIntervalパッケージのインストールが必要です。

cor_test_all関数を読み込んでこの関数にデータフレームを渡すとすべての変数の組み合わせに対する単相関分析が実行されます。以下のサンプルコードは,ピアソンの積率相関 (cor)・EAP・MAP・MED・95% HDI・pd・ベイズファクターを計算するコードの例です。

					# 必要なパッケージのインストール
# install.packages("tidyverse")
# install.packages("BayesFactor")

# 関数の読み込み
source("cor_test_all.r")

# 分析用データの作成
library(MASS)

## 平均ベクトルの指定
mu <- c(0, 0, 0)

## 共分散行列の指定
Sigma <- matrix(
  c(
    1.0, 0.7, 0.5,
    0.7, 1.0, 0.3,
    0.5, 0.3, 1.0
  ),
  nrow = 3
)

## 多変量正規分布から乱数生成
set.seed(610)
N <- 100
d <- mvrnorm(n = N, mu = mu, Sigma = Sigma) |> 
  as.data.frame()

# 単相関分析の実行
results <- cor_test_all(
  d,
  cor = TRUE, # Pearson's rを計算 (既定)
  cor_EAP = TRUE, # EAPを計算
  cor_MAP = TRUE, # MAPを計算
  cor_MED = TRUE, # MEDを計算
  ci = "bayes_hdi", # HDIによる確信区間を計算
  pd = TRUE, # pdを計算
  bf = TRUE, # BFを計算
  triangle = "upper", # 上三角行列のみ出力 (既定)
  rscale_est = "ultrawide", # ベイズ推定する際の事前分布の尺度母数 (既定)
  rscale_bf = "ultrawide", # BFを計算する際の事前分布の尺度母数 (既定)
  iterations = 10000 # 事後分布を推定する際の繰り返し数 (既定)
)

# 結果の確認

## Tidy形式の結果
results$all

## Pearsonの相関係数の表
results$table_cor

## ペア数の表 (NAがある場合はペアワイズ削除)
results$table_n_pair

## t値の表
results$table_t

## 自由度の表
results$table_df

## p値の表
results$table_p

## pdの表
results$table_pd

## ベイズファクター (BF) の表
results$table_BF10
					
				
引数

cor_test_allに特有の引数

  • cor: TRUEにすると記述統計量としての相関係数を出力します。 (既定値:TRUE)
  • cor_EAP: TRUEにすると相関係数のEAPを出力します。 (既定値:FALSE)
  • cor_MAP: TRUEにすると相関係数のMAPを出力します。 (既定値:FALSE)
  • cor_MED: TRUEにすると相関係数のMEDを出力します。 (既定値:FALSE)
  • pd: TRUEにすると方向性確率 (pd) を出力します。 (既定値:FALSE)
  • bf: TRUEにするとベイズファクター (BF) を出力します。 (既定値:FALSE)
  • ci: 信頼区間または確信区間の計算法を指定します。 (既定値:"freq")
    • freq: t分布に基づく信頼区間
    • bayes_central: 事後分布から計算した中心事後区間
    • bayes_hdi: 事後分布から計算した事後最高密度区間 (HDI)
  • triangle: 出力する表の形式を指定します。 (既定値:"upper")
    • upper: 上三角行列のみを出力 (それ以外はNA_real_で埋める)
    • lower: 下三角行列のみを出力 (それ以外はNA_real_で埋める)
    • full: すべての要素を出力 (ただし相関行列以外は対角成分をNA_real_で埋める)

cor.testの引数

  • alternative: 頻度論的な無相関検定の対立仮説を指定します。 (既定値:"two.sided")
    • two.sided: 両側検定
    • less: 片側検定 (母相関係数が0より小さい)
    • greater: 片側検定 (母相関係数が0より大きい)
  • method: 記述統計量としての相関係数と頻度論的な無相関検定の方法を指定します。 (既定値:"pearson")
  • conf.level: 信頼区間または確信区間の確率を指定します。 (既定値:0.95)
    • ciでbayes_centralまたはbayes_hdiを指定した場合にもこの値が計算に使われます。
  • exact: methodにspearmanかkendallを指定したときに正確なp値を計算するかどうかを指定します。 (既定値:NULL)
  • continuity: methodにspearmanかkendallを指定したときに連続性の補正をするかどうかを指定します。 (既定値:FALSE)

BayesFactor::correlationBFに関係する引数

  • rscale_est: 相関係数の事後分布の推定に用いる事前分布の尺度母数。 (既定値:"ultrawide")
    • ultrawideは[-1,1]の範囲の一様分布となります。詳しくはcorrelationBFのヘルプを参照。
  • rscale_bf: ベイズファクターの計算に用いる事前分布の尺度母数。 (既定値:"ultrawide")
    • ultrawideは[-1,1]の範囲の一様分布となります。詳しくはcorrelationBFのヘルプを参照。
  • iterations: 相関係数の事後分布を推定する際のMCMCサンプルの数。 (既定値:10000)
このページの作成日:2025年1月26日
このページの最終更新日:2025年2月1日