在 R 中使用采样权重进行纵向分析

问题描述

我有两项调查的纵向数据,我想进行事前分析。通常,我会使用 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"),outcome3=rnorm(10),group=rep(sample(c("Man","Woman"),5,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)]

编辑

正如我在下面的评论中所说,我一直使用 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 解释为不同性别组之间随着时间的推移结果的平均变化/改善率的差异,就好像我使用混合模型将参与者作为随机效应一样。

再次感谢您!

解决方法

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

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

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