[R-meta] selection models in metafor with step truncation

Viechtbauer, Wolfgang (NP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Tue Aug 13 12:39:29 CEST 2024


Hi James,

Catching up on posts here. See:

https://github.com/wviechtb/metafor/blob/master/R/selmodel.rma.uni.r#L457

Assuming preci=1 and using your notation, this is:

ifelse(p_i < a, 1, w(p_i) / w(a))

which I think (first day back in the office - brain is still in warm-up mode) is equivalent to min(1, w(p_i) / w(a)).

I didn't consider the other possibility. Interesting idea -- I just tried this out and it does indeed give different results for some of the datasets that I used.

Do you think one of these two options makes more sense?

Happy to add this alternative version if you would like to see this in selmodel().

Best,
Wolfgang

> -----Original Message-----
> From: R-sig-meta-analysis <r-sig-meta-analysis-bounces using r-project.org> On Behalf
> Of James Pustejovsky via R-sig-meta-analysis
> Sent: Saturday, August 3, 2024 04:39
> To: R meta <r-sig-meta-analysis using r-project.org>
> Cc: James Pustejovsky <jepusto using gmail.com>
> Subject: [R-meta] selection models in metafor with step truncation
>
> Hi Wolfgang,
>
> I see in the metafor documentation for selmodel (
> https://wviechtb.github.io/metafor/reference/selmodel.html#half-normal-negative-
> exponential-logistic-and-power-selection-models)
> that the half-normal, negative exponential, logistic, and power curve
> selection models can take a value for the step argument, as in the
> following code:
>
> library(metafor)
> dat <- dat.hahn2001
> res <- rma(yi, vi, data=dat, method="REML")
> selmodel(res, type="halfnorm", alternative="less")
> selmodel(res, type="halfnorm", alternative="less", step = .025)
>
> From the description in the documentation, I wasn't sure how the step
> truncation is implemented. Say that the step threshold is called a, the
> p-value from study i is p_i, and the selection parameter is delta. Say that
> the non-truncated weight function is w(p_i). For a > 0, is the weight
> function
> min(1, w(p_i) / w(a))
> which you might call a "vertical" re-scaling? Or is it
> ifelse(p_i < a, 1, w((p_i - a) / (1 - a)))
> which you might call a "horizontal" re-scaling?
>
> I think for at least some of the selmodel types listed, the vertical and
> horizontal rescalings give different shapes. Could you clarify?
>
> Best,
> James



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