従属なデータ
統計的検定では,独立なデータであることが前提です.対する従属なデータは医学の研究ではよく扱われ,様々な対処法があります.
$X$と$Y$が,互いに独立であれば$COV(X,Y)≠0$となります(十分条件).ゆえに従属なデータは相関関係を持ちます1.医学では,従属なデータを“対応がある”といいます.例えば,左右の握力を測り,左右の差をみるときに,Aという人の右の握力とBという人の左の握力を比べるなら,AとBは異なる人なので独立なデータで,複数名の平均の差を比べたいなら,2標本$t$検定を適用します.また,Aという人の右の握力と左の握力を比べるときは独立ではなくなり(=従属),対応のある$t$検定を適用します.
A,B,Cという3名の左右握力を測ると,6つの握力値が記録されます.D,E,Fという3名の左右握力を測ると,6つの握力が記録されます.ABC群とDEF群は独立です.ABCの平均とDEFの平均の差を検定したいときは,2標本$t$検定で間違いありません.しかし,もしABCの握力値の左右含めてn=6とし,DEFの握力値の左右含めてn=6とし,これらの差を見たいとします.ABCとDEFは独立ですが,Aの右握力とAの左握力は独立ではありません.2標本$t$検定を適用してよいのでしょうか?
例:左右握力のデータの場合
A群(10人)における右の握力データ $X_R$ があるとします.同一の10名に対して左の握力データ $X_L$ があるとします.
同様に,B群(10人)における右の握力データ $Y_R$ ,同一の10名から取った左の握力データ $Y_L$ があるとします.
$X_R$ と $Y_R$ の平均差を検定したいなら,2標本$t$検定の適用となります2.$X_L$ と $Y_L$,$X_R$ と $Y_L$,$X_L$ と $Y_R$ の平均差の検定でも2標本$t$検定を適用します.
ここで,$X=${$X_R,X_L$}(左右のデータを1つにする),$Y=${$Y_R,Y_L$} として,A群の握力とB群の握力を比べたいとき,2標本$t$検定を適用してよいか.2標本$t$検定は,2つの独立した母集団からの各標本(2標本)に対する平均の差を検定する手法です.このケースでは,A群とB群は独立で間違いないですが,Aの中のデータ$X_R,X_L$とBの中のデータ$Y_R,Y_L$の中では,従属な関係があります.これでも検定は成り立つか,です.
Rによるシミュレーション
まず,
cor.matrix<-function(rcoef,l){ #相関係数rcoefのl行×l列行列を作成
r<-matrix(rcoef,l,l)
diag(r)<-1
r
}
の関数で,相関行列rを作ります.この関数を利用して次に,
rep<-10000
n<-50
Y<-NULL
for(m in c(0,0.2,0.4,0.6,0.8)){
r<-cor.matrix(m,2)
X<-NULL
for(i in 1:rep){
x<-cor.sim(r,n) #大きさnのx_1~N(0,1)と相関rを持つx_2~N(0,1)の作成
y<-cor.sim(r,n) #大きさnのy_1~N(0,1)と相関rを持つy_2~N(0,1)の作成
X<-rbind(X,
c(t.test(x[,1],y[,1],var.equal=T)$p.value, #r=0のデータの差の検定⇒p値の回収
t.test(c(x),c(y),var.equal=T)$p.value)) #r=0,0.2,0.4,0.6,0.8のデータの差の検定⇒p値の回収
}
Y<-rbind(Y,c(sum(X[,1]<0.05)/rep,sum(X[,2]<0.05)/rep))
}
dimnames(Y)[[2]]<-c("片側データ","左右のデータ")
dimnames(Y)[[1]]<-c("r=0","r=0.2","r=0.4","r=0.6","r=0.8")
Y
により,シミュレーションします.
まず,$N(0,1)$に従う乱数からデータ$X_1$(n=50),$X_1$と$r=0,0.2,0.4,0.6,0.8$の相関を持つデータ$X_2$(n=50)を発生させます.$r=0$の場合は独立です.
次に,$N(0,1)$に従う乱数からデータ$Y_1$(n=50),$Y_1$と$r=0,0.2,0.4,0.6,0.8$の相関を持つデータ$Y_2$(n=50)を発生させます.これも$r=0$の場合は独立です.
そして,①$X_1$と$Y_1$の2標本$t$検定を行います.続いて,②$X=${$X_1,X_2$}(n=100)と$Y=${$Y_1,Y_2$}(n=100)として,2標本$t$検定を行います.何れも平均に差のない標本なので,有意水準$5%$で検定すれば,第Ⅰ種の過誤は5%前後です.
以上の過程をrep=10,000回繰り返し計算します.
各検定の$p$値から$p<0.05$となる個数を数え,$10,000$で割ります.もし,全てp<0.05であれば1,p<0.05が何もなければ0となります.
シミュレーションの結果
以下は,$n=50$の場合の結果です.$X_1$と$Y_1$の2標本$t$検定では,例えば右側のデータだけでA,B群の差を検定したような結果です.$X$と$Y$の2標本$t$検定では,右側と左側のデータを併せてA,B群の差を検定したような結果です.
有意水準0.05で判断しているので,0.05(=$\alpha$)に近いほど正解です.$X$と$Y$の2標本$t$検定では,相関が大きくなるほど値は上がり,有意差が出やすい条件になります3.
r | $X_1$と$Y_1$ | $X$と$Y$ |
---|---|---|
0 | 0.0483 | 0.0492 |
0.2 | 0.0471 | 0.0726 |
0.4 | 0.0481 | 0.1010 |
0.6 | 0.0487 | 0.1215 |
0.8 | 0.0488 | 0.1464 |
※0.05となるのが理想.0.04~0.06の範囲外を赤字で表示.
ここまでの結論
少なくとも,一人の対象から2つのデータ(例えば左右)を取得して1標本とし,2標本の差の検定を行う方法は間違いでした.シミュレーションするまでもない数理的には常識の事項ですが,証拠を示しました.
検出力,nの異なる場合や,正規分布以外でも確認したいところですが,この一例で十分です.
また,解析はこれ以外のケースもあります.例えば経時的にとった反復測定の例とか,多変量解析の例とかです.問題は必ず起こりますが,程度は想像つかないので,シミュレーションする価値はありそうです.
代わりの方法
A群の左右の握力を測定して,どうしても左右のデータを活用したい4という場合,線形混合モデル(MMRM)を活用できます.
上述のシミュレーションで,MMRMを使用してみます.固定効果(fixed effect)を群の比較,そして左右の比較,変量効果(random effect)を対象者として,Rのlme4パッケージのlmer関数による検定結果を追加します.
上述と同様に,$n=50$として,相関係数の変化,シミュレーション回数は同様です.
シミュレーションの結果
全ての変数で平均に差のない検定結果なので,値は$0.05$前後になるはずです.
r | $X_1$と$Y_1$ | $X$と$Y$ | $X$と$Y$(MMRM) | $X_1,Y_1$と$X_2,Y_2$(MMRM) | 交互作用(MMRM) |
---|---|---|---|---|---|
0 | 0.0518 | 0.0521 | 0.0046 | 0.0488 | 0.0512 |
0.2 | 0.0454 | 0.0686 | 0.0451 | 0.0505 | 0.0524 |
0.4 | 0.0504 | 0.0990 | 0.0502 | 0.0487 | 0.0448 |
0.6 | 0.0481 | 0.1204 | 0.0514 | 0.0492 | 0.0488 |
0.8 | 0.0514 | 0.1503 | 0.0496 | 0.0505 | 0.0524 |
※0.05となるのが理想.0.04~0.06の範囲外を赤字で表示.
MMRMは,理論に近似した結果となりますので,問題なさそうです.
結論
同一人物から左右の握力や筋力などを測定して,全てのデータを利用する方法は誤りです.相関が強いほど,その率は高くなります.しつこいようですが,n=10のA群,n=5のB群があって,それぞれ左右の握力を測り,A群をn=20,B群をn=10として検定すれば,誤った結果が出力されます.もちろん,全員が左右とも測定できない人がいて,A群n=15,B群n=8となることもあると思います.その場合,本結果よりも多少は理論値に近づくと思います.
今回はMMRMで適切な結果となりましたので,解析方法によっては適切に解析できることがわかりました.
古くから医学の研究では,このような手順が当たり前のように行われてきました.その風習を継承しているわけですが,「皆がやってるからいい」とか「赤信号みんなで渡れば怖くない」的な発想は,止めなければなりません.このような検定結果は信用するに足りず,その研究者の信憑性に関わります.