# Meta - analysis for paired data (individual patient data, IPD)

I've got data for three experiments, pre-post data, where I have all the individual level data (not shown). I want to produce a comparison with summary data in the form of a meta-analysis and forest plot. e.g. mean difference, with CI and the summary mean difference and CI for all three datasets combined. The experiments are by one team but in three separate regions. I thought a meta-analysis would do the trick, but using meta in R, I can only figure out how to enter the overall mean/SD and not how to show the data is paired. The unpaired data does not appear to show a statistically significant change, yet the p-value for the paired data (in region 1 and 2, and all data combined, but not region 3) does show a statistically significant change.

I can use a t-test to get the mean difference with 95% CIs and I've plotted this for all three regions individually and when the raw data is combined (all).

I assume that combining the raw data is not the right method to get a summary mean/CI.

The cochrane hand book for individual patient data, (IPD) says: https://training.cochrane.org/handbook/current/chapter-26#section-26-4 "To date, most IPD meta-analyses have used a two-stage approach to analysis (Simmonds et al 2005, Bowden et al 2011, Simmonds et al 2015), whereby each individual study is analysed independently in the first stage, reducing the IPD to summary statistics (i.e. aggregate data). In the second stage, these are combined to provide a pooled estimate of effect, in much the same way as for a conventional systematic review (Simmonds et al 2005). Thus, standard statistics and forest plots can be produced."

So which data do I need to summarise and how do I use them with meta or metafor in R. Mean -sd of pre-post entered into meta/metafor as experiment/control is not the right approach. What is?

Example data:

df1 <- data.frame(n = 32,
mean_start = 88.125,
sd_start   = 19.129,
mean_end   = 85.344,
sd_end     = 19.622,
mean_diff =  2.781,
sd_diff =    6.489,
cor =        0.944,
p_value =    0.022,
country    = "Group1")

df2 <- data.frame(n = 30,
mean_start = 90.835,
sd_start   = 29.077,
mean_end   = 85.284,
sd_end     = 27.661,
mean_diff =  4.386,
sd_diff =    9.404,
cor =        0.948,
p_value =    0.001,
country    = "Group2")

df3 <- data.frame(n = 22,
mean_start = 84.9,
sd_start   = 14.294,
mean_end   = 84.195,
sd_end     = 16.435,
mean_diff =  0.705,
sd_diff =    5.8,
cor =        0.938,
p_value =    0.17,
country = "Group3")

df <- rbind(df1, df2, df3)

meta_output <- metacont(
n.e =    n, #number in experimental group
mean.e = mean_start, # mean of experimental group
sd.e =   sd_start, # sd
n.c =    n, #number in control group
mean.c = mean_end, # mean of control group
sd.c   = sd_end, # sd
studlab = country,
data = df)$$$$

• What makes you think that combining the raw data and then fitting a suitable model is not an acceptable approach? Commented May 3, 2022 at 10:01
• Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.
– Community Bot
Commented May 3, 2022 at 10:52
• @mdewey I've clarified the question more. Commented May 3, 2022 at 13:18
• You can calculate the change score for each study then pool them. Cochrane Handbook provides instructions on how to do this. Other option is to use the post-treatment means. If you jave the raw data then calculate the change score for each subject and get the mean /SE for pooling across studies. Commented May 4, 2022 at 1:31
• Since you have all measurements, the best approach it to combine them in one dataset and analyze it with one model (regression?) with a region effect and possibly interactions. This is a much more informative analysis (and with more power) than first summarizing each experiment into a mean and std error and then combining the summaries. Commented May 4, 2022 at 6:47

So this was quite straightforward in the end. Many thanks for the comments, I've posted code here.
So instead of taking mean-start and sd-start, mean-final and sd-final and entering this into metacont (for continuous variables) as experiment and control, you take the mean-change, se-change and enter this into meta::metamean in R. That's it.

And using metamean instead of merely combining the raw data gives you the heterogenity data which is good to have.

  n =    n, #number
mean = mean, # mean of change in weight measured for each participant
sd =   sd, # sd of change in weight
studlab = Country,
data = Weight_meta
)

[![Forest plot of mean change][1]][1]

[1]: https://i.sstatic.net/16kAO.png