[R-meta] Covariance-variance matrix when studies share multiple treatment x control comparison

James Pustejovsky jepu@to @end|ng |rom gm@||@com
Wed Oct 16 16:25:08 CEST 2019


Ju,

Yes, I agree that it would be best to create a funnel plot of Hedges' d
estimates versus the modified measure of precision. You can do this using
the basic funnel plot function where you feed in the vector of effect sizes
and vector of modified precisions:
funnel(x = MHF$hedged, sei = precision.2, <...additional formatting
options...>)

James

On Mon, Oct 14, 2019 at 5:48 PM Ju Lee <juhyung2 using stanford.edu> wrote:

> Dear Wolfgang, James,
>
> Thank you for all your helpful suggestions and feedback.
> Following up on previous posts, I am wondering what would be the best way
> to visualize the funnel plot when I am using modified egger test suggested
> by Pustejovsky and Rodgers (2018).
>
> Based on our previous conversation, I am wondering if I should plot
> modified precision sqrt(1 / n1+ 1 / n2) against  Hedges' d (x axis),
> instead of SE or inverse SE against residuals....
>
> Is there a way to do this through funnel() or funnel.rma() function? Below
> is my current code with egger.full being the model being run with Hedges' d
> and "sqrt(1 / n1+ 1 / n2)" as modified precision.
>
> Would specifying yaxis as "yaxis="sqrtninv" equivalent to this approach?
> or maybe I need an alternative approach here?
>
> Thank you very much,
> Best
> JU
>
> prec.<-function(CN,TN){
>   pr<-sqrt((1 / CN) + (1/TN))
>   return(pr)
> }
> precision.2<-prec.(MHF$n.t, MHF$n.c)
> head(precision.2)
> egger.full<-rma.mv(hedged~precision.2, CV, data=MHF, random = list(~ 1 |
> Study, ~1|Id))
> egger.full
>
> funnel(egger.full, level=c(90, 95, 99),
>        shade=c("white", "gray", "gray40"),back="white",
>        yaxis="     ", xlab="", ylab="",
>        digits=c(2,2))
>
>
> ------------------------------
> *From:* Viechtbauer, Wolfgang (SP) <
> wolfgang.viechtbauer using maastrichtuniversity.nl>
> *Sent:* Friday, September 27, 2019 8:27 AM
> *To:* Ju Lee <juhyung2 using stanford.edu>; James Pustejovsky <jepusto using gmail.com
> >
> *Cc:* r-sig-meta-analysis using r-project.org <r-sig-meta-analysis using r-project.org
> >
> *Subject:* RE: Covariance-variance matrix when studies share multiple
> treatment x control comparison
>
> You are still using 'residuals' as the outcome. Don't do that. Just use
> the Hedges' g values as the outcome. Also, you should specify the correct V
> matrix (I think you called it VCV in an earlier post). So, for example:
>
> rma.mv(hedged ~ precision.2, VCV, data=MHF, random = list(~ 1 | Study, ~1
> | Id),  subset=(Spatial.scale.2=="Fragmentation scale"))
>
> I haven't looked at your other post in detail, but 'random = ~ factor(x) |
> Study/Id' doesn't actually work (at least not in the way you think it
> does). Please update your metafor installation to get an error that will
> inform you of this. Instead, random = list(~factor(x)|Study, ~factor(x)|Id)
> is indeed the correct way to specify two '~ inner | outer' terms.
>
> Best,
> Wolfgang
>
> -----Original Message-----
> From: Ju Lee [mailto:juhyung2 using stanford.edu <juhyung2 using stanford.edu>]
> Sent: Friday, 27 September, 2019 16:46
> To: James Pustejovsky
> Cc: Viechtbauer, Wolfgang (SP); r-sig-meta-analysis using r-project.org
> Subject: Re: Covariance-variance matrix when studies share multiple
> treatment x control comparison
>
> Dear James, Wolfgang,
>
> Thank you very much for this information.
> I have one question extending from this is: While I run my main mixed
> modes always using var-covar. matrix (to account for shared study groups
> within each study),
> it is acceptable that my egger-like regression does not incorporate this
> structure, but rather just use sqrt(1 / n1 + 1 / n2)  as precision (instead
> of sqrt(diag(v.c.matrix)) like Wolfgang suggested as one possibility) and
> use p-value for precision term (precision.2 which is p=0.2382) to determine
> the asymmetry?
>
> prec.<-function(CN,TN){
>   pr<-sqrt((1 / CN) + (1/TN))
>   return(pr)
> }
> precision.2<-prec.(MHF$n.t, MHF$n.c)
> > egger.pr2.frag<-rma.mv(residuals~precision.2,var,data=MHF,random =list(
> ~ 1 | Study, ~1|Id),  subset=(Spatial.scale.2=="Fragmentation scale"))
> > egger.pr2.frag
>
> Multivariate Meta-Analysis Model (k = 285; method: REML)
> Variance Components:
>   estim    sqrt  nlvls  fixed  factor
> sigma^2.1  0.4255  0.6523     73     no   Study
> sigma^2.2  0.3130  0.5595    285     no      Id
> Test for Residual Heterogeneity:
>   QE(df = 283) = 1041.1007, p-val < .0001
> Test of Moderators (coefficient(s) 2):
>   QM(df = 1) = 1.3909, p-val = 0.2382
>
> Model Results:
>   estimate      se     zval    pval    ci.lb   ci.ub
> intrcpt        0.0529  0.1617   0.3274  0.7433  -0.2640  0.3699
> precision.2   -0.0668  0.0567  -1.1794  0.2382  -0.1779  0.0442
> ---
>   Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
>
> Thank you very much, both of you.
> Best,
> JU
>
> p.s. Wolfgang, I think I figured out what went wrong with how I specified
> my random effects in my previous e-mail. Specifying it
> as random=list(~factor(x)|Study, ~factor(x)|Id) instead of random=
> ~factor(x)|Study/Id generates results that makes sense to me now. Please
> let me know if this is correct way I should be coding.
>

	[[alternative HTML version deleted]]



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