# How to interpret a meta-regression with a moderator which can vary between fixed values in Metafor

This question is slightly related to another one (Metaregression on meta-analysis of proportion with metaprop and metafor), but concerns the particular situation in which one moderator is a variable which can vary between fixed values.

For example, I want to meta-analyze the proportion of asymptomatic on the total number of patients, and I have a moderator, which represents the proportion of female patients at the study level (i.e., the proportion of female patients in each study population). I will use two different moderators (moderator is the proportion of females in a scale from 0 to 1; moderator2 is simply rescaled from 0 to 100):

moderator <- c(0.2,0.3,0.25,0.24,0.50)
moderator2 <- moderator*100
m1 <- rma.glmm(measure="PLO", xi=c(10,20,30,40,50), ni=c(100,300,400,330,240))


Obviously, the moderator can only vary between 0 (no female in the study) and 1 (all females in the study); moderator2 (which represents the percentage) accordingly between 0 and 100.

If I fit a meta-regression model like this

m3 <- rma.glmm(measure="PLO", xi=c(10,20,30,40,50), ni=c(100,300,400,330,240), mods = ~ moderator)


I do find a significant relationship between the proportion of females enrolled and the prevalence of asymptomatic disease at the study level:

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

tau^2 (estimated amount of residual heterogeneity):     0.0573
tau (square root of estimated tau^2 value):             0.2394
I^2 (residual heterogeneity / unaccounted variability): 55.0953%
H^2 (unaccounted variability / sampling variability):   2.2269

Tests for Residual Heterogeneity:
Wld(df = 3) = 11.5307, p-val = 0.0092
LRT(df = 3) = 12.0039, p-val = 0.0074

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

Model Results:

estimate      se     zval    pval    ci.lb    ci.ub
intrcpt     -3.1666  0.4314  -7.3407  <.0001  -4.0120  -2.3211  ***
moderator    3.4157  1.3019   2.6237  0.0087   0.8641   5.9673   **

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


Changing the model to include the percentage as the moderator will help in get a more easily interpretable OR:

m3 <- rma.glmm(measure="PLO", xi=c(10,20,30,40,50), ni=c(100,300,400,330,240), mods = ~ moderator2)
m3

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

tau^2 (estimated amount of residual heterogeneity):     0.0573
tau (square root of estimated tau^2 value):             0.2394
I^2 (residual heterogeneity / unaccounted variability): 55.0953%
H^2 (unaccounted variability / sampling variability):   2.2269

Tests for Residual Heterogeneity:
Wld(df = 3) = 11.5307, p-val = 0.0092
LRT(df = 3) = 12.0039, p-val = 0.0074

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

Model Results:

estimate      se     zval    pval    ci.lb    ci.ub
intrcpt      -3.1666  0.4314  -7.3407  <.0001  -4.0120  -2.3211  ***
moderator2    0.0342  0.0130   2.6237  0.0087   0.0086   0.0597   **

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


And this is the calculated OR with 95%CI:

round(exp(coef(summary(m3))[-1,c("estimate", "ci.lb", "ci.ub")]), 2)

estimate ci.lb ci.ub
moderator2     1.03  1.01  1.06


So I would assume that, for each unit increase in the percentage of females enrolled in a study, on average, the odds of an asymptomatic disease is 3% higher (95%CI between 1% and 6%).

The question is: it is formally correct to fit a meta-regression model with a moderator, like the prevalence of one characteristics, which vary between 0 and 1 (or 0 and 100, it depends on what scale you choose)? Is the abovementioned interpreation correct?

• People rescale variables for ease of interpretation all the time in regression Mar 8, 2021 at 14:45
• @mdewey thank you, but maybe I didnt expres clearly my actual question, which is: is it ok to use a moderator (such as the study-level percentage of people with a specific characteristic, like sex) which of course vary between fixed values (in this case, 0-1 or 0-100) in a meta-regression, and to draw the conclusion reported in the question? Mar 8, 2021 at 15:00

In principle, this is correct. One can quibble about the phrasing, because it might sound as if increasing the percentage of females by one percentage point within a study can be expected to lead to an increase in the odds by 3%, while the results only show that when comparing studies that differ from each other by one percentage point, the one with the higher percentage is expected to have a 3% higher odds on average. This might sound like the same thing, but I am trying to draw a distinction here between an association that might exist within a study versus the cross-sectional relationship you actually find. In other words, studies that differ in terms of the percentage of females might also differ in many other ways, so it is unknown whether the 3% higher odds is really due to the difference in the percentage of females.

As was also mentioned in the comments to your previous question, finding such an association does NOT imply that females have a higher probability (or odds) of an asymptomatic disease than males. That would be drawing an inference about individuals from an association found at the study level. Some call this the ecological fallacy, but to not anger ecologists, I have been advised to call it something different, like the aggregation fallacy or the population fallacy and I am happy to oblige.

Finally, exponentiation is a non-linear transformation. Therefore, strictly speaking, the 1.03 is not an estimate of the average odds (since $$f(E[x]) \ne E[f(x)]$$ for a non-linear transformation $$f()$$), but an estimate of the median odds (since $$f(\mbox{Median}[x]) = \mbox{Median}[f(x)]$$). This is a distinction that is almost always ignored in practice.

If you really want an estimate of the average odds, then you can use a different type of transformation. So, instead of using

predict(m3, newmods = 1, intercept = FALSE, transf=exp, digits=2)


(which is what you did), you can use

predict(m3, newmods = 1, intercept = FALSE, transf=transf.exp.int, targs=list(tau2=m3$tau2), digits=2)  which gives a value of 1.06, and hence a 6% higher odds on average. The latter is in essence just round(exp(coef(m3) + m3$tau2/2), digits=2), which gives you the mean of a log-normal distribution.

• thank you for your illuminating answer. Especially the difference you've pointed out between median and average odds. For that exponentiation, I was referring to this answer of yours (stat.ethz.ch/pipermail/r-sig-meta-analysis/2019-July/…). The difference is tricky and even trickier to report in words - does this also apply to other type of regression, such as Cox regression? To this extent, I am concerned about what is the best way to report the results of the meta-regression - if transforming coefficients in Odds, or instead report them as coefficients? Mar 8, 2021 at 15:23
• The post you link to is about the meta-analysis of odds ratios. That's a different scenario, although the same caveats apply when interpreting the results from meta-regression analyses and the exponential transformation. Whether this applies to any type of regression model depends on what is being analyzed and the design underlying the data, not the method itself. As for what to report: I suspect most readers will find the results in terms of odds more accessible. Mar 8, 2021 at 16:47