将ezANOVA错误解决方法应用于长格式数据

时间:2014-10-29 16:07:16

标签: r anova

我遇到了类似的问题:

https://stats.stackexchange.com/questions/58435/repeated-measures-error-in-r-ezanova-using-more-levels-than-subjects-balanced-d

以下是我的数据框的示例:

Participant  Visual             Audio              StimCondition    Accuracy

1            Bottom Circle 1st  2 Central Beeps    AO2              0.92

1            SIM Circle         Left Beep          AO2              0.86

2            Bottom Circle 1st  2 Central Beeps    CT4              0.12

2            SIM Circle         Left Beep          CT4              0.56

我有3个视觉条件,5个音频条件& 5 StimConditions& 12名参与者接触了所有条件。

当我运行以下ezANOVA时:

Model <- ezANOVA(data = Shaped.means, dv = .(Accuracy), wid = .(Participant), within = .(Visual, Audio, StimCondition), type = 3, detailed = TRUE)

我得到与上面链接问题相同的错误。我尝试将Type更改为等于1,它确实返回输出但减去球形度测试。

我已尝试将解决方案应用于我的数据集中的链接问题,但由于我的格式为长格式,因此我有点想知道我需要做些什么来实现所需的统计数据。

我会继续玩它,但如果有人能帮忙的话,我会非常感激。

感谢。

1 个答案:

答案 0 :(得分:2)

关注相关问题后,您不必进行太多改动。假设您的数据集与您描述的完全一致,则以下内容适用于您。

让我们首先创建一个数据集来反映您的描述

set.seed(123)  ## make reproducible
N  <- 12       ## number of Participants
S  <- 5        ## number of StimCondition groups
V  <- 3       ## number of Visual groups
A <- 5    ## number of Audio groups
Accuracy <- abs(round(runif(N*V*S*A), 2))   ## (N x (PxQ))-matrix with voltages

init.Df <- expand.grid(Participant=gl(N,1),
                                Visual=gl(V, 1), 
                                Audio=gl(A, 1), 
                                StimCondition=gl(S,1))

df <- cbind(init.Df, Accuracy)

现在我们有一个具有3个视觉条件的数据帧,5个音频条件&amp; 5 StimConditions&amp; 12名参与者接触所有条件。这应该是你目前所处的阶段。我们可以轻松地进行主体间的呼叫。

# If you just read in the data set and don't know how many subjects
# N <- length(unique(df$Participant))
fit <- lm(matrix(df[,c("Accuracy")], nrow=N) ~ 1)

对于因子组件,这是唯一真正的变化。如果您只是生成模型设计,则可以将其传递给anova

library(car)
# You can create your within design table
# You can get these values from your dataset as well
# V <- nlevels(df$Visual)
# A <- nlevels(df$Audio)
# S <- nlevels(df$StimCondition)
# If you want the labels with gl, you can use the levels function (e.g. labels=levels(df$Visual))
inDf <- expand.grid(Visual=gl(V, 1), 
                    Audio=gl(A, 1), 
                    StimCondition=gl(S,1)) 

# Test for Visual
anova(fit, M=~Visual, X=~1, idata=inDf, test="Spherical")

# Test for Audio
anova(fit, M=~Visual+Audio, X=~Visual, idata=inDf, test="Spherical")

# Test for Visual:Audio interaction
anova(fit, M=~Visual+Audio+Visual:Audio, X=~Visual+Audio, idata=inDf, test="Spherical")

#etc...