如何将事后 lsmeans 分析的结果汇总到 MICE 的多个插补中

机器算法验证 多重插补 汇集 老鼠 lsmeans
2022-04-09 18:10:08

我在 R 中创建了五个估算数据集,并且正在使用该MICE运行一些事后分析。lsmeans尽管 MICE 具有轻松合并和比较模型的强大功能(例如pool()pool.compare()),但它们在这里不起作用。

这让我对如何汇集lsmeans为每个估算数据集计算的对比度感到困惑。我最终得到了一个包含五个lsmobj对象的列表,它们输出以下内容(当然,每个对象的值都略有不同):

[[1]]
contrast          estimate       SE  df t.ratio p.value
 tpol.tpole.post -12.523126 4.021919 360  -3.114  0.0037
 tpol.tpole.fu    -9.557416 4.542045 360  -2.104  0.0621

P value adjustment: mvt method for 2 tests

[[2]]
contrast          estimate       SE  df t.ratio p.value
...

在进行一些基本的数据操作以将每个插补中的相应行组合成一个数据框列表后,我最终得到:

lsm.restruc

[[1]]
         contrast  estimate       SE  df   t.ratio     p.value
1 tpol.tpole.post -12.52313 4.021919 360 -3.113719 0.003718103
2 tpol.tpole.post -12.66746 4.056950 360 -3.122411 0.003650298
3 tpol.tpole.post -12.74482 4.087365 360 -3.118101 0.003681073
4 tpol.tpole.post -13.32695 4.009558 360 -3.323796 0.001839164
5 tpol.tpole.post -12.38995 4.045162 360 -3.062906 0.004383206

[[2]]
       contrast   estimate       SE  df   t.ratio    p.value
1 tpol.tpole.fu  -9.557416 4.542045 360 -2.104210 0.06211271
2 tpol.tpole.fu  -9.526316 4.524851 360 -2.105333 0.06277749
3 tpol.tpole.fu  -8.240829 4.545330 360 -1.813032 0.11865308
4 tpol.tpole.fu -10.539075 4.508579 360 -2.337560 0.03500318
5 tpol.tpole.fu  -9.791866 4.490159 360 -2.180739 0.05187948

什么是合并列以获得组合 β 估计值、SE 和显着性检验的合适方法?

让我们处理上面的第一个数据框以使其简单。

到目前为止,我的策略是使用MICEpool.scalar() 函数来组合估计:

lsm.1 <- lsm.restruc[[1]] 
pooled.1 <- pool.scalar(lsm.1[,2], lsm.1[,3]^2, unique(lsm.1[,4]))

我对这种方法有三个问题:

1)pool.scalar需要一个方差向量作为第二个参数,所以我对 SE 估计值进行平方。这是有效的吗?

2)这里的样本量(第三个)参数应该基于什么?目前我直接从分析中输入dflsmeans,但这不是函数要求的样本大小,所以我怀疑合并的 df 将不正确。如何确定正确的样本量?例如,我的研究中有 183 名参与者,随机分为三组并在三个时间点进行评估,总共贡献了 549 个个人数据点。我是否指定了参与者的总数 (183)、单个数据点的总数 (549)、在此特定对比中比较的参与者数量 (123)、在此对比中比较的单个数据点的数量 (246)、或者别的什么......显然这里有点困惑。

另一个问题是如何汇集p值。我认为最好从合并的估计中计算一个新的p值,而不是尝试合并现有的p值。pooled.1我得到一个调整后的df,并且可以计算一个新的t -statisticQ¯/T. 因此,为了获得一个新的p值,我运行:

pooled.p <- 2 * pt(-(abs(pooled.1$qbar / sqrt(pooled.1$t))), pooled.1$df)

# Bonferroni correction to match the original correction applied by lsmeans 
pooled.p <- 2 * pooled.p

3) 上述逻辑或p值计算是否存在任何误解或错误?

任何指导或建议都将受到欢迎,尤其是围绕上述第二个问题。

0个回答
没有发现任何回复~