R语言 加权后的频率和比例平衡表

0aydgbwb  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(87)

在许多科学论文中,加权前后的协变量平衡见表1。
例如,连续变量使用平均值和标准差表示,二元变量使用频率和比例表示。
例如,参见paper,表1。
我不知道如何方便地显示加权后的频率和比例,因为bal.tab(..., disp = c("means", "sds")仅限于"means""sds"
示例数据:

library(cobalt)
library(dplyr)

set.seed(123)
lalonde <- cbind(lalonde,
                 event = sample(c(0,1), size=614, replace=TRUE, prob=c(0.84,0.16)),
                 time = runif(614, min=10, max=365))

formula <- treat ~ age + educ + race + married + nodegree + re74 + re75 + re78

# PS
lalonde$pscore <- glm(formula, data = lalonde,
                      family = binomial(link = "logit"))$fitted.values

# Calculate weights
lalonde$weight <- ifelse(lalonde$treat == 1,
                         pmin(lalonde$pscore, 1 - lalonde$pscore) / lalonde$pscore,
                         pmin(lalonde$pscore, 1 - lalonde$pscore) / (1 - lalonde$pscore))

我使用bal.tab来显示连续变量的均值和SDS。IMO,对于二进制变量,加权均值(例如M.0.Adj)是加权率。

bal.tab(formula, data = lalonde, thresholds = c(m = .1), un = TRUE, disp = c("means", "sds"), weights = lalonde$weight)

这导致例如:

Type         M.0.Adj  SD.0.Adj   M.1.Adj  SD.1.Adj Diff.Adj
married      Binary       0.2475         .    0.2581         .   0.0105

是否有一个解决方案来推导二进制变量的频率和比例?

ego6inou

ego6inou1#

也许是简单而有效的。

> par(mar=c(5, 5, 4, 2))
> plot(tb$Diff.Adj, seq_len(nrow(tb)), xlim=c(-.1, .1), ylim=c(.5, nrow(tb) + .5), 
+      yaxt='n', ylab='', xlab='adj. dif', pch=19, main='Balance')
> axis(2, seq_len(nrow(tb)), labels=rownames(tb), las=1)
> abline(v=0)

  • 数据:*
tb <- data.frame(
  Type = c("Binary", "Binary"),
  M.0.Adj = c(0.2475, 0.2675),
  SD.0.Adj = c(".", "."),
  M.1.Adj = c(0.2581, 0.2581),
  SD.1.Adj = c(".", "."),
  Diff.Adj = c(0.0105, -0.0094),
  row.names = c("married", "single")
)
kgqe7b3p

kgqe7b3p2#

  • 更新日期:2023年11月13日
    也许只是这样?
library(survey)
library(gtsummary)
library(dplyr)

survey::svydesign(~1, data = as.data.frame(lalonde), weights = ~weight) %>%
tbl_svysummary(by = treat, percent = "col", include = c(married)) %>% 
print()

# Result
Characteristic  0, N = 109  1, N = 110
married            27 (25%) 28 (26%)

字符串
还是很困惑。
作者如何获得表1中加权样本的频率和比例?

相关问题