我有一个三因素应急表,该表探讨了所犯罪行,入店行窃或其他盗窃行为,一方面的性别和先前的信念以及另一方面的宽大态度之间的联系。宽松的句子是此处的响应变量,它是二进制的,1表示接受宽松的句子,否则为0。
Crime Gender Priorconv Yes No
1 Shoplifting Men N 24 1
2 Other Theft Acts Men N 52 9
3 Shoplifting Women N 48 3
4 Other Theft Acts Women N 22 2
5 Shoplifting Men P 17 6
6 Other Theft Acts Men P 60 34
7 Shoplifting Women P 15 6
8 Other Theft Acts Women P 4 3
您可以使用以下命令重新创建表
table1<-expand.grid(Crime=factor(c("Shoplifting","Other Theft Acts")),Gender=factor(c("Men","Women")),
Priorconv=factor(c("N","P")))
table1<-data.frame(table1,Yes=c(24,52,48,22,17,60,15,4),No=c(1,9,3,2,6,34,6,3))
我一直在尝试进行逻辑回归,但是当我尝试将变量之间的相互作用包括在内时,我很快遇到了麻烦。该glm可以完美地运行而无需交互。我一直在使用的代码是
fit<-glm(cbind(Yes,No)~Crime+Gender+Priorconv+I(Crime*Priorconv),data=table1,family=binomial)
和我一直得到的错误
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
In addition: Warning message:
In Ops.factor(Crime, Priorconv) : * not meaningful for factors
您能告诉我如何处理此错误吗?
谢谢
最佳答案
您可以在公式中使用x:y
来指定x和y之间的相互作用,例如:
fit<-glm(cbind(Yes,No)~Crime+Gender+Priorconv+Crime:Priorconv,data=table1,family=binomial)
或短一点:
fit<-glm(cbind(Yes,No)~Gender+Crime*Priorconv,data=table1,family=binomial)
关于r - 相互作用的三因素逻辑回归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26722055/