MENU

R で 共分散分析において 3 群以上のカテゴリの多重比較をする方法

三群以上の平均値を多重比較したい。

でも各群の背景因子がそろっていない。

背景因子を調整しながら三群以上の平均値を多重比較するにはどうすればいいか?

R でのやり方を解説する。

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

共変量を調整して多重比較する方法

群ごとの背景因子は、群分け変数と一緒に変わる量(変数)なので、共変量(きょうへんりょう)と呼ぶ。

共変量を調整しながら多重比較してみる。

共変量を調整しない多重比較は下記参照。

使用するデータ

今回例に使うのはmultcompパッケージのlitterというデータ。

生まれた仔ラット全体の体重を四つの用量群で比較する。

共変量は、出産までの妊娠日数と生まれた仔ラットの数。

library(multcomp)
summary(litter)
boxplot(weight ~ dose, data=litter, xlab="Dose", ylab="Weight")
summary(aov(weight ~ dose, data=litter))
round(cor(litter[,-1]),3)
summary(aov(gesttime ~ dose, data=litter))
summary(aov(number ~ dose, data=litter))

データの概要:

  • 処置用量は0、5、50、500の四群。17例から20例。
  • 仔ラット全体の体重の平均は30.33グラム。
  • 妊娠期間は、平均22.09日。
  • 平均仔ラット数は13.43匹。

下記は処置用量と体重の箱ひげ図。

また、ANOVAや相関係数など単変量解析では、どの変数間にも強い関連性は見られないことがわかる。

> library(multcomp)
>
> summary(litter)
dose        weight         gesttime         number
0  :20   Min.   :19.22   Min.   :21.50   Min.   : 5.00
5  :19   1st Qu.:27.77   1st Qu.:21.50   1st Qu.:12.00
50 :18   Median :30.76   Median :22.00   Median :14.00
500:17   Mean   :30.33   Mean   :22.09   Mean   :13.43
3rd Qu.:33.30   3rd Qu.:22.50   3rd Qu.:15.00
Max.   :38.75   Max.   :23.00   Max.   :17.00
>
> summary(aov(weight ~ dose, data=litter))
Df Sum Sq Mean Sq F value Pr(>F)
dose         3  109.9   36.64   1.954  0.129
Residuals   70 1312.8   18.75
>
> round(cor(litter[,-1]),3)
weight gesttime number
weight    1.000    0.307  0.221
gesttime  0.307    1.000 -0.046
number    0.221   -0.046  1.000
>
> summary(aov(gesttime ~ dose, data=litter))
Df Sum Sq Mean Sq F value Pr(>F)
dose         3  1.135  0.3784   2.031  0.117
Residuals   70 13.044  0.1863
> summary(aov(number ~ dose, data=litter))
Df Sum Sq Mean Sq F value Pr(>F)
dose         3   43.3   14.45   2.315 0.0833 .
Residuals   70  436.8    6.24
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

共変量を調整してチューキーの方法で多重比較するには?

妊娠日数と仔ラットの数を調整しながら、仔ラット全体の体重を四用量群で多重比較。

ANOVAの関数aov()と多重比較の関数glht()を使う。

amod <- aov(weight ~ dose + gesttime + number, data = litter)
glht.res.t <- glht(amod, linfct = mcp(dose = "Tukey"))
summary(glht.res.t)

結果は、どの群間にも統計学的有意差なし。

> summary(glht.res.t)
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Tukey Contrasts
Fit: aov(formula = weight ~ dose + gesttime + number, data = litter)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
5 - 0 == 0     -3.3524     1.2908  -2.597   0.0546 .
50 - 0 == 0    -2.2909     1.3384  -1.712   0.3251
500 - 0 == 0   -2.6752     1.3343  -2.005   0.1958
50 - 5 == 0     1.0615     1.3973   0.760   0.8719
500 - 5 == 0    0.6772     1.3394   0.506   0.9574
500 - 50 == 0  -0.3844     1.4510  -0.265   0.9934
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)

共変量を調整してダネットの方法で多重比較するには?

ダネットの方法はどうやるか?

dose=”Tukey”のところをdose=”Dunnett”に変える。

amod <- aov(weight ~ dose + gesttime + number, data = litter)
glht.res.d <- glht(amod, linfct = mcp(dose = "Dunnett"))
summary(glht.res.d)

ダネットの方法は、処置用量0群を対照として比較する。

今回は5と0の間が統計学的有意。

どう考えてデザインして、どう解析したいかによって、選ぶ方法が変わり、統計学的有意かどうかも変わってくる。

> summary(glht.res.d)
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Dunnett Contrasts
Fit: aov(formula = weight ~ dose + gesttime + number, data = litter)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
5 - 0 == 0     -3.352      1.291  -2.597   0.0316 *
50 - 0 == 0    -2.291      1.338  -1.712   0.2234
500 - 0 == 0   -2.675      1.334  -2.005   0.1255
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)

共変量を調整してホックバーグの方法で多重比較するには?

ホックバーグ Hochbergの方法はBonferroni型のp値調整のひとつ。

Tukeyと同じ総当たりペアを解析して、p値調整法をHochbergにしたいと思う。

amod <- aov(weight ~ dose + gesttime + number, data = litter)
glht.res.t <- glht(amod, linfct = mcp(dose = "Tukey"))
summary(glht.res.t, test = adjusted("hochberg"))

どの群間も統計学的有意ではない。

控えめな結果だ。

> summary(glht.res.t, test = adjusted("hochberg"))
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Tukey Contrasts
Fit: aov(formula = weight ~ dose + gesttime + number, data = litter)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
5 - 0 == 0     -3.3524     1.2908  -2.597   0.0691 .
50 - 0 == 0    -2.2909     1.3384  -1.712   0.3661
500 - 0 == 0   -2.6752     1.3343  -2.005   0.2448
50 - 5 == 0     1.0615     1.3973   0.760   0.7919
500 - 5 == 0    0.6772     1.3394   0.506   0.7919
500 - 50 == 0  -0.3844     1.4510  -0.265   0.7919
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- hochberg method)

まとめ

統計ソフトRならば、共変量を調整しながら平均値の多重比較ができる。

aov()とglht()を使って、TukeyもDunnettもHochbergも実施できる。

参考になれば。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次