Метаанализ байесовской сети (gemtc) — определение порядка сравнений

#r #bayesian

#r #байесовский

Вопрос:

Я работаю над байесовским сетевым метаанализом с использованием пакета gemtc для набора данных, аналогичного следующему:

 df <- data.frame(study = c("A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F", 
                           "G", "G", "H", "H", "I", "I", "J", "J", "K", "K"),
                                 treatment = c("A", "B", "B", "C", "B", "C", "A", "B", "B", 
                                                "C", "B", "C", "A", "B", "B", "C", "B", "C", 
                                                "A", "C", "B", "C"),
                                 responders = c(1, 5, 0, 0, 3, 1, 0, 2, 0, 2, 0, 2, 0,
                                                0, 1, 2, 0, 0, 2, 9, 1, 1),
                                 sampleSize = c(32, 33, 30, 30, 18, 20, 15, 15, 20,
                                                20, 30, 30, 36, 32, 15, 15, 23, 22, 24, 23, 18, 16))
 

Хотя я смог настроить сетевую модель и выполнить анализ просто отлично, я испытывал трудности с указанием порядка, в котором я хотел бы, чтобы процедуры сравнивались в анализе согласованности с разделением узлов. Например, я хочу, чтобы коэффициенты шансов и 95% достоверные интервалы вычислялись с использованием обработки «B» в качестве контрольной группы при сравнении «B» с «A» и «C» в качестве контрольной группы при сравнении «A» с «C» и «B» с «C». Ниже приведен код, который я пробовал:

 library(gemtc)
library(rjags)

# Create mtc.network element to be used in modeling ------
network <- mtc.network(data.ab = df)

# Compile model ------
network.mod <- mtc.model(network, 
               linearModel = "random", # random effects model
               n.chain = 4) # 4 Markov chains

# Assess network consistency using nodesplit method ------
nodesplit <- mtc.nodesplit(network.mod, 
                linearModel = "random", # random effects model
                n.adapt = 5000, # burn-in iterations
                n.iter = 100000, # actual simulation iterations
                thin = 10) # extract values of every 10th iteration
summary(nodesplit) # High p-values indicate consistent results

plot(summary(nodesplit))
 

Мои результаты предоставляют ORs (95% CrIs) для:

  • «A» против «C»
  • «B» против «C»
  • «B» против «A»

Я создал отдельный фрейм данных, указав, что я хочу сравнения «A» и «B» через:

 # Specify desired comparisons ------
comparisons = data.frame(t1 = "A", t2 = "B")

# Assess network consistency using nodesplit method, adding comparisons argument ------
nodesplit <- mtc.nodesplit(network.mod, 
                comparisons = comparisons,
                linearModel = "random", # random effects model
                n.adapt = 5000, # burn-in iterations
                n.iter = 100000, # actual simulation iterations
                thin = 10) # extract values of every 10th iteration
summary(nodesplit) # High p-values indicate consistent results
 

Но я все равно получаю результаты «B» и «A». Я также попытался указать t1 =»B», t2 =»A», и я получаю те же результаты. Любая помощь в этом была бы весьма признательна. Заранее благодарю.

Комментарии:

1. К сожалению, я не могу воспроизвести эту network.mod <- ... строку: Error in order(comparisons[["t1"]], comparisons[["t2"]]) : argument 1 is not a vector однако я считаю, что это может иметь какое-то отношение к уровням факторов. Вы пробовали вручную установить переменную обработки в качестве фактора и использовать разные уровни факторов?

2. Эк, извини за это. Чтобы ответить на ваш вопрос, да, я преобразовал переменную в коэффициент и присвоил уровни безрезультатно. Я даже загрузил свои данные в онлайн — инструмент gemtc ( gemtc.drugis.org ), и получил те же результаты. Я просто хотел избежать необходимости вручную инвертировать значения параметров.