escalc和rma(metafor)汇总R

时间:2018-10-18 04:43:20

标签: r metafor

我有一些数据,用于估计特定疾病的住院率。使用GAM分别计算6个地点的费率。我想计算汇总的估算值,以汇总整个区域的费率。我正在使用escalc来获取值向量,并传递给rma包中的metafor以计算汇总估算值。

我有问题,在问题后概述了MWE的理由:

  1. 我应该在escalc中使用哪个measure=选项来合并可以采用负值和正值的费率?
  2. 如果我使用measure="COR",其中yi是将我的利率除以某个除数,则y是一个介于-1和1之间的向量,为什么合并利率随我使用的除数而变化?

因此,我正在处理的数据示例为:

rates <- c(32.691314, 89.236488, 59.954874, 28.832000,  9.530486, 12.590196)
pop <- c(6175139,  218932, 3888834,  425415, 4784373, 2061030)

我最初尝试使用escalc中的measure="PR"选项来总结这些内容:

library(metafor)
div.pr <- 100000  #divisor used for PR measures.  This is denominator for the reported rates
no <- rates/div.pr * pop   #to get a whole number 
no[no<0] <- 0 # replace neg with 0, since cannot handle negative rates
dat.pr1 <- escalc(measure="PR", xi=no, ni=pop, append=TRUE) # calculate state-weighted estimate
res.pr1 <- rma(yi, vi, data = dat.pr1) #random effects summary estimate of the 5 rates
pooled.dat.pr1 <- res.pr1$b+c(0,-1,1)*1.96*res.pr1$se  #estimate with 95%CI converted back to the rate scale ie.per 100,000 population
pr.est1 <- pooled.dat.pr1 * div.pr

但是,我的一些利率是负数。这是因为它们是疾病归因的比率,有时疾病可能阻止住院而不是引起住院。由于measure="PR"选项无法处理负税率,因此所有负数都必须替换为NA,因此汇总估算值有偏差,只支持仅看到增加的税率(从不减少税率)。

因此,我被建议改为使用相关性作为结果度量。例如,使用measure="COR"并将费率强制在-1和1之间。当我使用这些数据(即除以100)进行计算时,得出的估算值与PR选项具有可比性:

div.cor1 <- 100
dat.cor1 <- escalc(measure="COR", ri=rates/div.cor1, ni=pop, append=TRUE)
res.cor1 <- rma(yi, vi, data = dat.cor1)
pooled.dat.cor1 <- res.cor1$b+c(0,-1,1)*1.96*res.cor1$se
cor.est1 <- pooled.dat.cor1 * div.cor1

rbind(pr.est1,cor.est1)

给予

              [,1]     [,2]     [,3]
pr.est    38.44942 14.35175 62.54709
cor.est1  38.80594 14.34719 63.26469

我认为这看起来还可以。

正如预期的那样,当存在负值时,合并的估计会有所不同(COR> PR),因为PR会忽略负值;例如如果我改为使用以下比率向量:rates2 <- c(32.691314, 89.236488, 59.954874, 28.832000, -9.530486, 12.590196),而第5个元素现在为负,则得到:

             [,1]      [,2]     [,3]
pr.est2  36.89265 11.133870 62.65143
cor.est2 35.62909  7.702166 63.55602

因此,在我需要用大于100的值除以将速率限制在-1和1之间(例如,当速率在100s或1000s而不是10s时),这一切似乎都可以。当我这样做时,RMA估计可能会大不相同。例如将上述比率集除以100、1000或100,000所得的结果是:

              [,1]       [,2]     [,3]
div100    35.62909   7.702166 63.55602
div1000   35.60032   7.695190 63.50545
div100000 25.47503 -21.306178 72.25625

当我需要汇总高度不同的费率时,情况就大不一样了。 (是的,我意识到总结异构数据可能是不明智的,但我想说明我的观点。)

rates4 <- c(26.50879,  853.48396, -142.67102,  371.09702, -632.73573, -497.44352)
pop4 <- c(48451,  1932, 30824,  3120, 36447, 16073)

div.cor5 <- 1000
dat.cor5 <- escalc(measure="COR", ri=rates4/div.cor5, ni=pop4, append=TRUE)
res.cor5 <- rma(yi, vi, data = dat.cor5)
pooled.dat.cor5 <- res.cor5$b+c(0,-1,1)*1.96*res.cor5$se
(cor.est5 <- pooled.dat.cor5 * div.cor5)

dat.cor6 <- escalc(measure="COR", ri=rates4/div.pr, ni=pop4, append=TRUE)
res.cor6 <- rma(yi, vi, data = dat.cor6)
pooled.dat.cor6 <- res.cor6$b+c(0,-1,1)*1.96*res.cor6$se
(cor.est6 <- pooled.dat.cor6 * div.pr)

给予

                [,1]      [,2]     [,3]
cor.est5   -3.678168 -447.0409 439.6845
cor.est6 -229.202430 -759.0382 300.6333

因此,我决定使用measure="PR"选项,将负值替换为0,但是我很想知道这些数据是否有更好的选项,以及为什么“ COR”选项会更改在很大程度上取决于除数。谢谢。

0 个答案:

没有答案