目的 複数の研究結果から effect size を統合する 使用法 effect.size(Ne, Me, SDe, Nc, Mc, SDc) 引数 Ne 実験群のケース数のベクトル Me 実験群の平均値のベクトル SDe 実験群の標準偏差のベクトル Nc 対照群のケース数のベクトル Mc 対照群の平均値のベクトル SDc 対照群の標準偏差のベクトル ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/effect.size.R", encoding="euc-jp") # 対照群と実験群のケース数,平均値,標準偏差から effect size を求め,統合した effect size を求める effect.size <- function( Ne, Me, SDe, # 実験群のケース数,平均値,標準偏差 Nc, Mc, SDc) # 対照群のケース数,平均値,標準偏差 { N <- Ne+Nc # 合計例数 SD <- sqrt(((Ne-1)*SDe^2+(Nc-1)*SDc^2)/(N-2)) # プールした標準偏差 g <- (Me-Mc)/SD # Glass の effect size g d <- (1-3/(4*N-9))*g # g の不偏推定値 SSest <- N/(Ne*Nc)+d^2/(2*N) # d の分散 DF <- data.frame(Ne, Me, SDe, Nc, Mc, SDc, SD, g, d, SSest) # 結果をデータフレームとしてまとめる LST <- list(DF=DF, "mean(g)"=mean(g), # 統合した effect size(単純平均) "mean(d)"=mean(d), # 同上(単純平均) "mean(d+)"=sum(d/SSest)/sum(1/SSest)) # 同上(サンプルサイズで重み付け平均) class(LST) <- c("effect.size", "list") return(LST) } # print メソッド(結果のデータフレームを LaTeX 形式で出力し,統合結果も出力する) print.effect.size <- function(ans) { print.latex(ans[[1]], ctable=FALSE, format="s i i i i i i f6 f6 f6 f6") cat(sprintf("g = %.6f\nd = %.6f\nd+ = %.6f\n", ans[[2]], ans[[3]], ans[[4]])) } 使用例 Ne <- c(10, 40, 30, 40) # 実験群のケース数のベクトル Me <- c(130, 120, 140, 160) # 実験群の平均値のベクトル SDe <- c(15, 12, 20, 20) # 実験群の標準偏差のベクトル Nc <- c(5, 20, 30, 20) # 対照群のケース数のベクトル Mc <- c(140, 140, 150, 145) # 対照群の平均値のベクトル SDc <- c(20, 15, 25, 35) # 対照群の標準偏差のベクトル ans <- effect.size(Ne, Me, SDe, Nc, Mc, SDc) ans ans$DF 出力結果例 > ans # print.effect.size 関数で出力される % \begin{table}[htbp] \caption{} \label{} \begin{center} \begin{tabular}{ccccccccccc} \hline & Ne & Me & SDe & Nc & Mc & SDc & SD & g & d & SSest \\ \hline 1 & 10 & 130 & 15 & 5 & 140 & 20 & 16.698687 & -0.598849 & -0.563623 & 0.310589 \\ 2 & 40 & 120 & 12 & 20 & 140 & 15 & 13.058885 & -1.531524 & -1.511634 & 0.094042 \\ 3 & 30 & 140 & 20 & 30 & 150 & 25 & 22.638463 & -0.441726 & -0.435989 & 0.068251 \\ 4 & 40 & 160 & 20 & 20 & 145 & 35 & 25.889353 & 0.579389 & 0.571864 & 0.077725 \\ \hline \end{tabular} \end{center} \end{table} % g = -0.498178 d = -0.484846 d+ = -0.408965 > ans$DF # データフレーム部分だけ,print.data.frame 関数で出力される Ne Me SDe Nc Mc SDc SD g d SSest 1 10 130 15 5 140 20 16.69869 -0.5988495 -0.5636230 0.31058903 2 40 120 12 20 140 15 13.05889 -1.5315243 -1.5116344 0.09404199 3 30 140 20 30 150 25 22.63846 -0.4417261 -0.4359894 0.06825072 4 40 160 20 20 145 35 25.88935 0.5793887 0.5718642 0.07772524 > ans[[2]] # g の単純平均 [1] -0.4981778 > ans[[3]] # d の単純平均 [1] -0.4848456 > ans[[4]] # d の重みつき平均 [1] -0.4089653 解説ページ