在R中执行加权和分层logistic回归

nuypyhwy  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(120)

我想用加权数据做一个分层逻辑回归。回归似乎工作正常,但我在显示分层结果时遇到了问题。以前,当我对同一数据集进行单变量回归时,我使用了tbl_uvregression(),效果很好。但是,我无法用tbl_regression()实现同样的功能。即使我使用summary(),它也只提供一个结果。
我提供了一些类似于我的数据集的虚构数据,以防任何人以前遇到过这个问题。

  1. library(tidyverse)
  2. library(gtsummary)
  3. library(survey)
  4. gender <- factor(c(1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2))
  5. age <- factor(c(3, 4, 2, 1, 3, 1, 1, 2, 3, 3, 4, 1, 3, 1, 3, 4, 2, 1, 2, 1))
  6. prema.5cl <- factor(c(5, 4, 5, 2, 1, 1, 3, 1, 5, 1, 2, 4, 4, 3, 1, 2, 1, 4, 5, 2))
  7. meduc.4cl <- factor(c(1, 2, 3, 3, 1, 4, 2, 1, 4, 2, 1, 3, 3, 4, 4, 2, 4, 3, 1, 2))
  8. mhealth <- factor(c(1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0))
  9. parttime <- factor(c(1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0))
  10. ref1 <- factor(c(0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0))
  11. ref2 <- factor(c(0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0))
  12. ref3 <- factor(c(0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1))
  13. poids <- c(0.52, 1.43, 0.74, 1.60, 1.71, 0.08, 0.96, 1.62, 1.00, 0.83, 1.74, 0.82, 1.23, 1.04, 0.19, 1.63, 0.45, 0.08, 0.60, 1.73)
  14. gd <- factor(c("gp_2", "gp_1", "gp_2", "gp_1", "gp_2", "gp_1", "gp_1", "gp_1", "gp_2", "gp_2", "gp_1", "gp_1", "gp_2", "gp_1", "gp_1", "gp_2", "gp_2", "gp_1", "gp_2", "gp_2"))
  15. bth_2y <- factor(c(1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0))
  16. db <- data.frame(gender, age, prema.5cl, meduc.4cl, mhealth, parttime, ref1, ref2, ref3, poids, gd, bth_2y)
  17. reg1 <- svyglm(
  18. bth_2y ~ gender + age + prema.5cl + meduc.4cl + mhealth + ref1 + ref2 + ref3,
  19. family = quasibinomial,
  20. design = svydesign(id=~1, data = db, weights = ~poids, strata = ~gd))
  21. summary(reg1)
  22. tbl_regression(reg1)

谢谢你的帮助。

9w11ddsr

9w11ddsr1#

这段代码产生了我所期望的结果:它要求具有五个预测因子的单个逻辑回归模型。你没说你在找什么。
猜猜看,也许你脑子里有“分层”的另一种含义?在svydesign中,分层是样本量通过设计固定的人群子集(分层 * 样本 *)。“分层”还有另一种用法,意思是你想对不同的亚群分别进行分析。如果你是这个意思的话,你想要的是

  1. design<-svydesign(id=~1, data = db, weights = ~poids, strata = ~gd)
  2. reg1 <- svyglm(
  3. bth_2y ~ gender + age + prema.5cl + meduc.4cl + mhealth + ref1 + ref2 + ref3,
  4. family = quasibinomial,
  5. design = subset(design, gd=="gp_1"))
  6. summary(reg1)
  7. tbl_regression(reg1)
  8. reg2 <- svyglm(
  9. bth_2y ~ gender + age + prema.5cl + meduc.4cl + mhealth + ref1 + ref2 + ref3,
  10. family = quasibinomial,
  11. design = subset(design, gd=="gp_2"))
  12. summary(reg2)
  13. tbl_regression(reg2)

这在示例数据中实际上不起作用,因为它太小了;一些协变量组合没有出现。它应该在你的真实的数据中工作。
如果gd确实不是采样层,则需要省略svydesign调用的strata=~gd部分

展开查看全部

相关问题