rstatixを用いた反復測定の分散分析
更新日: 2025/5/28
データはとりあえずdatariumパッケージのdepressionを使ってみた。
変数は参加者を識別するid,群分けのtreatment,t0からt3までがうつ得点で,プレテスト,1ヶ月後,3ヶ月後,半年後と4時点で測定をしている。
以下では群分けについてはとりあず無視してやってみる。
code:R
# パッケージ読み込み
library(tidyverse)
library(rstatix)
library(datarium)
# データの読み込み
data("depression")
# ロング型に変換
depression_long <- depression %>%
pivot_longer(cols = t0:t3, names_to = "time", values_to = "score") %>%
mutate(time = as_factor(time))
分散分析の実行の際にはanova_test()関数をパイプで渡せば良いらしい。使い方は非常に簡単で従属変数,個人を識別する変数,参加者内要因の列名をそれぞれ指定すればOK。要因が複数の場合はc(factor1, factor2)のように指定する。そのほかに平方和のタイプや効果量などが指定できる。
code:R
# 分散分析
res_anova <- depression_long %>%
anova_test(dv = score, wid = id, within = time,
type = 3, effect.size = "pes")
結果はget_anova_table()で見れる。引数correctionで球面性の仮定に関係した自由度の調整の方法が選べる。GGだとGreenhouse-Geisserで,HFだとHyunh-Feldtで,Mauchlyの検定結果にかかわらず問答無用で自由度を調整する。autoを選ぶと,検定結果が有意だった場合のみGreenhouse-Geisserを用いる。 code: R
get_anova_table(res_anova, correction = "GG")
https://scrapbox.io/files/6835bdc96cc26096de2409a6.png
多重比較を行うときはpairwise_t_test()関数にパイプで渡せば良い。p値の調整法やら対応の有無やらが選べる。
code: R
# 多重比較
depression_long %>%
pairwise_t_test(score ~ time, paired = TRUE, p.adjust.method = "holm")
https://scrapbox.io/files/6835bdb5e83a3d6f6e35587d.png
効果量を求めたい場合にはcohen_d()の関数を使う。ci = TRUE にするとブートストラップ法で信頼区間を計算してくれる。paired = TRUEで差得点の平均を差得点のSDで割った効果量($ d_zって表記されることが多いでしょうか)が算出される。
code: R
# 効果量の算出
depression_long %>%
cohens_d(score ~ time, paired = TRUE, ci = TRUE)
https://scrapbox.io/files/6835bfb4df01f407e901a0f3.png
結果がtibbleで返って来るのが良い。