[R-meta] shrinkage in location-scale RE model

Viechtbauer, Wolfgang (NP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Mon Jun 3 09:18:38 CEST 2024


Dear Yefeng,

The formula still holds, but the location-scale model you are fitting just has a single intercept, so it is identical to the standard random-effects model. If you want to fit a model with a different tau^2 for each study, then you would have to use:

res <- rma(yi, vi, data=dat, scale = ~ 0 + factor(id))

However, it is going to be difficult to get this model to converge. While in principle it is possible to fit such a model, there is little information available to estimate the tau^2_i values. Also, the number of parameters is growing linearly with the number of studies, which raises concerns about the consistency of the estimates (the so-called Neyman-Scott problem).

Best,
Wolfgang

> -----Original Message-----
> From: R-sig-meta-analysis <r-sig-meta-analysis-bounces using r-project.org> On Behalf
> Of Yefeng Yang via R-sig-meta-analysis
> Sent: Monday, June 3, 2024 04:07
> To: r-sig-meta-analysis using r-project.org
> Cc: Yefeng Yang <yefeng.yang1 using unsw.edu.au>
> Subject: [R-meta] shrinkage in location-scale RE model
>
> Dear community,
>
> I am investigating the study-specific effect in the context of a location-scale
> random-effects model. I'll explain my question briefly.
>
> We start from a normal random-effects model. To get the study-specific effect
> (theta, hereafter) in a normal random-effects model, we first need to get the
> shrinkage factor (lambda) for each study:
> lambda_i = tau^2 / (tau^2 + v_i^2), where tau^2 is the estimated heterogeneity
> in a RE model, and v_i is the sampling variance of the effect size estimates
> y_i
>
> then, theta is actually a weighted mean:
> theta_i = lambda_i  * y_i +  (1 - lambda_i) * mu, where mu is the intercept from
> the RE model.
>
> I manually checked the above formula is correct, using rma() in metafor package:
> dat <- dat.bangertdrowns2004
> # fit a RE
> res <- rma(yi, vi, data=dat)
> # get shrinkage
> dat$lamda <- res$tau2 / (res$tau2 + res$vi)
> # get study-specific effect
> dat$theta <- dat$lamda * res$yi + (1 - dat$lamda) * res$beta[1]
> # use blup() to get theta
> theta <- blup(res)
> # manual check
> dat$theta == theta$pred
>
> Now, if we fit a location-scale RE model, which relaxes the assumption of a
> common tau^2:
> res.ls <- rma(yi, vi, scale = ~ 1, data=dat)
>
> I thought we would get different tau^2 for each effect size included in the
> data, so that the lambda is becoming:
> lambda_i = tau_i^2 / (tau^2 + v_i^2), where tau_i^2 is the heterogeneity
> corresponding to each y_i.
>
> But this was not the case in rma().
>
> So, my questions are:
>
>   1.
> Is my formula wrong when computing theta or lambda for the location-scale model
>   2.
> If my formula is correct, how to get the estimate of tau_i^2; the variance for
> each effect size, so that we can get lambda_i which is dependent on both
> tau_i^2 and v_i
>
> Best wishes,
> Yefeng



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