Dear Ishtiaq,
Thanks for providing the data. Some of the variables got mixed up though, so I am assuming that the 'study_label' variable is actually 'ncon' (or maybe ncon and nexp are mixed up now, but I'll leave that up to you to sort out):
dat <- structure(list(ncon = c(32L, 34L, 34L, 12L, 21L, 22L, 15L, 15L,
11L, 12L, 24L), nexp = c(16L, 17L, 17L, 12L, 22L, 21L, 15L, 15L, 12L, 11L,
24L), ncon = c("PCP-intensity", "NPS(0-10)", "NPS(0-10)", "VAS(0-10)",
"VAS(0-10)", "VAS(0-10)", "VAS(0-10)", "VAS(0-10)", "VAS(0-10)", "VAS(0-10)",
"NRS(0-10)"), Int_mean = c(-7.32, -3.91, -3.12, -3.37, -0.42, -1.09, -3.69,
-6.41, -4.04, -5.29, -0.25), Int_sd = c(4.26, 1.489, 1.42, 2.45, 2.66, 2.44,
2.41, 1.73, 2.18, 2.19, 0.72), Con_mean = c(-3.87, -1.91, -2.19, -1.54, -1.45,
-0.2, -3.15, -4.22, -4.26, -2.67, 0.08), Con_sd = c(6.12, 1.56, 1.51, 2.63,
2.45, 2.44, 2.14, 2.31, 2.52, 2.11, 1.04), BDNF = c("ng/ml", "ng/ml", "ng/ml",
"ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/mL"),
Intmean = c(0.89, -15.76, -15.27, 38.07, -1.56, -1.32, -6.94, -15.2, 3.23,
3.18, 14.58), Intsd = c(18.98, 32.42, 35.77, 21.39, 5.17, 6.22, 36.6, 32.39,
16.75, 30.43, 25.96), Conmean = c(0.94, -10.99, -3.77, 25.68, -1.23, -0.52,
-1.42, 0.49, 2.23, -7.27, -7.86), Consd = c(19.19, 27.43, 31.46, 10.69, 3.97,
5.56, 32.29, 31.27, 13.1, 37.32, 26.06)), class = "data.frame", row.names =
c("Ali et al., 2022", "Mustafaoglu et al., 2024", "Rustem et al., 2024",
"Dall?Agnol et al., 2014", "de Paula et al., 2023", "Lao et al., 2023",
"Graca-Tarrag? et al., 2019", "Fatif et al., 2019", "Medeiros et al., 2016",
"Ahmed et al., 2016", "Zhao et al., 2019"))
dat
First, I would compute the effect sizes for each outcome in the same dataset:
## For pain
dat <- escalc(measure="SMD", n1i=nexp, m1i=Int_mean, sd1i=Int_sd,
n2i=ncon, m2i=Con_mean, sd2i=Con_sd,
data=dat, var.names=c("yi.p","vi.p"))
## ForBDNF
dat <- escalc(measure="SMD", n1i=nexp, m1i=Intmean, sd1i=Intsd,
n2i=ncon, m2i=Conmean, sd2i=Consd,
data=dat, var.names=c("yi.b","vi.b"))
Then we can reshape the dataset into a long format:
dat <- reshape(dat, direction="long",
varying=list(c("yi.p","yi.b"), c("vi.p","vi.b")),
v.names=c("yi","vi"), timevar="outcome",
times=c("pain","bdnf"), idvar="study")
dat <- dat[order(dat$study),]
rownames(dat) <- NULL
dat
The two effect sizes are not independent, since they are measured in the participants. Therefore, one should compute the covariance between the SMD for pain and the MD for BDNF within studies. In essence, this covariance depends on the correlation between pain and BDNF. Since this is presumably not reported within the studies, you could 'guestimate' this correlation and construct the var-cov matrix of the effect sizes with:
V <- vcalc(vi, data=dat, cluster=study, obs=outcome, rho=<correlation>)
where <correlation> needs to be replaced with this guestimate.
Then one could fit a bivariate model to these data with:
res <- rma.mv(yi, V, mods = ~ 0 + outcome, random = ~ outcome | study, struct="UN", data=dat)
res
This part of the output gives the estimated correlation between the treatment effect for pain and the treatment effect for BDNF:
rho.bdnf rho.pain bdnf pain
bdnf 1 - 11
pain ??? 1 no -
where ??? will the correlation (rho).
I tried out some correlations in vcalc() above, but unless one uses a fairly *negative* correlation, the estimate of rho drifts to -1.
I can't really help further beyond this, but at least the code above shows that this is in essence application of the bivariate/multivariate meta-analysis approach as illustrated here:
https://www.metafor-project.org/doku.php/analyses:berkey1998
Best,
Wolfgang
-----Original Message-----
From: R-sig-meta-analysis <r-sig-meta-analysis-bounces at r-project.org> On Behalf
Of Ishtiaq Ahmed via R-sig-meta-analysis
Sent: Saturday, April 20, 2024 20:06
To: Reza Norouzian <rnorouzian at gmail.com>; R Special Interest Group for Meta-
Analysis <r-sig-meta-analysis at r-project.org>
Cc: Ishtiaq Ahmed <Ishtiaq.Ahmed at vub.be>
Subject: Re: [R-meta] Correlation between two continuous outcome
Dear Reza,
Thanks for your response. I want to see the correlation between them pain and
BDNF.
##For pain
pain <- escalc(measure = "SMD", n1i = nexp, m1i = Int_mean, sd1i = Int_sd, n2i =
ncon, m2i = Con_mean, sd2i = Con_sd, data = dat_pain)
##ForBDNF
bdnf <- escalc(measure = "MD", n1i = nexp, m1i = Intmean, sd1i = Intsd, n2i =
ncon, m2i = Conmean, sd2i = Consd, data = dat_bdnf)
Please find my dataset below.
study_label nexp ncon Int_mean Int_sd
Con_mean Con_sd BDNF Intmean Intsd Conmean Consd
Ali et al., 2022 32 16 PCP-intensity -7.32 4.260 -
3.87 6.12 ng/ml 0.89 18.98 0.94 19.19
Mustafaoglu et al., 2024 34 17 NPS(0-10) -3.91 1.489 -
1.91 1.56 ng/ml -15.76 32.42 -10.99 27.43
Rustem et al., 2024 34 17 NPS(0-10) -3.12 1.420 -
2.19 1.51 ng/ml -15.27 35.77 -3.77 31.46
Dall?Agnol et al., 2014 12 12 VAS(0-10) -3.37 2.450 -
1.54 2.63 ng/ml 38.07 21.39 25.68 10.69
de Paula et al., 2023 21 22 VAS(0-10) -0.42 2.660 -
1.45 2.45 ng/ml -1.56 5.17 -1.23 3.97
Lao et al., 2023 22 21 VAS(0-10) -1.09 2.440 -
0.20 2.44 ng/ml -1.32 6.22 -0.52 5.56
Graca-Tarrag? et al., 2019 15 15 VAS(0-10) -3.69 2.410 -
3.15 2.14 ng/ml -6.94 36.60 -1.42 32.29
Fatif et al., 2019 15 15 VAS(0-10) -6.41 1.730 -
4.22 2.31 ng/ml -15.20 32.39 0.49 31.27
Medeiros et al., 2016 11 12 VAS(0-10) -4.04 2.180 -
4.26 2.52 ng/ml 3.23 16.75 2.23 13.10
Ahmed et al., 2016 12 11 VAS(0-10) -5.29 2.190 -
2.67 2.11 ng/ml 3.18 30.43 -7.27 37.32
Zhao et al., 2019 24 24 NRS(0-10) -0.25 0.720
0.08 1.04 ng/mL 14.58 25.96 -7.86 26.06
dat <- structure(list(study_label = c(32L, 34L, 34L, 12L, 21L, 22L, 15L, 15L,
11L, 12L, 24L), nexp = c(16L, 17L, 17L, 12L, 22L, 21L, 15L, 15L, 12L, 11L,
24L), ncon = c("PCP-intensity", "NPS(0-10)", "NPS(0-10)", "VAS(0-10)",
"VAS(0-10)", "VAS(0-10)", "VAS(0-10)", "VAS(0-10)", "VAS(0-10)", "VAS(0-10)",
"NRS(0-10)"), Int_mean = c(-7.32, -3.91, -3.12, -3.37, -0.42, -1.09, -3.69,
-6.41, -4.04, -5.29, -0.25), Int_sd = c(4.26, 1.489, 1.42, 2.45, 2.66, 2.44,
2.41, 1.73, 2.18, 2.19, 0.72), Con_mean = c(-3.87, -1.91, -2.19, -1.54, -1.45,
-0.2, -3.15, -4.22, -4.26, -2.67, 0.08), Con_sd = c(6.12, 1.56, 1.51, 2.63,
2.45, 2.44, 2.14, 2.31, 2.52, 2.11, 1.04), BDNF = c("ng/ml", "ng/ml", "ng/ml",
"ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/ml", "ng/mL"),
Intmean = c(0.89, -15.76, -15.27, 38.07, -1.56, -1.32, -6.94, -15.2, 3.23,
3.18, 14.58), Intsd = c(18.98, 32.42, 35.77, 21.39, 5.17, 6.22, 36.6, 32.39,
16.75, 30.43, 25.96), Conmean = c(0.94, -10.99, -3.77, 25.68, -1.23, -0.52,
-1.42, 0.49, 2.23, -7.27, -7.86), Consd = c(19.19, 27.43, 31.46, 10.69, 3.97,
5.56, 32.29, 31.27, 13.1, 37.32, 26.06)), class = "data.frame", row.names =
c("Ali et al., 2022", "Mustafaoglu et al., 2024", "Rustem et al., 2024",
"Dall?Agnol et al., 2014", "de Paula et al., 2023", "Lao et al., 2023",
"Graca-Tarrag? et al., 2019", "Fatif et al., 2019", "Medeiros et al., 2016",
"Ahmed et al., 2016", "Zhao et al., 2019"))
Best regards,
Ishtiaq Ahmed
Ph.D. Researcher
Faculty of Physical Education and Physiotherapy
Department KIMA/KINE
Vrije Universiteit Brussels
Pleinlaan 2 - 1050 Brussel - https://www.vub.be/
Pain in Motion International Research Group ? http://www.paininmotion.be/
________________________________________
From: Reza Norouzian <rnorouzian at gmail.com>
Sent: Saturday, 20 April 2024 16:20
To: R Special Interest Group for Meta-Analysis <r-sig-meta-analysis at r-
project.org>
Cc: Ishtiaq Ahmed <Ishtiaq.Ahmed at vub.be>
Subject: Re: [R-meta] Correlation between two continuous outcome
Hi Ishtiaque,
Can you possibly share a little more specifics about the dataset you are working
with? For example, how many studies do you have? How many of them
simultaneously studied the effect of X intervention on both pain intensity and
the several pain biomarkers of interest? Indeed, how many pain biomarkers do you
have and are there any that is/are not the focus of your study?
Also, if you could share the structure of your data for a couple of studies in a
concise manner (ex. below), our list members could likely better assist you.
Reza
study SMD V intensity PDNF . . . last_pain_biomarkers
1 .6 .1 number number number
1 1 .2 number number number
1 .9 .3 number number number
2 .7 .2 number number number
2 .8 .4 number number number
On Fri, Apr 19, 2024 at 10:30?AM Ishtiaq Ahmed via R-sig-meta-analysis
<mailto:r-sig-meta-analysis at r-project.org> wrote:
Hi everyone,
I hope everyone is doing well. My understanding of correlation meta-analysis is
limited, and I'm seeking to enhance it. Currently, I'm conducting a meta-
analysis to assess the effect of X intervention on both pain intensity and
several pain biomarkers (such as BDNF, beta-endorphin, etc.) as compared with
the control. I'm particularly interested in exploring the correlation between
pain intensity and BDNF levels, both of which are continuous variables.
I used escalc() to calculate the standardized mean difference (SMD) for pain
intensity, considering the varying measurement scales between the intervention
and control groups. Additionally, I've also calculated the mean difference (MD)
for BDNF levels using the differences between the intervention and control
groups.
My question is whether it's possible to convert SMD/MD to correlation
coefficient (r) to perform the correlation meta-analysis. Alternatively, are
there other approaches to utilizing SMD and MD for this analysis? Additionally,
some of the studies (though not all) have provided beta-values for the
correlation between pain intensity and BDNF. Can I incorporate these beta-values
into the meta-analysis?
I would greatly appreciate any suggestions or sources you can provide.
Best regards,
Ishtiaq Ahmed
Ph.D. Researcher
Vrije Universiteit Brussels