我正在r中进行模拟研究。基本上,我生成假数据集,然后使用aov函数对数据运行ANOVA。但我很难提取p值。之前的问题没有帮助(从aov中提取p值)——我正在运行混合方差分析。
首先我有一个方差分析:
results <- summary(aov(dv~(A*B*C*D*E)+Error(subj/(A*B*C*D)), data = mdata)) # conduct repeated measures ANOVA
生成以下输出:
Error: subj
Df Sum Sq Mean Sq F value Pr(>F)
E 1 1039157 1039157 0.95 0.334
Residuals 58 63428016 1093586
Error: subj:A
Df Sum Sq Mean Sq F value Pr(>F)
A 1 1996 1996 0.220 0.641
A:E 1 2294 2294 0.253 0.617
Residuals 58 526389 9076
...
为了节省空间,我截断了输出。我想要的是具有效果名称(A或A:E)的p值列表。我已经成功了一半,但还是很混乱。我可以使用我创建的get_p函数提取p值。
#Function
get_p = function(results,head){
results[[1]]$'Pr(>F)'
}
#Get p-values
p <- sapply(results, get_p)
我以this结尾:
$`Error: subj`
[1] 0.3337094 NA
$`Error: subj:A`
[1] 0.6408826 0.6170181 NA
...
关于如何得到一个p值列表(。6408, .6178)和效果名称('A', 'A:E')?
我找到了答案,似乎是:
get_p1 = function(results){
results[[1]]$'Pr(>F)'[[1]]
}
get_p2 = function(results){
results[[1]]$'Pr(>F)'[[2]]
}
pvals <- c(sapply(results, get_p1), sapply(results, get_p2))