【问题标题】:Longitudinal analysis using sampling weigths in R使用 R 中的抽样权重进行纵向分析
【发布时间】:2021-09-20 18:38:56
【问题描述】:

我有来自两次调查的纵向数据,我想做一个事前分析。通常,我会使用survey::svyglm()svyVGAM::svy_vglm(对于多项式族)来包含抽样权重,但这些函数不考虑随机效应。另一方面,lme4::lmer 考虑了重复测量,但不考虑抽样权重。

对于持续的结果,我知道我可以做到

w_data_wide <- svydesign(ids = ~1, data = data_wide, weights = data_wide$weight)

svyglm((post-pre) ~ group, w_data_wide)

如果我可以将lmer(outcome ~ group*time + (1|id), data_long) 与权重一起使用,我会得到相同的估计值[如果我错了,请纠正我]。

但是,对于分类变量,我不知道如何进行分析。 WeMix::mix() 有一个参数 weights,但我不确定它是否将它们视为采样权重。不过,这个函数不支持多项式族。

所以,继续说一下:您能告诉我如何对 2 个或更多级别的分类结果进行事前测试分析吗?任何关于 R 中的包/函数以及如何使用/编写它们的提示都将不胜感激。

我在下面给出了一些具有二项式和多项式结果的数据集:

library(data.table)
set.seed(1)

data_long <- data.table(
  id=rep(1:5,2),
  time=c(rep("Pre",5),rep("Post",5)),
  outcome1=sample(c("Yes","No"),10,replace=T),
  outcome2=sample(c("Low","Medium","High"),10,replace=T),
  outcome3=rnorm(10),
  group=rep(sample(c("Man","Woman"),5,replace=T),2),
  weight=rep(c(1,0.5,1.5,0.75,1.25),2)
)

data_wide <- dcast(data_long, id~time, value.var = c('outcome1','outcome2','outcome3','group','weight'))[, `:=` (weight_Post = NULL, group_Post = NULL)]

编辑

正如我在下面的 cmets 中所说,我一直在使用 lmerglmer 以及用于计算权重的变量作为预测变量。碰巧glmer 返回了很多问题(收敛、高特征值...),所以我再看一下@ThomasLumley 在这篇文章和其他文章中的回答(https://stat.ethz.ch/pipermail/r-help/2012-June/315529.html | https://stats.stackexchange.com/questions/89204/fitting-multilevel-models-to-complex-survey-data-in-r)。

所以,我现在的问题是是否可以使用参与者 ID 作为 svydesign 中的集群

library(survey)
w_data_long_cluster <- svydesign(ids = ~id, data = data_long, weights = data_long$weight)
summary(svyglm(factor(outcome1) ~ group*time, w_data_long_cluster, family="quasibinomial"))

                     Estimate Std. Error t value Pr(>|t|)  
(Intercept)         1.875e+01  1.000e+00  18.746   0.0339 *
groupWoman         -1.903e+01  1.536e+00 -12.394   0.0513 .
timePre             5.443e-09  5.443e-09   1.000   0.5000  
groupWoman:timePre  2.877e-01  1.143e+00   0.252   0.8431  

并且仍然将groupWoman:timePre 解释为不同性别组之间结果随时间的平均变化/改善率的差异,就好像我使用带有参与者的混合模型作为随机效应一样。

再次感谢您!

【问题讨论】:

标签: r survey mixed-models weighted longitudinal


【解决方案1】:

带有svyglm 的线性模型不会给出与lme4::lmer 相同的参数估计值。如果模型指定正确,它确实估计与lme4::lmer 相同的参数。

如您所述,具有svyglmsvy_vglm 的广义线性模型不会估计与lme4::glmer 相同的参数。但是,它们确实估计了非常好的回归参数,如果您对方差分量或估计实现的随机效应 (BLUP) 不特别感兴趣,我建议您只使用svy_glm

如果您有用于模型的随机效应版本的非调查软件,另一种选择是使用该软件。如果您将权重缩放为样本大小的总和,并且如果设计中的所有聚类都由模型中的随机效应建模,那么您将至少获得有效推理的合理近似值。例如,这就是我看到推荐用于贝叶斯调查建模的方法。

【讨论】:

  • 感谢您的回答。由于这是我第一次使用混合模型,我不确定您所说的“如果您对方差分量或估计已实现的随机效应 (BLUP) 不特别感兴趣”是什么意思。到目前为止,我所做的是使用lme4::lmerlme4::glmer 来估计组之间随时间的差异,将我计算权重的变量作为时不变协变量(这些权重不总计样本量,因为它们被截断)。你认为这个程序合适吗?
  • 是的,这很合适。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多