複数の研究結果から effect size を統合する Last modified: May 21, 2009
目的
複数の研究結果から 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
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI