我有一个 R 数据框,强烈简化为:
id <- rep(1:2, c(6,8))
correct <- sample(0:1,14,TRUE)
phase <- c(rep("discr",3),rep("rev",3), rep("discr",4),rep("rev",4))
dat <- data.frame(id,correct,phase)
与id
作为我的主题(实际上我有很多超过 2),correct
= 编码为不正确(0)或正确(1)的响应,以及phases
歧视和逆转(主题内因素)。
我想以以下形式执行逻辑回归
glm(correct~phase, dat, family="binomial")
稍后可能会添加其他预测变量。但是,由于我对每个主题都有不同数量的数据,我想glm()
对每个主题分别执行,然后将系数与 ANOVA 进行组效应比较。我想以 for 循环的形式执行此操作
for(i in seq_along(dat$id)){
my_glm[i] <- glm(correct~list,dat[dat$id==i,],family="binomial")
}
但不断收到错误消息
>Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels.
我检查了我的数据,没有一个因子只包含一个级别。所有受试者都给出了至少一个错误和一个正确的答案,并且都参与了辨别和逆转。当我指定特定主题时,该函数在循环之外工作。