このドキュメントについて

このドキュメントは、続・『続・心理統計学の基礎』(南風原朝和 著)読書会について作成した第3章3節以降のメモという位置づけです。主にRで簡単に実行できるコードを中心に構成しています。ただこのドキュメントのみでは意味が通らないかと思いますので、続・心理統計学の基礎と共にご覧ください。

3.独立な2群の平均値差に関する効果量

検定力を規定する効果量

共通の分散を持つ2つの正規母集団\(N(\mu_1, \sigma^2),N(\mu_2, \sigma^2)\)から、それぞれ大きさ\(n_1,n2\)の標本を独立にとるとき、2群間の平均値差の検定のための検定統計量は以下により算出されます: \[ \begin{eqnarray} t=d\times\sqrt{\frac{n_1 n_2}{n_1 + n_2}} \end{eqnarray} \]

なお、この\(d\)標本標準化平均値差で、以下の式から求めます: \[ \begin{eqnarray} d=\frac{\bar{y_1}-\bar{y_2}}{s^*} \end{eqnarray} \]

この\(\bar{y_1},\bar{y_2}\)は各群の標本から算出した平均値なので、分子は標本2群の平均値間の差となります。分母は母集団標準偏差の推定量で、以下のような式で求めます:

\[ \begin{eqnarray} s^* = \sqrt{\frac{n_1 s_1^2 + n_2 s_2^2}{n_1 + n_2 - 2}} \end{eqnarray} \]

この\(s^*\)は要するに、標本2群の標準偏差\(s_1,s_2\)をプールしています。ようするに、この統計量は標本における2群間の平均値差が、(母集団)標準偏差の何倍くらいかを示すのが\(d\)です。効果量っぽいですね。でもこの算出された\(t\)値には2つの前提があります:

  1. 帰無仮説\(H_0 : \mu_1 = \mu_2\)が真である
  2. 想定している2群の母集団はそれぞれ正規分布を仮定かつ母分散が共通(等しい)

まず後者について、これはよく対応のないt検定で出てくるお話ですのでここでは置いておきます。前者の帰無仮説についてですが、この\(t\)は自由度\(n_1 + n_2 -2\)\(t\)分布に従います。そうでなければ前章でお話したように分布が\(t\)分布から歪んでしまいます。そう、非心\(t\)分布に従います。なお非心度は以下のように算出されます:

\[ \begin{eqnarray} \lambda = \delta \times \sqrt{\frac{n_1 n_2}{n_1 + n_2}} \end{eqnarray} \]

なお、この\(\delta\)母集団標準化平均値差となり、以下の式となります:

\[ \begin{eqnarray} \delta = \frac{\mu_1 - \mu_2}{\sigma} \end{eqnarray} \]

この\(\mu_1,\mu2\)は母集団における各群の平均値です。帰無仮説\(H_0 : \mu_1 = \mu_2\)が偽なので、この分子は0でない何らかの値をとります。\(\sigma\)は母集団における標準偏差(添字が入らないのは2群で共通だから)です。これを\(t\)に組み込んで指標を算出するお話は前章で触れているので省略します。

さて、この\(\delta\)は「母集団における2群の(標準化された)ズレ具合(を推定した値)」です。つまり母集団における効果量ということもできます。ではこの値はどうやって求めるのかですが、\(d\)と共通(不偏推定量)となります。なので効果量報告では\(d\)が報告されます。

この非心度\(\lambda\)と自由度\(n_1 + n_2 -2\)から、検定力を算出できますね。サンプルサイズ、決めれます。なおテキストの注16にあるとおり、この\(d\)はHedges`\(g\)とよばれることがあるようで、さらに色々面倒なことがあるようです。テキストでは「標準化平均値差\(d=***\)」という表現が望ましいとあります。

解釈の観点からの効果量

基本は本文を読んでください。以下ポイントを箇条書きで。

効果量の解釈について

  • 標準化平均値差\(\delta\)は「2群間の平均値差が群内の標準偏差の何倍か」なのでつかみやすい
  • イメージをつかみやすくするための指標としてCohenの\(U_3\)や優越率などがある
  • これらの指標は2群間の分散の等質性を前提としているので研究報告では…
  • しかし検定力分析の時に母集団効果量を設定したい場合など、使える時もある

Cohenの\(U_3\)に関する補足

  • 「統制群」や「実験群」という言葉は(ここでは)気にしなくてOK
  • この図で統制群の方は標準正規分布\(N(0,1)\)、実験群の方は\(N(\delta,1)\)と考えていいです
  • なぜならこの\(\delta\)は「母集団における(標準化された)平均値差」で、片方の平均値を0にするようにスライドさせた図だから
  • したがってこの\(U_3\)は、「標準正規分布で\(\delta\)の値までの(下からの)累積確率(面積)」で計算可能
  • Rで(一応)計算すると以下のようになります:
delta <- 1 #母集団効果量を設定
U3 <- pnorm(delta,mean=0,sd=1)
U3
## [1] 0.8413447

優越率に関する補足

  • \(\pi_d\)の導出については省略します
  • \(z\)は標準正規分布に従う変数であり、\(\pi_d\)もまた標準正規分布に従います
  • \(\delta = 0\)の時、この確率は0.5(つまり五分五分)となります
  • Rで(一応)計算すると以下のようになります:
delta <- 1 #母集団効果量を設定
PoD <- pnorm(delta/sqrt(2),mean=0,sd=1)
PoD
## [1] 0.7602499

2群の分散が顕著に異なる場合

結論: そのままじゃ正直厳しいです。

  • いわゆるWelch案件ですが、これはt検定における自由度補正のお話です。ちょっと文脈がずれます
  • ただし母集団効果量\(\delta\)の算出に\(s^*\)を使用しており、これは母集団各群の分散(標準偏差)が絡みます
  • 研究によっては\(d_c\)を用いる方法もある

\(d_c\)について

  • 統制群(もしくはそれに相当する群)の標準偏差によって平均値差を標準化した指標の母数や推定量で考える
  • でもこれはこれで悩ましい自体も(後述)

標準化平均値差\(\delta\)の信頼区間

算出手続き

  1. 検定統計量\(t\)値を算出
  2. 今回出てきたこの\(t\)値が、自由度\(n_1 + n_2 - 2\)、非心\(t\)分布の上側確率\(\alpha/2\)にピッタリ重なるように非心度\(\lambda\)を算出(\(\lambda_L\))
  3. この\(\lambda_L\)を使って、効果量の信頼区間の下限値(\(\delta_L\))を算出(テキストの数式(3.16)参照)
  4. 2と3について下限と上限を入れ替えて算出

なんでこうなるの?

  • 第3章2節の相関係数のところと全く同じ考え方なのでそちら(特に図3-3)を参照
  • 2.について、「もしその\(t\)値でもっと小さい\(\lambda\)に設定」してしまうと、図3-3の左の分布がもっと左寄りになってしまう
  • すると上側確率\(\alpha/2\)から外れてしまうのでアウト。なのでこれより大きな\(\lambda\)にしないといけない

数値例

テキストの例をRで算出してみます。なおMBESSパッケージを使用するところは修正しています:

# 各種パラメータの設定
# dは平均値差と各群の標準偏差とサンプルサイズにより計算できます
alphaaa <- 0.05 #α
n1 <- 20
n2 <- 20
d <- 0.8 #標本より算出された母集団効果量の推定値

# 検定統計量tの算出
t_value <- d*sqrt((n1*n2)/(n1+n2))
t_value
## [1] 2.529822
# 非心度の下限値・上限値の算出
# テキストで紹介されているMBESSパッケージを利用します

# install.package("MBESS") # 未インストール時は左のコードを実行
library("MBESS")
lambdaaaa <- conf.limits.nct(t.value = t_value, df=(n1+n2-2),conf.level=(1-alphaaa)) #テキストからconf.levelに変更
lambdaaaa
## $Lower.Limit
## [1] 0.4741762
## 
## $Prob.Less.Lower
## [1] 0.025
## 
## $Upper.Limit
## [1] 4.55476
## 
## $Prob.Greater.Upper
## [1] 0.025
# 非心度の下限値・上限値を、後述の式が見やすいよう変数に格納
lambda_L <- lambdaaaa$Lower.Limit
lambda_U <- lambdaaaa$Upper.Limit
c(lambda_L,lambda_U)
## [1] 0.4741762 4.5547602
# 効果量の信頼区間の限界値を算出
delta_L <- lambda_L*sqrt((n1+n2)/(n1*n2))
delta_U <- lambda_U*sqrt((n1+n2)/(n1*n2))
c(delta_L,delta_U)
## [1] 0.1499477 1.4403416

\(d_c\)に基づく信頼区間

基本省略しますが、ブートストラップ法が有効では? という話です。

4.対応のある2群の平均値差に関する統計量

検定力を規定する効果量

詳細は省略します。以下気をつけるポイントです:

  • サンプルサイズは対の数\(N\)
  • 観測値間の差異\(\upsilon\)に正規分布を仮定している

独立な2群の場合との比較

詳細は省略します。以下気をつけるポイントです:

  • ここで出てくる\(\rho_12\)は、2群間の母相関係数
  • つまり「対応がある」ことの性質はこの\(\rho\)によって表現されます

解釈の観点からの効果量

省略します。

効果量\(\delta'\)の信頼区間

省略します。なお計算は対応がない場合よりも簡単となります。

5.カテゴリカル変数の連関に関する効果量

検定力を規定する効果量

2つのカテゴリ変数間の連関を検定する場合、\(\chi^2\)を算出します:

\[ \begin{eqnarray} \chi^2 = \sum_{i=1}^a\sum_{j=1}^b\frac{(n_{ij}-e_{ij})^2}{e_{ij}} \end{eqnarray} \]

これは\(\chi^2\)検定でよく見る形なので説明は省略します。ここで算出された\(\chi^2\)値は、帰無仮説が真であれば自由度が\((a-1)(b-1)\)\(\chi^2\)分布に従います。でも帰無仮説が偽であれば非心\(\chi^2\)分布に従い、その非心度は以下のようになります:

\[ \begin{eqnarray} \lambda = \sum_{i=1}^a\sum_{j=1}^b\frac{(\pi_{ij}-\pi_{0ij})^2}{\pi_{0ij}} \times N \end{eqnarray} \]

よって、母集団効果量は非心度からNの要素を抜いた、以下のようになります:

\[ \begin{eqnarray} \gamma = \sum_{i=1}^a\sum_{j=1}^b\frac{(\pi_{ij}-\pi_{0ij})^2}{\pi_{0ij}} \end{eqnarray} \]

解釈の観点からの効果量

母集団効果量\(\gamma\)に対応する標本統計量は\(\chi^2/N\)ですが、行数・列数に依存します(要するに影響をうけてしまう)。なので効果の大きさを見たいと思っても、行列サイズでその意味が変わるのでは困ります。そこでテキストではクラメルの連関係数\(V\)を紹介しています:

\[ \begin{eqnarray} V = \sqrt{\frac{\chi^2}{(min(a,b)-1)N}} \end{eqnarray} \]

クラメルの連関係数の信頼区間

省略です。テキストのままです。

数値例

テキストにある数値例を実際にRで計算してみます

# パラメータの設定
n <- 50
a <- 2 #行数
b <- 3 #列数
chi <- 7.8 #かいにじょーち
alphaaa <- .05

# クラメルの連関係数の算出
V <- sqrt(chi/((min(a,b)-1)*n))
V
## [1] 0.3949684
# このchi^2.valueのときの、非心度らむだぁの95%信頼区間の下限値・上限値を算出
# MBESSパッケージを利用します
library("MBESS")
lambdaaaa <- conf.limits.nc.chisq(Chi.Square=chi,df=(a-1)*(b-1),conf.level=1-alphaaa)
lambdaaaa
## $Lower.Limit
## [1] 0.1173012
## 
## $Prob.Less.Lower
## [1] 0.025
## 
## $Upper.Limit
## [1] 21.27973
## 
## $Prob.Greater.Upper
## [1] 0.025
# イメージしやすいように値を変数に格納しときます
lambda_L <- lambdaaaa$Lower.Limit
lambda_U <- lambdaaaa$Upper.Limit
c(lambda_L,lambda_U)
## [1]  0.1173012 21.2797331
# 上記のラムダを使って効果量をそのまま算出もできますが、テキストにあわせてクラメルの連環計数の95%信頼区間の上限値・下限値を算出します

gamma_L <- sqrt(((a-1)*(b-1)+lambda_L)/((min(a,b)-1)*n))
gamma_U <- sqrt(((a-1)*(b-1)+lambda_U)/((min(a,b)-1)*n))
c(gamma_L,gamma_U)
## [1] 0.2057815 0.6823450

はい、一致しましたね。ちなみに注27にあるとおり、\(\chi^2\)分布は非負ですので、場合によってはエラーを出すことがあります:

# パラメータの設定
n <- 50
a <- 2 #行数
b <- 3 #列数
chi_dame <- 0.23 #適当にいれてみた
alphaaa <- .05

# not run(走りません).のでコメントアウトしてます
#lambdameee <- conf.limits.nc.chisq(Chi.Square=chi_dame,df=(a-1)*(b-1),conf.level=1-alphaaa)
#lambdameee

このような場合、conf.level=NULLと水準として設定せず、上側確率と下側確率をそれぞれ個別に設定します。なお下側は(どうせ)マイナスなので0にしときます:

lambdaiyaaaa <- conf.limits.nc.chisq(Chi.Square=chi_dame,df=(a-1)*(b-1),conf.level=NULL,alpha.lower=0,alpha.upper=alphaaa/2)
lambdaiyaaaa
## $Conf.Interval.type
## [1] "one-sided"
## 
## $Lower.Limit
## [1] 0
## 
## $Upper.Limit
## [1] 3.111237
## 
## $Prob.Greater.Upper
## [1] 0.025

以上です。