我有一个三因素应急表,该表探讨了所犯罪行,入店行窃或其他盗窃行为,一方面的性别和先前的信念以及另一方面的宽大态度之间的联系。宽松的句子是此处的响应变量,它是二进制的,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/

10-12 21:13