6

I would be really grateful for help with the following.

I have two independent studies looking at treatment A on disease B.

Both give RRs of disease B according to treatment exposure for different age groups (<50 and >50).

Below is a hypothetical dataframe

df<-data.frame(rr=c(.50,.30,.60,.20),lb=c(.31,.18,.33,.09),
 ub=c(.82,.49,1.08,.44),study=c(1,1,2,2),
 agegroup=c("below","above","below","above"))
df$"logrr" <-log(df$rr)
df$"logub" <-log(df$ub)
df$"loglb" <-log(df$lb)
df$"se" <-(df$logub-df$loglb)/3.92

I want to perform a (meta-analysis) and a statistical test to determine whether the difference in the treatment effect between age groups is statistically significant (i.e. I would like a p-value to quote). The only data I have are the RRs and 95% CIs that I want to compare (i.e. I have no information regarding sample size).

Please would someone let me know a formula which I can input my data into.

I am using R if that helps.

kjetil b halvorsen
  • 63,378
  • 26
  • 142
  • 467
John
  • 125
  • 6
  • 1
    I don't have the time right now to turn this into a complete answer, but basically everything you are asking about is covered here: http://www.metafor-project.org/doku.php/tips:comp_two_independent_estimates – Wolfgang Mar 05 '16 at 15:56
  • Thank you @Wolfgang. Your link contains everything that I need to do the test. I just wanted to double check that it is OK to use the (Separate Meta-Analyses) method in my situation. In your example, you compare completely separate studies (i.e. with different `alloc`), whereas I compare subgroups (i.e. either older or younger than 50) from the same studies (different participants in the subgroups but taken from the same studies). I am just worried that my subgroups are not independent in the same way that your studies are (given within study effects). – John Mar 26 '16 at 09:13
  • I see. In that case, it would be better to compute the difference between the two log(RRs) (for older/younger) *within the two studies* and then pool those values to see if the pooled difference is significantly different from zero. If I understand you correctly, there are only 4 RRs here (two studies, with two subgroups each) -- so if you could add those RRs (and 95% CIs) to your question, I can show you how to do this. – Wolfgang Mar 26 '16 at 14:38
  • Thank you @Wolfgang. I have amended the question to included example data, as requested. – John Mar 26 '16 at 15:50
  • Thanks. I assume the study variable is supposed to be 1,1,2,2 (and not 1,2,1,2 as it is right now), right? – Wolfgang Mar 26 '16 at 16:23
  • Ok, makes sense now. And I just found the time to write up an answer. So, actually, I need to recall my initial suggestion to consider methods described under the link I posted and instead approach this in the way described under my answer. Thank you for raising some doubts about my initial suggestion and drawing out the crucial distinction. – Wolfgang Mar 28 '16 at 12:14

2 Answers2

2

In this case, you should directly quantify the size of the interaction (between the treatment group variable and the age group variable) within studies. You can do this by taking the difference between the two log RRs within studies. The variance of the difference is just the sum of the two squared standard errors, since the two subgroups within trials consist of different individuals (below/above 50 years of age) and are therefore independent. So:

df.diff <- with(df, data.frame(study = 1:2,
                               yi = c(logrr[1]-logrr[2], logrr[3]-logrr[4]),
                               vi = c(se[1]^2 + se[2]^2, se[3]^2 + se[4]^2)))

So we get:

  study        yi        vi
1     1 0.5108256 0.1268421
2     2 1.0986123 0.2553729

Then you can meta-analyze these values:

res <- rma(yi, vi, data=df.diff)
res

This yields:

Random-Effects Model (k = 2; tau^2 estimator: REML)

tau^2 (estimated amount of total heterogeneity): 0 (SE = 0.2703)
tau (square root of estimated tau^2 value):      0
I^2 (total heterogeneity / total variability):   0.00%
H^2 (total variability / sampling variability):  1.00

Test for Heterogeneity:
Q(df = 1) = 0.9039, p-val = 0.3417

Model Results:

estimate       se     zval     pval    ci.lb    ci.ub
  0.7059   0.2911   2.4248   0.0153   0.1353   1.2765        *

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

So, the estimated size of the interaction effect is $0.7059$, and since we computed (log RR for below 50) - (log RR for above 50), this value indicates that the log RR is on average $0.7059$ points higher in groups that are below 50 years of age. Or:

predict(res, transf=exp)

yields:

  pred  ci.lb  ci.ub  cr.lb  cr.ub
2.0256 1.1449 3.5839 1.1449 3.5839

which indicates that the RR is on average roughly twice as large in groups that are below 50 years of age.

I'll leave aside the question whether using random-effects models with $k=2$ is sensible or not, but since the estimated amount of heterogeneity is 0 anyway, we would obtain the same results if we had used a fixed-effects model (method="FE").

Wolfgang
  • 15,542
  • 1
  • 47
  • 74
1

You could consider this as an example of meta-regression. You would set up your data frame to have columns for RR, CILB, CIUB, study, agegrp. Then you would enter both study and agregrp as moderators in the model. The effect for study is unimportant it is just there to take out study differences in overall treatment effect. The coefficient for agegrp would tell you about differences between the age groups. I assume you would do this all on the log scale and if you use the default contrasts in R the coefficient for agegrp when exponentiated would give you the relative relative risk if you see what I mean.

mdewey
  • 16,541
  • 22
  • 30
  • 57
  • Thank you. I will try this if no one is able to provide an appropriate formula for performing a t-test or similar. If I use `metafor` package, for example, how do I code the agegrp for the purposes of meta-regression? All I know is if they are above or below 50. – John Mar 04 '16 at 17:45
  • Make it a factor with two levels. Any labels would do: "above", "below" for instance. Then mods = ~ study + agegrp should do the job. – mdewey Mar 04 '16 at 22:19
  • The page to which @wolfgang links in his comment above would be a better answer than mine. I read it last year but had completely forgotten about it. – mdewey Mar 06 '16 at 14:15