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

问题描述 投票:0回答:1

我正在尝试使用加权数据执行分层逻辑回归。回归似乎工作正常,但我在显示分层结果时遇到问题。以前,当我使用相同的数据集进行单变量回归时,我使用了

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)

感谢您的帮助。

r regression survey gtsummary weighted
1个回答
0
投票

该代码产生了我所期望的结果:它需要一个具有五个预测变量的逻辑回归模型。你没有说出你在寻找什么。

猜测一下,也许您想到了“分层”的其他含义之一?在

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
部分

© www.soinside.com 2019 - 2024. All rights reserved.