【问题标题】:How to analyze data with a binary response and two categorical variables in R如何在 R 中分析具有二元响应和两个分类变量的数据
【发布时间】:2017-09-16 00:47:32
【问题描述】:

我有一组具有二元响应(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

据此,没有一个系数是显着的。但是我看到数据,显然“红色”和“蓝色”之间存在差异。

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

我预计 Factor2Red 的系数很重要,但事实并非如此。我认为这可能是因为这个系数的标准误差很高。

如果我检查优势比,我会发现这个系数的值非常高。但我不知道这是否足以说明红色或蓝色有显着影响。

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

您会推荐另一种分析方法吗?

【问题讨论】:

  • 这个问题似乎不在stackoverflow的编程范围之内。您应该尝试询问 Cross Validated。 stats.stackexchange.com

标签: r logistic-regression binary-data glm categorical-data


【解决方案1】:

因素 2 红色与蓝色很重要。我相信逻辑模型可能不稳定,因为 Factor2 = 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-07
    • 2022-01-01
    • 2021-11-30
    • 2013-08-30
    • 2017-09-09
    • 2016-11-25
    • 2023-03-08
    • 2013-05-19
    相关资源
    最近更新 更多