ダネット検定

Rにてダネット検定 (Dunnett test) を行う。ダネット検定は、ひとつの対照群 (コントロール群) と2つ以上の処理群からなる多群のデータ中における対照群と処理群の各2群間の平均値の差についての検定を行う方法である。カナダの統計学者、Charles Dunnettによって開発された。Rでは、パッケージ 'multcomp' の関数 'glht' にて実行することができる。

まず、Rを起動させ、以下のコマンドにてパッケージをインストールし、そのパッケージを読み込む。既にインストール済みの場合、1行目のコマンドは不要。

1|$install.packages("multcomp", repos="http://cran.ism.ac.jp/")
2|$library(multcomp)

以下の、サンプルサイズが5からなる対照群と、それぞれ、'4, 6, 6' からなるデータX、YおよびZが得られたとき、CとX、CとY、CとZの各データ間における平均値の比較をダネット検定にて行う。帰無仮説 (H0) は対象の各2群間の平均値に差がないことである。

データC56, 48, 72, 60, 55
データX60, 62, 76, 84
データY78, 53, 62, 44, 90, 57
データZ77, 72, 83, 81, 91, 83

まず、データを読み込む。チューキー・クレーマー検定で行っているように、データをベクトルにて、データラベル (水準名) を因子にて読み込んでも良いが、以下のように読み込むのも簡単である。まず、データを以下のようにテキストファイル等で成型する。

group	score
C	56
C	48
C	72
C	60
C	55
X	60
X	62
X	76
X	84
Y	78
Y	53
Y	62
Y	44
Y	90
Y	57
Z	77
Z	72
Z	83
Z	81
Z	91
Z	83

次に、以上のデータをコピーし、以下のコマンドで変数 'data' に読み込む。

1|$data=read.table("clipboard",header=T)

この変数 'data' からgroup行を新たな変数 'group' に、score行を新たな変数 'score' に、以下のコマンドにて格納する。

1|$group=factor(data$group)
2|$score=data$score

以上で読み込んだデータをダネット検定する。ダネット検定は、従属変数 'score' および独立変数 'group' を用いて、'summary(glht(aov(従属変数 ~ 独立変数), linfct=mcp(独立変数="Dunnett")))' のようにコマンドを打ち、実行する。複雑なコマンドであるが、分散分析を行う関数である'aov'、結果の要約を表示する関数である 'summary'、実際のダネット検定の計算を行う関数である 'glht' に分解できる。実際には以下のように打つ。

1|$summary(glht(aov(score ~ group), linfct=mcp(group="Dunnett")))

結果は以下のようになる。ダネット検定では、両側検定に加え、右側検定と左側検定もできる。右側検定および左側検定はオプションにそれぞれ、'alternative="g"' または 'alternative="l"' を加える。以上では何も指定していないのでデフォルトの両側検定が実行される。

         Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = score ~ group)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)  
X - C == 0   12.300      7.902   1.557    0.306  
Y - C == 0    5.800      7.132   0.813    0.754  
Z - C == 0   22.967      7.132   3.220    0.013 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
(Adjusted p values reported -- single-step method)

結果の 'X - C' と表示されている行に処理群のデータXと対照群のデータCの比較の結果が示されている。YおよびZについても同様である。重要なのは 'Pr(>|t|)' の列であり、ここに示されている値がp値である。もし、有意水準を5%と決めていた場合、ZとCの比較におけるp値は0.05以下であるので、これら2群の平均値には有意な差があるといえる。以上においては、対照群と処理群の比較が正確に行われているが、この 'glht' はエラーなのか仕様なのか、水準名 (ここでのC, X, Y, Z) をアルファベット順 (水準名が数字の場合、降順) で並べたときの最も若いものを対照群にするので、そこに注意しなければ正確な対比較が行えない。

また、以下の 'confint' コマンドを用いると信頼区間を算出することができる。オプション 'level' にて表示させる信頼区間の幅を変更できる。以下のように 'level=0.99' を指定すると99%信頼区間が表示される。

1|$confint(glht(aov(score ~ group), linfct=mcp(group="Dunnett")), level=0.99)
         Simultaneous Confidence Intervals

Multiple Comparisons of Means: Dunnett Contrasts


Fit: aov(formula = score ~ group)

Quantile = 3.361
99% family-wise confidence level
 

Linear Hypotheses:
           Estimate lwr      upr     
X - C == 0  12.3000 -14.2571  38.8571
Y - C == 0   5.8000 -18.1723  29.7723
Z - C == 0  22.9667  -1.0057  46.9390

結果の 'lwr' および 'upr' はそれぞれ下方信頼限界および情報信頼限界、すなわち信頼区間の下限値 (lower) と上限値 (upper) を示している。以上の場合は、全ての対比較において、信頼区間に0が含まれているので有意差は出ていないことが確認できる。

このエントリーをはてなブックマークに追加

Site search

ページのトップへ戻る