我正在尝试使用加权数据执行分层逻辑回归。回归似乎工作正常,但我在显示分层结果时遇到问题。以前,当我使用相同的数据集进行单变量回归时,我使用了
tbl_uvregression()
并且效果很好。然而,我无法用tbl_regression()
达到同样的效果。即使我使用 summary()
,它也只提供单个结果。
我提供了一些类似于我的数据集的虚构数据,以防有人以前遇到过这个问题。
library(tidyverse)
library(gtsummary)
library(survey)
gender <- factor(c(1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2))
age <- factor(c(3, 4, 2, 1, 3, 1, 1, 2, 3, 3, 4, 1, 3, 1, 3, 4, 2, 1, 2, 1))
prema.5cl <- factor(c(5, 4, 5, 2, 1, 1, 3, 1, 5, 1, 2, 4, 4, 3, 1, 2, 1, 4, 5, 2))
meduc.4cl <- factor(c(1, 2, 3, 3, 1, 4, 2, 1, 4, 2, 1, 3, 3, 4, 4, 2, 4, 3, 1, 2))
mhealth <- factor(c(1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0))
parttime <- factor(c(1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0))
ref1 <- factor(c(0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0))
ref2 <- factor(c(0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0))
ref3 <- factor(c(0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1))
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)
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"))
bth_2y <- factor(c(1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0))
db <- data.frame(gender, age, prema.5cl, meduc.4cl, mhealth, parttime, ref1, ref2, ref3, poids, gd, bth_2y)
reg1 <- svyglm(
bth_2y ~ gender + age + prema.5cl + meduc.4cl + mhealth + ref1 + ref2 + ref3,
family = quasibinomial,
design = svydesign(id=~1, data = db, weights = ~poids, strata = ~gd))
summary(reg1)
tbl_regression(reg1)
感谢您的帮助。
该代码产生了我所期望的结果:它需要一个具有五个预测变量的逻辑回归模型。你没有说出你在寻找什么。
猜测一下,也许您想到了“分层”的其他含义之一?在
svydesign
中,分层是总体子集,其中样本大小通过设计固定(分层样本)。 “分层”还有另一种用法,表示您希望对不同的亚群体分别进行分析。如果这就是你的意思,你想要类似的东西
design<-svydesign(id=~1, data = db, weights = ~poids, strata = ~gd)
reg1 <- svyglm(
bth_2y ~ gender + age + prema.5cl + meduc.4cl + mhealth + ref1 + ref2 + ref3,
family = quasibinomial,
design = subset(design, gd=="gp_1"))
summary(reg1)
tbl_regression(reg1)
reg2 <- svyglm(
bth_2y ~ gender + age + prema.5cl + meduc.4cl + mhealth + ref1 + ref2 + ref3,
family = quasibinomial,
design = subset(design, gd=="gp_2"))
summary(reg2)
tbl_regression(reg2)
这实际上在您的示例数据中不起作用,因为它太小了;一些协变量组合不会出现。它应该适用于您的真实数据。
如果
gd
确实不是采样层,您需要省略 strata=~gd
调用的 svydesign
部分