如何在R中使用二元响应和两个分类变量分析数据



i具有一组具有二进制响应(0和1)的数据,两个分类变量(一个具有两个级别,另一个具有四个级别)。

library(data.table)
data<-data.table(Factor1=rep(c("A","B","C","D"),each=36),
                 Factor2=rep(c(rep("Red",18),rep("Blue",18)),4),
                 Response=rep(c(rep(1,11),rep(0,7),rep(0,18)),4))

我试图用glm()对此进行分析,但我不确定是最好的方法。

model<-glm(Response~Factor1+Factor2,family = binomial(),data=data)
summary(model)
Call:
glm(formula = Response ~ Factor1 + Factor2, family = binomial(), 
data = data)
Deviance Residuals: 
 Min        1Q    Median        3Q       Max  
-1.37438  -0.00008  -0.00008   0.99245   0.99245  
Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.957e+01  1.267e+03  -0.015    0.988
Factor1B     8.942e-15  6.838e-01   0.000    1.000
Factor1C     7.681e-15  6.838e-01   0.000    1.000
Factor1D     7.345e-15  6.838e-01   0.000    1.000
Factor2Red   2.002e+01  1.267e+03   0.016    0.987
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 177.264  on 143  degrees of freedom
Residual deviance:  96.228  on 139  degrees of freedom
AIC: 106.23
Number of Fisher Scoring iterations: 18

据此,系数都不重要。但是我看到了数据,显然"红色"one_answers"蓝色"之间存在差异。

data[,sum(Response),by=c("Factor1","Factor2")]
   Factor1 Factor2 V1
1:       A     Red 11
2:       A    Blue  0
3:       B     Red 11
4:       B    Blue  0
5:       C     Red 11
6:       C    Blue  0
7:       D     Red 11
8:       D    Blue  0

我期望系数因子2很重要,但事实并非如此。我认为这也许是因为此系数的埃文塔德错误很高。

如果我检查几率比率,我会发现该系数的值很高。但是我不知道这是否足以说是红色或蓝色的显着影响。

exp(cbind(coef(model)))
                    [,1]
(Intercept) 3.181005e-09
Factor1B    1.000000e+00
Factor1C    1.000000e+00
Factor1D    1.000000e+00
Factor2Red  4.940037e+08

您是否建议另一种分析此方法?

因子2红色与蓝色很重要。我相信逻辑模型可能是不稳定的,因为facter2 = blue的响应的平均值和标准偏差为0。您可以运行Fisher的精确测试 - 请参阅https://stat.ethz.ch/r-manual/r的文档。-devel/library/stats/html/fisher.test.html

尝试以下操作:

fisher.test(data$Factor2, data$Response, conf.level = 0.95)$conf.int

这是一个有益的情节:

library(ggplot2)
data$Factor1Factor2 <- interaction(data$Factor1, data$Factor2)
ggplot(data, aes(x = Factor1Factor2, y = Response, fill = Factor1)) + 
geom_boxplot()

相关内容

  • 没有找到相关文章

最新更新