複数の研究結果から 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

Made with Macintosh