У меня есть данные, которые являются оценочными показателями госпитализации по конкретному заболеванию.Тарифы рассчитываются с использованием GAM, отдельно для 6 сайтов.Я хотел бы рассчитать объединенную оценку, суммирующую показатель для всего региона.Я использую escalc
, чтобы получить вектор значений для передачи в rma
в пакете metafor
для вычисления сводной оценки.
У меня есть вопросы, обоснование которых и MWE изложены после вопросов:
- Какой вариант
measure=
следует использовать в escalc для объединения ставок, которые могут принимать отрицательные иположительные значения? - Если я использую
measure="COR"
, где yi - векторная граница между -1 и 1 путем деления моих скоростей на некоторый делитель, почему мои объединенные скорости варьируются в зависимости от того, какой делитель я использую?
Пример данных, которые я обрабатываю, таков:
rates <- c(32.691314, 89.236488, 59.954874, 28.832000, 9.530486, 12.590196)
pop <- c(6175139, 218932, 3888834, 425415, 4784373, 2061030)
Сначала я попытался обобщить их, используя опцию measure="PR"
в escalc:
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 (например, когда скорости были в 100 или 1000 вместо 10).Когда я делаю это, RMA оценки могут быть совершенно разными;например, при делении вышеуказанного набора ставок на 100, 1000 или 100000 получаются следующие результаты:
[,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" изменяется так сильно в зависимости от делителя.Благодаря.