# Metaregression on meta-analysis of proportion with metaprop and metafor

[EDITED for more clarity]

I performed a meta-analysis of single proportion with logit transformation, which I made using the metaprop function, with a random intercept logistic regression model as the default option in the meta package.

Let's say for example that i want to meta-analyze the proportion of asymptomatic on the total number of patients, and I have a moderator:

moderator <- c(1,2,2,2.5,4)
m1 <- metaprop(c(10,20,30,40,50), c(100,300,400,330,240), comb.fixed=FALSE, prediction=TRUE)

So I have defined the meta-analysis object in m1.

To perform a meta-regression with the moderator, I use the TE of the meta-analysis, with the following code:

model1 <- rma(yi=m1$$TE, sei=m1$$seTE, method="ML", mods = ~ moderator)

Which gave me as result:

tau^2 (estimated amount of residual heterogeneity):     0.0000 (SE = 0.0224)
tau (square root of estimated tau^2 value):             0.0011
I^2 (residual heterogeneity / unaccounted variability): 0.00%
H^2 (unaccounted variability / sampling variability):   1.00
R^2 (amount of heterogeneity accounted for):            100.00%

Test for Residual Heterogeneity:
QE(df = 3) = 6.5458, p-val = 0.0879

Test of Moderators (coefficient 2):
QM(df = 1) = 26.2205, p-val < .0001

Model Results:

estimate      se      zval    pval    ci.lb    ci.ub
intrcpt     -3.2733  0.2623  -12.4772  <.0001  -3.7875  -2.7591  ***
moderator    0.4735  0.0925    5.1206  <.0001   0.2922   0.6547  ***

Two question are:

1. It is correct to conduct the meta-regression like this? it won't be better to use the transformed proportion in the meta-regression model?

For example with a code like this:

model2 <- rma(yi=transf.ilogit(m1$TE), sei=transf.ilogit(m1$seTE), method="ML", mods = ~ moderator)

which gave me totally different result:

Mixed-Effects Model (k = 5; tau^2 estimator: ML)

tau^2 (estimated amount of residual heterogeneity):     0 (SE = 0.1933)
tau (square root of estimated tau^2 value):             0
I^2 (residual heterogeneity / unaccounted variability): 0.00%
H^2 (unaccounted variability / sampling variability):   1.00
R^2 (amount of heterogeneity accounted for):            0.00%

Test for Residual Heterogeneity:
QE(df = 3) = 0.0128, p-val = 0.9996

Test of Moderators (coefficient 2):
QM(df = 1) = 0.0308, p-val = 0.8607

Model Results:

estimate      se    zval    pval    ci.lb   ci.ub
intrcpt      0.0114  0.6430  0.0177  0.9859  -1.2490  1.2717
moderator    0.0444  0.2532  0.1754  0.8607  -0.4519  0.5407

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
1. If I exponentiate the coefficient from the first meta-regression model, I get an OR; see for example:
round(exp(coef(summary(model1))[-1,c("estimate", "ci.lb", "ci.ub")]), 2)

Which gave me the OR of 1.47 [95% CI 0.02-98.71]

is it correct to say that "for each unit increase of moderator, the odds of bein asymptomatic increase by 47%"?

1. Sticking with the model 1, I may need to plot the relationship between the moderator and the prevalence of asymptomatic disease. Following the instructions reported here: https://www.metafor-project.org/doku.php/plots:meta_analytic_scatterplot, and with a little tuning (since I have to transform the logit transformed proportions in the plot) i used this code:
preds <- predict(model1, newmods=c(1:4), transf=transf.ilogit)
plot(NA, NA, xlim=c(1,4), ylim=c(0,1), xlab="Moderator", ylab="Prevalence")
lines(1:4, preds$pred, col="black") lines(1:4, preds$ci.lb, lty="dashed", col="black")
lines(1:4, preds$ci.ub, lty="dashed", col="black") size <- 1 / sqrt(m1$seTE)
size <- size/10 / max(size)
symbols(moderator, transf.ilogit(m1$TE), circles=size, inches=FALSE, add=TRUE, bg="black") Which gave me this plot: Is that ok to represent in the plot the relationship between the moderator and the transformed proportion, even if the meta-regression was conducted with the untransformed one? • The transformed se is not the se of the transformed effect. Mar 7, 2021 at 16:28 • @mdewey ok so this is one first error in the second code. So is it more correct to perform the meta-regression according to the first one string (i.e. untransformed TE and seTE)? Mar 7, 2021 at 16:30 • I believe the first code and ensuing results are appropriate... Remember though that ecological fallacy is still a risk: en.wikipedia.org/wiki/Ecological_fallacy Mar 8, 2021 at 7:56 • @Joe_74 thank you - obviously the results should be interpreted at a study level rather than at individual level. Assuming that the first code is correct, a) is a plot like the one that I added (in which I have transformed the logit-transformed proportion into the actual proportion) formally correct to represent the relationship from the meta-regression? b) Is there any reference paper that can be referenced as for the methodology to perform this kind of meta-regression? Mar 8, 2021 at 8:58 • I believe the plot and the interpretation are correct Mar 9, 2021 at 7:37 ## 1 Answer If you start out your analysis using a random intercepts logistic regression model, then I would suggest to stick to that framework also for your meta-regression analysis (your model1 does not use logistic regression, but uses the 'standard' inverse-normal model of the logit transformed proportions as outcome). The meta package actually uses rma.glmm() from the metafor package to fit logistic models, so your model m1 could be obtained directly with: m2 <- rma.glmm(measure="PLO", xi=c(10,20,30,40,50), ni=c(100,300,400,330,240)) m2 predict(m2, transf=transf.ilogit) And rma.glmm() can also be used to fit your meta-regression model with: m3 <- rma.glmm(measure="PLO", xi=c(10,20,30,40,50), ni=c(100,300,400,330,240), mods = ~ moderator) m3 The only change required in your code for the plot is size <- 1 / sqrt(m3$vi).

• Thank you @Wolfgang for your answer. Can I use your help also for the question 2 and 3? Do you agree with the interpretation reported in question 2? Do you think that the plot reported in my question is formally correct to represent the relationship (by transforming the proportion?) Mar 8, 2021 at 10:39
• Other question is - fitting the model with the moderato with the rma.glmm as in your code, I do not get any R2. Is this normal? How can I find the amount of the heterogeneity explained by the moderator? Mar 8, 2021 at 10:49
• Yes, I would say your interpretation in 2 is correct and yes, the plot for 3 is also fine. As for $R^2$, you can get it yourself with (m2$tau2 - m3$tau2) / m2$tau2. Since$\hat{\tau}^2$is reduced to 0 in m3, you get 100%. But since$k\$ is small, I would treat this with a lot of caution. Mar 8, 2021 at 11:08
• thank you, your help is really appreciated. Can I ask you why the rma.glmm() function do not incorporate in the output the R2 statistics? Mar 8, 2021 at 11:16
• No particular reason. Just did not implement this so far. Mar 8, 2021 at 11:59