Comparison and analysis of the treatment of fibromyalgia with antidepressants
Current draft for discussion with Tamar, Gav, and Hollie. Will cut down for presentation to whole group.
In this section I replicate the substantial pain reduction findings of Moore et al. (Moore et al. 2015).
Objective: measure efficacy of analgesic efficacy and adverse events of amitriptyline on pain in fibromyalgia patients.
Possibly should incorporate these as variables into our analysis.
Only third-tier studies were found in the review
Analgesic efficacy: NNT (number needed to treat)
Harm: NNH number heeded to treat to harm
This is only important for transformation in the summary of findings, that is, after the model’s log risk ratios have been calculated. Not important for model. Importantly, to calculate NNT and NNH, we require a something somehting.
Risk ratio of 50% pain relief using a fixed-effect meta-analysis
fib_ami_dat_raw <- read.rm5("data/fibromyalgia-amitriptyline.rm5") %>%
janitor::clean_names()
# tidy it up a bit
fib_ami_dat <-
fib_ami_dat_raw %>%
rename(study = studlab, outcome = outclab) %>%
select(study, event_c, event_e, n_c, n_e, outcome)
Our objective is to replicate the results shown in this analysis.
knitr::include_graphics("external-figs/moore-third-tier.png")
third_tier_dat <-
fib_ami_dat %>%
filter(str_detect(outcome, "Third-tier efficacy"))
third_tier_dat %>%
gt(groupname_col = "outcome") %>%
hpp_tab(vertical_divider = "study") %>%
tab_header("Studies included in third-tier efficacy analysis")
third_tier_escalc <-
third_tier_dat %>%
# does adding the complement help?
mutate(comp_c = n_c - event_c, comp_e = n_e - event_e) %>%
escalc(
measure = "RR",
ai = event_e,
bi = comp_e,
n1i = n_e,
ci = event_c,
di = comp_c,
n2i = n_c,
dat = .
)
third_tier_rma <-
rma(
yi = yi,
vi = vi,
slab = study,
data = third_tier_escalc
)
third_tier_mh <-
rma.mh(
slab = study,
measure = "RR",
ai = event_e,
bi = comp_e,
n1i = n_e,
ci = event_c,
di = comp_c,
n2i = n_c,
data = third_tier_dat %>%
mutate(comp_c = n_c - event_c, comp_e = n_e - event_e),
add = 1/2
)
forest(third_tier_mh, transf = exp)
Of course, Gav and I would likely do a random-effects model for this analysis, the results of which will likely adhere better to the NMA.
forest(third_tier_rma, transf = exp)
Discuss with Hollie why Carette 1995 is omitted from the review.
tar_load(w_obs)
Discuss with Hollie scale labelling of Carette 1986; is analog scale 1-10 the same as vas?
# look for studies
neuropathic_dat %>%
filter(str_detect(study, "care|gins"), str_detect(outcome, "pain")) %>%
select(outcome, study) %>%
distinct()
three_studies_dat <-
neuropathic_dat %>%
filter(str_detect(study, "care|gins"), str_detect(outcome, "pain")) %>%
select(study, arm, covidence, scale, mean, n, sd, intervention, type)
Look into multilevel variance-covariance matrix structure
three_studies_dat %>%
filter(type != "placebo") %>%
left_join(
three_studies_dat %>%
filter(type == "placebo") %>%
select(study, covidence, mean_p = mean, n_p = n, sd_p = sd),
by = c("study", "covidence")
) %>%
escalc(
m1i = mean,
sd1i = sd,
n1i = n,
m2i = mean_p,
sd2i = sd_p,
n2i = n_p,
measure = "SMD",
data = .,
slab = study
) %>%
rma.mv(
yi,
vi,
random = ~ 1 | study/covidence,
data = .
) %>% forest()
all_dat <- neuropathic_dat %>%
filter(str_detect(outcome, "pain")) %>%
select(study, arm, covidence, scale, mean, n, sd, intervention, type)
all_dat_rma <-
all_dat %>%
filter(type != "placebo") %>%
left_join(
all_dat %>%
filter(type == "placebo") %>%
select(study, covidence, mean_p = mean, n_p = n, sd_p = sd),
by = c("study", "covidence")
) %>%
escalc(
m1i = mean,
sd1i = sd,
n1i = n,
m2i = mean_p,
sd2i = sd_p,
n2i = n_p,
measure = "SMD",
data = .,
slab = study
) %>%
rma.mv(
yi = yi,
V = vi,
random = ~ 1 |study/ covidence,
data = .
)
summary(all_dat_rma)
forest(all_dat_rma)
Now we’ll try network meta-analysis. Again, we have to solve the multi-level thing.
# outcomes
fibro_dat %>%
count(outcome) %>%
gt()
pain_sub_net <-
set_agd_arm(
data = fibro_dat %>% filter(outcome == "pain_sub"),
trt = intervention,
r = r,
n = n,
sample_size = n,
trt_ref = "placebo",
study = study
)
plot(pain_sub_net)
pain_int_net <-
set_agd_arm(
data = fibro_dat %>% filter(outcome == "pain_int"),
trt = intervention,
y = mean,
se = se,
sample_size = n,
trt_ref = "placebo",
study = study
)
pain_int_net
plot(pain_int_net)
print(pain_int_rma)
relative_effects(pain_int_rma) %>%
plot()
# gussy up the plot a bit
summary(pain_int_rma) %>%
as_tibble()