一元配置分散分析

例題
歩行が自立している高齢者のバランストレーニングの効果を確認するために、30名を対象に床反力計を使用して足圧中心(COP)の総軌跡長を30秒間評価した。年齢別に差があるか有意水準5%で検定してみましょう。

僕が作った架空のデータで練習しましょう。結果についてはご意見があると思いますが、統計学の練習のためのサンプルですのでご了承ください。

データの準備と要約

使用するパッケージ

R
library(psych)
library(multcomp)

以下のファイルを読み込んでください(ファイルの読み込み方

R
dat <- read.csv("anova-01.csv", header=T, fileEncoding = "UTF-8")

縦のデータセットです

R
head(dat)

グラフ(赤い線は全体の平均値です)

グラフの描き方はここを参照ください

各グループの要約

R
psych::describeBy(dat$data, dat$age)

情報が多すぎるので・・・

R
dat2 <- psych::describeBy(dat$data, dat$age)
lapply(
    dat2,
    "[",
    c("n", "mean", "sd", "median", "min", "max", "se")
) 

これくらいでいいでしょう

IDとageはカテゴリー変数に変更しましょう(重要

R
dat$ID <- as.factor(dat$ID)
dat$age <- as.factor(dat$age)

回帰分析と分散分析

回帰分析

分散分析表の前に単回帰分析をやります(ただしageは0 or 1の2値変数となります)

R
fit <- lm(data~age, data=dat)
summary(fit)

lm(data~age, data=dat)

Rで単回帰分析を実行するときのプログラムです。y=data, x=ageです。ただしここではageが名義変数ですので解釈には注意が必要です。

この結果から以下のことが分かります

  • age65-70の平均=1092
  • age70-75の平均=1092+83.9=1175.9
  • age75-80の平均=1092+234=1326

また一番下の行が分散分析の結果です

F検定のp値が<0.05なので3群のどこかに有意差があることが分かります

回帰分析でもう少し解説する予定です

分散分析

回帰分析の結果をanova関数に渡すことで分散分析表が出力されます(自由度、F値、p値は同じです)

R
anova(fit)

分散分析表

F値は回帰分析の結果と同じです

群間に有意な差があることが分かりました

多重比較

多重比較の方法のみ紹介します

Dunnet法

この検定はコントロール群と他の群との比較になります

R
ano <- aov(data ~ age, data = dat)
summary(multcomp::glht(ano, linfct=mcp(age = "Dunnett")))

65-70 vs 75-80 に有意差があります

これは、65-70群がコントロール群になっています

75-80群をコントロールに置きたいときは

R
dat$age <- relevel(dat$age, ref="75-80") 
ano <- aov(data ~ age, data = dat)
summary(multcomp::glht(ano, linfct=mcp(age = "Dunnett")))

65-70 vs 75-8070-75 vs 75-80 に有意差があります

Tukey‒Kramer法
R
TukeyHSD(aov(data ~ age, data = dat))

65-70 vs 75-80, 70-75 vs 75-80 に有意差があります

Bonferroni法
R
pairwise.t.test(dat$data, dat$age, p.adj = "bonf")

同じく65-70 vs 75-80, 70-75 vs 75-80 に有意差があります

結果のみでよければ、ここまででOKです

ここからはもう少し詳しく勉強してみましょう

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

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