2016-10-13 6 views
0

Я использую пакет «metafor» в R для выполнения коэффициентов ответа журнала. Некоторые из моих средств равны нулю, что, по-видимому, является причиной предупреждения после моей команды escalclog(0) есть -inf). Пакет metafor предоставляет метод добавления небольшого значения к нулю, чтобы избежать этого. В документации указано:Соотношение ответов журнала с «Метафором» с нулями

«Элементы ячейки с нулем могут быть проблематичными, особенно для относительного риска и отношения шансов. Добавление небольшой константы к ячейкам таблиц 2 × 2 является общим решением этой проблемы [.. .] Когда to = "only0", значение добавления добавляется в каждую ячейку таблиц 2 × 2 только в тех таблицах, где по крайней мере одна ячейка равна 0. "

По какой-то причине это не устраняет мою ошибку, возможно потому, что мои данные не являются таблицей 2x2? (Он выводится из суммирования с ddply из пакета ply, аналогично форматированию в this example). Должен ли я заменить нулевые значения на небольшое число вручную или есть более элегантный способ? (Обратите внимание, что в этом примере строки с нулем также имеют размер выборки 1 и, следовательно, не имеют дисперсии и в любом случае будут исключены из анализа. Я просто хочу знать, как это работает в будущем).

Возпроизводимо пример:

dat<-dput(Bin_Y_count_summary_wide) 
structure(list(Species.ID = c("CAFERANA", "TR11", "TR118", "TR500", 
"TR504", "TR9", "TR9_US1"), Y_num_mean.early = c(2, 147.375, 
4.5, 0.5, 12.5, 93.4523809523809, 5), N.early = c(1L, 4L, 2L, 
4L, 4L, 7L, 2L), sd.early = c(NA, 174.699444284558, 6.36396103067893, 
1, 22.4127939653523, 137.506118190001, 7.07106781186548), se.early = c(NA, 
87.3497221422789, 4.5, 0.5, 11.2063969826762, 51.9724274972283, 
5), Y_num_mean.late = c(0, 3.625, 2.98482142857143, 0.8, 3, 47.2, 
0), N.late = c(1L, 4L, 7L, 10L, 10L, 8L, 1L), sd.late = c(NA, 
7.25, 5.10407804830748, 1.75119007154183, 8.03118920210451, 40.7351024477486, 
NA), se.late = c(NA, 3.625, 1.9291601697265, 0.553774924194538, 
2.53968501984006, 14.4020335865659, NA), Y_num_mean.wet = c(NA, 
71.5, 0, 12, 27, 0, NA), N.wet = c(NA, 2L, 1L, 2L, 2L, 2L, NA 
), sd.wet = c(NA, 17.6776695296637, NA, 9.89949493661167, 38.1837661840736, 
0, NA), se.wet = c(NA, 12.5, NA, 7, 27, 0, NA)), row.names = c(NA, 
7L), .Names = c("Species.ID", "Y_num_mean.early", "N.early", 
"sd.early", "se.early", "Y_num_mean.late", "N.late", "sd.late", 
"se.late", "Y_num_mean.wet", "N.wet", "sd.wet", "se.wet"), class = "data.frame", reshapeWide = structure(list(
    v.names = c("Y_num_mean", "N", "sd", "se"), timevar = "early_or_late", 
    idvar = "Species.ID", times = c("early", "late", "wet"), 
    varying = structure(c("Y_num_mean.early", "N.early", "sd.early", 
    "se.early", "Y_num_mean.late", "N.late", "sd.late", "se.late", 
    "Y_num_mean.wet", "N.wet", "sd.wet", "se.wet"), .Dim = c(4L, 
    3L))), .Names = c("v.names", "timevar", "idvar", "times", 
"varying"))) 

# Warning produced from this command 
test <- escalc(measure="ROM", m1i=Y_num_mean.early, sd1i=sd.early, n1i=N.early, m2i=Y_num_mean.late, sd2i=sd.late, n2i=N.late, data=dat, add=1/2, to="only0") 

ответ

1

В этом пункте вы цитируете относится к мерам, которые можно рассчитать на основе 2х2 таблиц (т.е. RR, OR, RD, AS и PETO). Аргументы add и to не влияют на такие меры, как SMD и ROM.

Единственный способ, которым вы можете получить среднее значение 0 для переменной шкалы отношения (которое предполагает использование коэффициентов ответа), - это если каждое значение равно 0. Следовательно, по определению дисперсия также должна быть равна 0. Это относится к тому, является ли размер выборки равным 1 (в этом случае дисперсия, конечно, также равна 0), или у вас больший размер выборки.

В общем случае, когда хотя бы одно из двух средств равно 0, невозможно рассчитать коэффициент ответа журнала. Конечно, можно начинать добавлять какую-то константу в средства вручную (и то же самое для SD), но это кажется довольно произвольным. Корректировки, которые мы можем сделать для подсчета в таблицах 2x2, мотивированы на основе статистической теории (эти корректировки на самом деле являются смещениями смещения, что также приводит к тому, что расчет некоторых мер возможен при наличии 0).

+0

Хорошая точка, которая означала бы (почти) никогда не быть нулевым, поэтому мой вопрос редко возникал. – user2860703

 Смежные вопросы

  • Нет связанных вопросов^_^