頻度論とベイズのt検定をまとめて実行し,効果量も計算することができる自作のR関数t_test_allを紹介します。効果量としてはCohen's d (対応のないt検定または1標本t検定)とCohen's dz (対応のあるt検定) を信頼区間または確信区間付きで計算することができます。また,ベイズ分析としては,事後分布から計算される代表値 (EAP,MAP,MED) や確信区間 (中心事後区間,事後最高密度区間),方向性確率 (probability of direction; pd),ベイズファクターなどを計算できます。t.test関数とeffectsize::cohens_d関数とBayesFactor::ttestBFを使ってできる分析を簡単なスクリプトで一括で実行できるようにしたかったので作りました。不備がある可能性があるため使用は自己責任でお願いします。
t_test_all関数のスクリプトはOSFからダウンロードできます。
→ https://osf.io/wxzk2
t_test_all関数を使用するためにはtidyverseパッケージとeffectsizeパッケージとBayesFactorパッケージをインストールしておく必要があります(頻度論的な分析しかしないのであればBayesFactorパッケージは不要)。またHDIを計算する場合はHDIntervalパッケージのインストールが必要です。
t_test_all関数を読み込んでこの関数にt.testやBayesFactor::ttestBFと同じ要領でデータと引数を与えると指定した分析が実行されます。ベイズ分析はデフォルトでは実行されませんが,効果量はデフォルトで出力する仕様にしています。変数に代入すると分析結果が1行のデータフレームとして格納されます。
# 必要なパッケージのインストール
# install.packages("tidyverse")
# install.packages("effectsize")
# install.packages("BayesFactor")
# install.packages("HDInterval")
# 関数の読み込み
source("t_test_all.r")
# 分析用データの作成
library(MASS)
## 平均ベクトルの指定
mu <- c(10, 10.5)
## 共分散行列の指定
Sigma <- matrix(
c(
1.0, 0.8,
0.8, 1.0
) * 0.5,
nrow = 2
)
## 多変量正規分布から乱数生成
set.seed(610)
N <- 100
d <- mvrnorm(n = N, mu = mu, Sigma = Sigma) |>
as.data.frame()
# 関数の実行例
## Welchのt検定をしながらCohen's dも計算
t_test_all(d$V1, d$V2)
## BFとpdも計算し,区間推定を95% HDIで行う
t_test_all(d$V1, d$V2, bf = T, pd = T, ci = "bayes_hdi", rscale_bf = "medium")
## 対応のあるt検定をしながらCohen's dzも計算
t_test_all(d$V1, d$V2, paired = T)
## BFとpdも計算し,区間推定を95%中心事後区間で行う
t_test_all(d$V1, d$V2, paired = T, bf = T, pd = T, ci = "bayes_central", rscale_bf = "medium")
t.testに由来する引数
-
x: 1つめの標本のデータをベクトルで指定します。
-
y: 2つめの標本のデータをベクトルで指定します。指定しなかった場合は1標本t検定を実行します。対応がある場合はxと同じ要素数でなければなりません。(既定値:NULL)
-
paired: 対応の有無を指定します。(既定値:FALSE)
-
var.equal: 等分散性を仮定するかどうかを指定します。TRUEにすると対応のないt検定の際にWelchのt検定が実行されます。1標本t検定や対応のあるt検定では無視されます。ここでの指定にかかわらず,ベイズ分析では等分散性が仮定され,効果量 (Cohen's d) は等分散性を前提として計算されます。(既定値:TRUE)
-
mu: 帰無仮説の値を指定します。ベイズ分析で2標本t検定を実行する場合はmu=0以外ではエラーとなります (BayesFactorパッケージが対応していないため)。(既定値:0)
-
alternative: 頻度論的なt検定の対立仮説を指定します。効果量の信頼区間の計算にも反映されます (ベイズ分析には反映されません)。 (既定値:"two.sided")
-
two.sided: 両側検定
-
less: 片側検定 (母平均または母平均値差が0より小さい)
-
greater: 片側検定 (母平均または母平均値差が0より大きい)
-
conf.level: 信頼区間または確信区間の確率を指定します。 (既定値:0.95)
-
ciでbayes_centralまたはbayes_hdiを指定した場合にもこの値が計算に使われます。
BayesFactor::ttestBFに関係する引数
-
rscale_est: パラメータと効果量の事後分布の推定に用いる事前分布の尺度母数。 (既定値:Inf)
-
デフォルトでは十分幅の広いimproper事前分布になります。
-
rscale_bf: ベイズファクターの計算に用いる事前分布の尺度母数。 (既定値:medium)
-
mediumは尺度母数1/√(2)のコーシー分布となります。詳しくはttestBFのヘルプを参照。
-
iterations: 事後分布を推定する際のMCMCサンプルの数。 (既定値:10000)
t_test_allに特有の引数
-
var.label: xとyに名前を付けられます。結果のデータフレームに値が格納されます。異なる変数の検定結果を比較したいときに便利かもしれません。 (既定値:c("x", "y"))
-
pd: TRUEにすると方向性確率 (pd) を出力します。 (既定値:FALSE)
-
bf: TRUEにするとベイズファクター (BF) を出力します。 (既定値:FALSE)
-
ci: 信頼区間または確信区間の計算法を指定します。 (既定値:"freq")
-
freq: t分布に基づく信頼区間
-
bayes_central: 事後分布から計算した中心事後区間
-
bayes_hdi: 事後分布から計算した事後最高密度区間 (HDI)
-
cor: TRUEにすると記述統計量としての相関係数を出力します (paired = TRUEのときのみ)。 (既定値:TRUE)
-
mean_x_EAP: TRUEにするとxの平均のEAPを出力します (1標本のときのみ)。 (既定値:FALSE)
-
mean_x_MAP: TRUEにするとxの平均のMAPを出力します (1標本のときのみ)。 (既定値:FALSE)
-
mean_x_MED: TRUEにするとxの平均のMEDを出力します (1標本のときのみ)。 (既定値:FALSE)
-
diff_EAP: TRUEにするとxの平均とyの平均の差のEAPを出力します (2標本のときのみ)。 (既定値:FALSE)
-
diff_MAP: TRUEにするとxの平均とyの平均の差のMAPを出力します (2標本のときのみ)。 (既定値:FALSE)
-
diff_MED: TRUEにするとxの平均とyの平均の差のMEDを出力します (2標本のときのみ)。 (既定値:FALSE)
-
cohens_d: TRUEにするとCohen's d (分母は2標本をプールした不偏分散の平方根) を出力します。1標本t検定か対応のないt検定を指定したときはデフォルトで出力されるようになっています。明示的にTRUEした場合,対応のあるt検定でもCohen's dを出力することができます (対応のないt検定の効果量と比較したいときなどに便利)。 (既定値:NULL)
-
cohens_d_EAP: TRUEにするとCohen's dのEAPを出力します。 (既定値:FALSE)
-
cohens_d_MAP: TRUEにするとCohen's dのMAPを出力します。 (既定値:FALSE)
-
cohens_d_MED: TRUEにするとCohen's dのMEDを出力します。 (既定値:FALSE)
-
cohens_dz: TRUEにするとCohen's dz (差得点の平均を差得点の不偏分散の平方根で割ったもの) を出力します (paired = TRUEのときのみ)。対応のあるt検定を指定した場合はデフォルトで出力される仕様です。 (既定値:TRUE)
-
cohens_dz_EAP: TRUEにするとCohen's zのEAPを出力します (paired = TRUEのときのみ)。 (既定値:FALSE)
-
cohens_dz_MAP: TRUEにするとCohen's zのMAPを出力します (paired = TRUEのときのみ)。 (既定値:FALSE)
-
cohens_dz_MED: TRUEにするとCohen's zのMEDを出力します (paired = TRUEのときのみ)。 (既定値:FALSE)
-
map_density_n: 事後分布のMAPを計算するときに確率密度を計算するdensity関数の引数です。必要に応じて調整してください。 (既定値:512)
-
verbose: TRUEにすると関数を実行したときに結果がテキストで表示されます。 (既定値:TRUE)