Rで1要因ANOVA(被験者内)を行う方法と、結果の見方と書き方

2022年6月13日

サンプルデータ

Rで1要因ANOVA(被験者内)を行うための手順を、RStudioを使って示していきます。一人の被験者に対して三回実験を行い、各実験後に何らかの評価(アンケートやテストなど)を取得して比較する場合、対応のあるt検定を利用できます。例えば、以下のようなデータを取得した場合を想定します:

A	B	C
97	56	56
101	39	39
91	57	57
88	54	54
92	42	42
104	47	47
95	49	49
102	45	45
89	53	53
99	52	52
105	53	53
98	56	56
96	56	56
94	49	49
97	49	49
102	48	48
92	43	43
103	57	57
103	49	49
97	43	43

分析方法の選び方

Rstudioでの分析には、以下のコマンドを利用します。今回はcarというライブラリを使っているので、必要であれば先にライブラリのインストールを行います。

library(car) #Anova関数用
Data2 <- read.csv("Data2.csv") #テスト
y <- stack(Data2) # データ並び替え
sample <- factor(rep(c(1:20),3)) # 被験者内比較用の条件
Anova(lm(y$values ~ y$ind+sample), type='III') # Type IIIの平方和を利用した分散分析
result <- Anova(lm(y$values ~ y$ind+sample), type='III') # 効果サイズ計算用
result$"Sum Sq"[2]/(result$"Sum Sq"[2]+result$"Sum Sq"[3])# 効果サイズ計算
pairwise.t.test(y$values, y$ind, p.adj = "bonf") # 多重比較

Anova(lm(y$values ~ y$ind+sample), type=’III’)を実行すると、以下のような結果が表示されます。F値、自由度、p値などが表示されています。

Anova Table (Type III tests)

Response: y$values
             Sum Sq Df   F value Pr(>F)    
(Intercept) 27968.0  1 1347.7990 <2e-16 ***
y$ind       29956.8  2  721.8201 <2e-16 ***
sample        848.3 19    2.1516 0.0219 *  
Residuals     788.5 38                     
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

result$"Sum Sq"[2]/(result$"Sum Sq"[2]+result$"Sum Sq"[3])を実行すると、以下のような結果が表示されます。なお、SPSSで計算に用いられる偏η2ではなく、η2となります。

[1] 0.9724618

pairwise.t.test(y$values, y$ind, p.adj = “bonf")を実行すると、以下のような結果が表示されます。Bonferroni法を用いた多重比較の結果です。

Pairwise comparisons using t tests with pooled SD 

data:  y$values and y$ind 

  A      B
B <2e-16 -
C <2e-16 1

これらの結果を記載する例を、以下に示します。

実験で取得した、各条件における刺激提示の後に得られたテスト結果に対して、被験者内1要因分散分析を行った。その結果、条件要因に有意な差が得られた(F(2,38)=721.8201, p<0.001, η2=0.972)。Bonferroni法による多重比較の結果、以下の組み合わせにおいて有意な差が得られた(A>B, p<0.001, A>C, p<0.001)。すなわち、条件Aにおいて、条件BおよびCよりも有意に高いテスト結果が得られた。条件BとCの間には有意な差が得られなかった。