问题描述
我有两项调查的纵向数据,我想进行事前分析。通常,我会使用 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)]
编辑
正如我在下面的评论中所说,我一直使用 lmer
和 glmer
以及用于计算权重的变量作为预测变量。碰巧 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
解释为不同性别组之间随着时间的推移结果的平均变化/改善率的差异,就好像我使用混合模型将参与者作为随机效应一样。
再次感谢您!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)