A way of thinking

筆者個人の思考過程です。意見には個人差があります。

equivalence testとその周辺

統計処理において,検出力分析(Power Analysis)はまぁまぁ有名。これは本来,実験等を開始する前に使って,サンプルサイズを決めたりするのに使うべきなのですが,実験や調査等を行った後に計算される場合もある。後者の使い方は,結構議論の的になっていて,詳しいことは,Thomas 1997なんかを読めば書いてある*1

Thomas. 1997. Retrospective power analysis. Conservation Biology 11:276-280.

他方,"意味のある差"がないことを示したい場合もある。統計的に有意な差(あるいは効果,以下差で統一)が検出されなかったことは,(実験計画をよほどしっかりたてていない限り)本来注目すべき差がないというわけではない*2。こういう推論をしたい際に,提案されているのが,equivalence testである。日本語では,同等性検定とか等価性検定とでも訳されるのかもしれません。ちゃんと調べてないですが,ネットで調べる限り,あまり日本語では情報が出てこなかった記憶が。。じゃあ,この検定は何をやるのかというと,Dixon & Pechmann 2005なんかに書いてある。というのは,あまりに無責任な気がするので,ちょっとだけ説明したい。最初に言うと,概念的にはとっても簡単。例えば,

  1. ある虫の集団がなんらかの化学物質に影響を受けている,とする。
  2. その化学物質は,虫の成長を阻害する,とする。
  3. 調査者はある時期に,その虫の成長度合いとして,体サイズを測る,とする。
  4. 調査者は,化学物質の影響のない集団の体サイズについて十分なデータを持っている,とする。

この条件で,例えば,「化学物質の影響のない集団の体サイズの平均値の95%信頼区間の上限と下限」を「equivalence region(この文脈では,意味のある影響はないと判断する範囲)」と定義するならば,「化学物質の影響をうけている集団の体サイズの平均値の90%信頼区間がこの範囲に入っていれば,化学物質の影響はほとんどないと判断するといった感じ*3。検出力を計算するよりは,直感的にマシだと思うのですが,普及度はかなり低いようです。Environmental Toxicology and Chemistry誌でもこの検定使った論文は1本くらいしかありません。

Dixon PM, Pechmann JHK. 2005. A statistical test to show negligible trend. Ecology 86:1751–1756.

全然うまく説明できた自信はないので,興味がある方は,関連論文をご覧下さい。ただ,この手法も色々問題はありそうな気がする。まぁ影響の範囲がうまく定義できるのであれば,こういう手法を活用するのもアリでしょう。


ボクは「ほとんど影響がない(意味がある差がない)」ことを議論したいというキワドイ研究をしていて,論文を書くと査読者から色々文句を言われるのですが,考えてみると,統計的な有意差が観測された場合も一緒で,「有意さがあった!」「有意さがあった!」と論文に書いてあっても,それってほんとに意味がある差なのか?という査読者コメントがあってもいいんじゃないかなぁと思った。自戒の念もこめて。「君にも出せる有意差」!

生物学を学ぶ人のための統計のはなし―きみにも出せる有意差

生物学を学ぶ人のための統計のはなし―きみにも出せる有意差

###追記 2012/02/27
###追記 2012/09/21:以下記述が不正確なところがあります*4。例えば,p値が意味しているものとか。思い出すのに時間がかかるので,ちょっと詳しい説明はそのうちということで,ご勘弁ください。equivalence()とすれば,計算を方法を書いたコードが出てきますので,コードが読める方はそれを読むといいと思います。
2つの群の平均値の差を対象とした等価性検定は,Rに関数が準備されている。library(equivalence)の中の,tostという関数。tostは,two one-sided test。例えば,以下の感じ。

library(equivalence) # 該当パッケージを読み込む
a <- c(1,2,3) # 疑似データを作成
b <- c(2,3,4)


# two one-sided test*5
tost(a, b, epsilon=2.8)
# epsilonは"無視できる"とする差の絶対値


# 結果は以下の通り。
$mean.diff #平均値の差(a-b)
[1] -1


$se.diff # 平均値の差の標準偏差。例えばここのSDDと等しい。
[1] 0.8164966


$alpha # 有意水準
[1] 0.05


$ci.diff # 差の信頼区間。上の平均値の差,その標準偏差,及び自由度と有意水準から求められる。この場合,90%信頼区間に等しい。
[1] -2.7406456 0.7406456
attr(,"conf.level")
[1] 0.9 # ここは


$df # 自由度
df
4


$epsilon
[1] 2.8 # 設定した"無視できる差"


$result
[1] "rejected"
# この場合,2つの帰無仮説が棄却されたことを示す。
# すなわち,2.8を無視できる差と設定すると,2つの群の平均値はequivalentと結論づけられることになる*6


$p.value
[1] 0.04609248
# 下限と上限で,2.8の差近い方のp値


$check.me
[1] -2.8 0.8 # p値に対応する信頼区間
attr(,"conf.level")
[1] 0.907815

という感じ。

*1:例えば,検出力の信頼区間を示せとかが書いてある。ボクも詳しいことは自信がないので,とりあえず導入という意図で

*2:というか,本来は実験前にその意味のある差を定義して実験や調査を組むのが常套なのかもしれない。生態学や生態毒性学周辺で,そのあたりをしっかり考えてやっている人はほとんど皆無だろうなぁ。

*3:有意水準5%

*4:大分前に作者にメールして気づきました

*5:変だけど,両側の片側検定とでも訳すべきか…

*6:細かい文言は正しくないかも知れませんが