#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 ), и получил те же результаты. Я просто хотел избежать необходимости вручную инвертировать значения параметров.