【发布时间】:2019-05-18 05:12:12
【问题描述】:
我有一个如下所示的数据框:
goal behavior dv1 dv2 dv3
1 1 4 2 6
1 5 3 5 1
1 7 2 4 2
5 1 5 2 7
5 5 2 1 3
5 7 2 1 2
7 1 4 5 7
7 5 2 1 4
7 7 3 2 5
如您所见,有 9 个条件(3 个目标可能性 x 3 个行为可能性)。在实际数据集中,9 个条件中的每个条件大约有 25-30 名参与者。在此示例中,我试图在因变量(dv1、dv2 和dv3)上运行双向anova,以查看goal 和behavior 之间是否存在交互。
我已尝试运行以下代码。 dv 是一个矩阵,只包含 dv1、dv2、dv3 列。 df 是上面的整个数据框。
output <- lm(as.matrix(dv) ~ goal * behavior, data = df,
contrasts = list(goal = contr.sum, behavior = contr.sum))
summary(aov(output))
当我尝试创建对象 output 时,我收到以下错误:
contrasts<-(*tmp*, value = contrasts.arg[[nn]]) 中的错误:
对比仅适用于因子
我查看了this question,但仍然无法解决我的问题。当我运行以下代码时,我被告知我的所有变量都不被视为因素。我不确定为什么“目标”和“行为”都有 3 个级别,每个级别都有变化。
factor <- sapply((df), function(x) is.factor(x))
我在这里查看的其他问题专门解决了
的错误消息对比仅适用于具有两个或更多水平的因素
这与我收到的错误消息不同。我该怎么做才能让它正常运行?
【问题讨论】:
-
您的玩具示例对我来说效果很好:
df <- df %>% transmute_all(as.factor)