[R-meta] Covariance-variance matrix when studies share multiple treatment x control comparison
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 at 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 at maastrichtuniversity.nl>
*Sent:* Friday, September 27, 2019 8:27 AM
*To:* Ju Lee <juhyung2 at stanford.edu>; James Pustejovsky <jepusto at gmail.com
*Cc:* r-sig-meta-analysis at r-project.org <r-sig-meta-analysis at 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 at stanford.edu <juhyung2 at stanford.edu>]
Sent: Friday, 27 September, 2019 16:46
To: James Pustejovsky
Cc: Viechtbauer, Wolfgang (SP); r-sig-meta-analysis at 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.