概要
anovakunを用いて分散分析をする際に、どのようなデータ構造でどのような処理をすれば良いかまとめます。
データ
ここでは下記のデータ構造を前提に進めます。
これは、5つのtype条件が参加者間、6つのsize条件が参加者内の実験計画のデータになります。
各実験参加者はユニークなidを振られ「1つのtype条件」で「6つのsize条件」ごとにスコアを集計され、1人辺り6行分のデータが蓄積されます。
R
ここでは分散分析を行うためにanovakunを用い、データを整形するためにtidyverseを用います。
2要因混合(参加者間+参加者内)分散分析
library(tidyverse)
source("anovakun_485.txt")
#データ読み込み
csv = read.csv("result.csv", header = T, encoding = "UTF-8")
#使うデータだけに絞り込む
src = csv %>% select(, c("id", "type", "size", "score.a"))
#データを整形する
dat_AsB = src %>%
#データをtype, id, sizeの順にソート
arrange(type, id, size) %>%
#データを各idのtype毎にsizeのスコアを横並びにする
pivot_wider(c(id, type), names_from = "size", values_from = "score.a") %>%
#idは不要なので削除
select(, -c("id"))
#anovakunで分散分析
#dat_AsBデータを渡し、2要因混合(参加者間:A、参加者内:B)を意味する"AsB"を指定
#第5,6引数に分析結果の各値のラベルを指定
anovakun(dat_AsB, "AsB", auto = T, eta = T,
type = c("東京","神奈川","千葉","埼玉","茨城"),
size = c("24cm","25cm","26cm","27cm","28cm","29cm"))
arrange()
はpivot_wider()
する際に、各実験参加者のデータを同じsize順に並ばせる為に行います。
1要因参加者内分散分析
library(tidyverse)
source("anovakun_485.txt")
#データ読み込み
csv = read.csv("result.csv", header = T, encoding = "UTF-8")
#使うデータだけに絞り込む
src = csv %>% select(, c("id", "type", "size", "score.a"))
#データを整形する
dat_sA = src %>%
#type条件を1つに絞る
filter(type == "2") %>%
#データをtype, id, sizeの順にソート
arrange(type, id, size) %>%
#データを各id毎にsizeのスコアを横並びにする
pivot_wider(c(id, size), names_from = "size", values_from = "score.a") %>%
#idは不要なので削除
select(, -c("id"))
#anovakunで分散分析
#dat_sAデータを渡し、1要因参加者内を意味する"sA"を指定、sizeのデータ個数を指定
anovakun(dat_sA, "sA", 6, auto = T, eta = T)
1要因参加者間分散分析
#データを整形する
dat_As = src %>%
#size条件を1つに絞る
filter(size=="24") %>%
#データをtype, idの順にソート
arrange(type, id) %>%
#元データが縦構造なのでここではpivotは不要
#id、sizeは不要なので削除
select(, -c("id", "size"))
#anovakunで分散分析
#dat_Asデータを渡し、1要因参加者間を意味する"As"を指定、typeのデータ個数を指定
anovakun(dat_As, "As", 5, eta = T)
まとめ
anovakunを用いて分散分析するためのデータ構造と処理についてまとめました。
どの条件を参加者間/参加者内にするかよく検討し、後の分析を考慮してデータ構造の設計を行うようにしましょう(自戒)
おまけ
#pipe演算子は command⌘ + shift⇧ + m がショートカット
%>%