一元配置分散分析

1ページ 2ページ 3ページ

データの準備と要約

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

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

使用するパッケージ

R
library(psych)
library(multcomp)
library(ggplot2)

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

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

縦のデータセットです

R
head(data)

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

R
data <- data %>% mutate(
  ID = factor(ID), 
  age = factor(age)
)

グラフ

R
p <- ggplot(
  data,
  aes(x = factor(age, levels = c("65-70", "70-75", "75-80")), y = data)) +
  geom_point() +
  labs(x = "Age", y = "Data", title = "") +
  theme_minimal()
print(p)

各グループの要約(’age’ 別に’data’の平均値、標準偏差、最小値、最大値を計算し、小数点第2位で丸める)

R
result <- aggregate(
  data ~ age, data = data, 
  FUN = function(x) {
    c(mean = round(mean(x, na.rm = TRUE), 2), 
    sd = round(sd(x, na.rm = TRUE), 2), 
    min = round(min(x, na.rm = TRUE), 2), 
    max = round(max(x, na.rm = TRUE), 2))
})

print(result)

回帰分析と分散分析

回帰分析

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

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

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値は回帰分析の結果と同じです。群間に有意な差があることが分かりました。説明変数のカテゴリに基づいたグループ分けは、回帰分析におけるダミー変数による分析と本質的に同じ処理を行っており、同じデータ構造と同じ平方和の分割を用いているため、F値が同一になります。

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

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