Rで共分散分析をして調整済み平均値を推定する

R/Rstudio

条件間の比較を行う際、共変量を調整して条件を比較することができる共分散分析を使うことがあります。
Rではaov関数を使った通常の分散分析の式に調整したい変数を足し算していけばよいです。

aov(従属変数~ 独立変数 + 共変量, data=data)

※1要因参加者間の共分散分析の例

ところで、SPSSであれば分析後に共変量を加味した調整済みの平均値を出してくれるのですが、Rでどうやって出力できるのかなぁと気になりました。
そんなわけで、今回はRで共分散分析をした後に出力するやり方についてメモします。

なお、共分散分析については、以下の記事でも紹介しています。

共変量で調整済みの推定平均値を出力する

Rで共分散分析をしたときの共変量で調整済みの推定平均値を求める際には、emmeansパッケージにある関数を遣うと便利です。

  • 共分散分析のモデルを変数に代入
  • emmean関数にモデルと出力したい条件要因を引数として代入

これだけでできます。
具体例をもとにやってみます。以下のコードをRで実行すると、都合の良い架空データになります。

id<-c(1:15) #ID1~15
btwn<-as.factor(rep(c(“a”,”b”,”c”),each=5)) #a~c条件という参加者間要因を5つずつセット(factor型にしておく)
age<-c(10,7,12,11,14,8,9,11,13,15,14,13,16,8,11) #共変量として年齢(連続変量)
score<-c(83,74,76,66,78,76,77,82,86,89,88,87,90,78,84) #従属変数(連続変量)

dat<-data.frame(id,btwn,age,score) #上記の4つを合体
dat

type3の共分散分析をするときはcarパッケージのAnova関数を使うと便利です。

install.packages(“car”)#初回のみ
library(car) #carパッケージを読み込む。

options(contrasts = c(“contr.sum”, “contr.sum”)) #type3Anovaの際に必要な宣言
res<-aov(score ~ btwn + age,dat)
Anova(res,type=3)

共分散分析の結果(左がRで、右にSPSS、赤枠が要因の主効果)

共分散分析の結果が一致していることがわかります。
ちなみに、多重比較は以下のように行えばbonferroni法による多重比較も可能です。

install.packages(“multcomp”)#初回のみ
library(multcomp)

posthoc <- glht(res, linfct = mcp(btwn = “Tukey”))
summary(posthoc, test = adjusted(“bonferroni”))

共分散分析後の多重比較(bonferroni法)

最後に、共変量によって調整した推定平均値をemmeans関数を使って出力します。

install.packages(“emmeans”)#初回のみ
library(emmeans) #carパッケージを読み込む。

adj_means<-emmeans(res,~btwn )
print(adj_means)

共変量によって調整済みの推定平均値

調整済みの平均値といっしょに、標準誤差や95%信頼区間まで出してくれるのはありがたいですね(SPSSとも一致していました)。
この記事が参考になれば幸いです。

タイトルとURLをコピーしました