心理学学生来了。作为我论文的一部分,我从一个实验中获得了一些数据,该实验有两个主体间 IVclassification
和condition
,以及一个主体内 IV,trial_type
。数据形式如下:
test = data.frame(
ID=rep(c(1,2,3,4,5,6), each=3),
condition=rep(c('comp', 'seq', 'comp_text'), each=3, times=2),
classification=rep(c('rule', 'exemplar'), each=3, length.out=18),
trial_type=rep(c('ambig', 'unambig', 'trained'), length.out=18),
value = c(0.25, 0.75, 1.00, 1.00, 1.00, 1.00, 0.00, 1.00, 0.75, 1.00, 1.00, 1.00, 0.25, 0.75, 0.75, 0.25, 0.75, 0.50))
我已经使用 nlme 将这些分析为方差分析,并生成 3 型 SS,因为这是我的课程所需要的
model <- lme(value~condition*classification*trial_type,
random=~1|ID,
correlation = corCompSymm(form = ~1|ID)
)
anova(model, type='marginal')
我想调查我的数据中存在的交互。具体来说,我想看看在“seq”条件下“训练”试验的值是否高于其他两个。过去,我使用“对比度”包中的 contrast() 来生成对比度矩阵,然后将其从 multcomp 包中发送到 glht()。在这种情况下,我尝试过:
cntr1 <- contrast(model,
a=list(condition=c('seq'), classification=c('rule','exemplar'), trial_type=c('trained')),
b=list(condition=c('comp','comp_text'), classification=c('rule', 'exemplar'), trial_type=c('trained'))
)
然而,这返回
Error in testStatistic(fit, X, modelCoef, covMat, conf.int = conf.int) :
Non-positive definite approximate variance-covariance
这似乎与方差 - 协方差矩阵有关,但我不确定问题是什么。
我的问题是,有没有办法解决这个问题?如果没有,有没有办法在另一个包中运行类似的对比,例如“汽车”?通过转换数据,我可以使用 car 包中的 Anova 生成相同的综合 F 测试,以便每个试验类型都有自己的列,但我不确定如何使用Anova()
.