私は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.
データを確認しましたが、1つのレベルのみを含む要素はありません。すべての被験者は少なくとも1つの間違った応答と1つの正しい応答を出し、すべてが差別と逆転に参加しました。特定のサブジェクトを指定すると、関数はループの外側で機能します。