[R-meta] Correlation between two continuous outcome

Viechtbauer, Wolfgang (NP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Mon Apr 29 13:54:00 CEST 2024


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 using r-project.org> On Behalf
> Of Ishtiaq Ahmed via R-sig-meta-analysis
> Sent: Saturday, April 20, 2024 20:06
> To: Reza Norouzian <rnorouzian using gmail.com>; R Special Interest Group for Meta-
> Analysis <r-sig-meta-analysis using r-project.org>
> Cc: Ishtiaq Ahmed <Ishtiaq.Ahmed using 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 using gmail.com>
> Sent: Saturday, 20 April 2024 16:20
> To: R Special Interest Group for Meta-Analysis <r-sig-meta-analysis using r-
> project.org>
> Cc: Ishtiaq Ahmed <Ishtiaq.Ahmed using 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 using 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


More information about the R-sig-meta-analysis mailing list