[R-meta] I2 or p to choose the effect model
Martin Lobo
m|obo4370 @end|ng |rom hotm@||@com
Wed Sep 15 15:13:25 CEST 2021
Hi Everyone.
I have the following question.
The Cochraine manual defines an I2 greater than 40% as great heterogeneity, so we should choose a random effects model. How should it be interpreted when this I2 is accompanied by a p much higher than 0.05?
In this particular case it is a mean difference target.
I do not know if the interpretation should be different according to the type of meta analysis
Thank you
Lorenzo Mart�n Lobo MTSAC, FACC, FESC
Especialista Jerarquizado en Cardiolog�a
Jefe de Dpto Enf. Cardiovasculares y Cardiometabolismo Hospital Militar Campo de Mayo.
Jefe de Cardiolog�a Hospital Militar Campo de Mayo
Ex Jefe de Unidad Coronaria Hospital Militar Campo de Mayo
Miembro Titular de la Sociedad Argentina de Cardiolog�a
Fellow American College of Cardiology
Fellow European Society of Cardiology
Ex Miembro del Area de Investigaci�n de la SAC
Ex Director del Consejo de Aterosclerosis y Trombosis de la SAC
Miembro Asesor del Consejo de Aterosclerosis y Trombosis de la SAC
Ex Director del Consejo de Epidemiolog�a y Prevenci�n Cardiovascular de la SAC
Miembro Asesor del Consejo de Epidemiolog�a y Prevenci�n Cardiovascular de la SAC
Experto en Lipidos de la Sociedad Argentina de Lipidos.
Miembro de la Sociedad Argentina de Lipidos.
Instructor de ACLS de la American Heart Association
________________________________
De: R-sig-meta-analysis <r-sig-meta-analysis-bounces using r-project.org> en nombre de r-sig-meta-analysis-request using r-project.org <r-sig-meta-analysis-request using r-project.org>
Enviado: martes, 14 de septiembre de 2021 20:33
Para: r-sig-meta-analysis using r-project.org <r-sig-meta-analysis using r-project.org>
Asunto: R-sig-meta-analysis Digest, Vol 52, Issue 36
Send R-sig-meta-analysis mailing list submissions to
r-sig-meta-analysis using r-project.org
To subscribe or unsubscribe via the World Wide Web, visit
https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-meta-analysis&data=04%7C01%7C%7C17445b8692e44b424b9308d977d97c07%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637672598247450585%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=kAU225PKHScJhBv99soIAJvwSP%2F1U4gOcSMZriehH2M%3D&reserved=0
or, via email, send a message with subject or body 'help' to
r-sig-meta-analysis-request using r-project.org
You can reach the person managing the list at
r-sig-meta-analysis-owner using r-project.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of R-sig-meta-analysis digest..."
Today's Topics:
1. Re: Clarification on ranef.rma.mv() (Luke Martinez)
2. Re: guidance for modeling SMCC type effect size (Stefanou Revesz)
----------------------------------------------------------------------
Message: 1
Date: Tue, 14 Sep 2021 12:24:33 -0500
From: Luke Martinez <martinezlukerm using gmail.com>
To: "Viechtbauer, Wolfgang (SP)"
<wolfgang.viechtbauer using maastrichtuniversity.nl>
Cc: R meta <r-sig-meta-analysis using r-project.org>
Subject: Re: [R-meta] Clarification on ranef.rma.mv()
Message-ID:
<CAJnTYHEmTGErQEOxOpTdXxq=dc2cAqUDGJ4mMg1CzHzSpXExXA using mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Hi Wolfgang,
Thank you. And since in rma.mv() we can have up to two ~ inner | outer
random terms, then, I'm assuming to get the proportion of variation
for the second ~ inner | outer random term, I can do:
sds <- svd(chol(rma.mv_model4$H))$d
sds^2 / sum(sds^2)
I guess one potential problem I'm running into is that what should we
do if we see that the proportion of explained between-studies variance
by only one or two levels of a categorical variable is almost zero
while rest of the levels of that categorical variable make significant
contributions?
The reason I ask this is that with continuous variables (using struct
= "GEN"), if a variable's contribution is almost zero, then, you can
decide not to use that continuous variable in the random part at all
(that variable altogether is overfitted).
But with categorical variables, when several levels make good
contributions to the between-studies variance except just one or two
levels, then, you can't easily decide not to use that whole
categorical variable in the random part at all.
Do you have any opinion on this dilemma?
Many thanks,
Luke
On Tue, Sep 14, 2021 at 1:12 AM Viechtbauer, Wolfgang (SP)
<wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>
> You can just do:
>
> sds <- svd(chol(fm3$G))$d / sqrt(fm3$sigma2)
> sds^2 / sum(sds^2)
>
> to get those 'Proportion of Variance' values. In fact, the scaling by sqrt(fm3$sigma2) is irrelevant then, so this is the same as:
>
> sds <- svd(chol(fm3$G))$d
> sds^2 / sum(sds^2)
>
> Or you can do the same as you did in those helper functions you wrote.
>
> I find it a bit strange to talk of the contribution of the intercept and slope variances to their sum (since they are on different scales), but maybe this makes sense when using a singular value decomposition of the Cholesky factorization of G instead of just doing summary(princomp(fm$G)) directly.
>
> Best,
> Wolfgang
>
> >-----Original Message-----
> >From: Luke Martinez [mailto:martinezlukerm using gmail.com]
> >Sent: Tuesday, 14 September, 2021 2:12
> >To: Viechtbauer, Wolfgang (SP)
> >Cc: R meta
> >Subject: Re: [R-meta] Clarification on ranef.rma.mv()
> >
> >Hi Wolfgang,
> >
> >You'll see the meaningful results when you run the following:
> >
> >lapply(rePCA_lme(fm2), summary)
> >
> >The first column in the output (below) is the amount of total
> >between-subjects variation explained by the random intercepts. The
> >second column is the amount of total between-subjects variation
> >cumulatively explained by the random intercepts AND random slopes.
> >
> >The idea is to find out whether some overfitting of random-effects
> >structure has taken place or not. For example, in this case, it seems
> >that random slopes are only responsible for a tiny amount of total
> >between-subjects variation as 99.41% of such variation is explained by
> >the random intercepts alone. So, maybe the model's random structure
> >can be simplified as:
> >
> >lme(distance ~ age, random = ~1 | Subject , data = Orthodont)
> >
> >This is a useful feature possibly for metafor as well, so I wonder how
> >to add some names and "prcomplist" class to do the same thing to
> >rma.mv just like I extended that from lmer to lme?
> >
> >I don't think the fact that yi values have their own variance would
> >interfere with the central concept here.
> >
> >Thanks,
> >Luke
> >
> >$Subject
> >Importance of components:
> > [,1] [,2]
> >Standard deviation 1.7794 0.13681
> >Proportion of Variance 0.9941 0.00588
> >Cumulative Proportion 0.9941 1.00000
> >
> >On Mon, Sep 13, 2021 at 1:17 PM Viechtbauer, Wolfgang (SP)
> ><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> >>
> >> Going back to the earlier example:
> >>
> >> library(nlme)
> >> fm2 <- lme(distance ~ age, random = ~ age | Subject, data = Orthodont)
> >> rePCA_lme(fm2)
> >>
> >> This is essentially:
> >>
> >> svd(chol(as.matrix(getVarCov(fm2))))$d / sigma(fm2)
> >> svd(chol(as.matrix(getVarCov(fm2))))$u
> >>
> >> Doing the same with rma.mv():
> >>
> >> library(metafor)
> >> Orthodont$id <- 1:nrow(Orthodont)
> >> fm3 <- rma.mv(distance ~ age, 0, random = list(~ age | Subject, ~ 1 | id),
> >struct="GEN", data = Orthodont)
> >> svd(chol(fm3$G))$d / sqrt(fm3$sigma2)
> >> svd(chol(fm3$G))$u
> >>
> >> No idea how to interpret this and whether the idea underlying this generalizes
> >to the case where each yi value has its own variance (instead of estimating a
> >single residual variance).
> >>
> >> Best,
> >> Wolfgang
> >>
> >> >-----Original Message-----
> >> >From: Luke Martinez [mailto:martinezlukerm using gmail.com]
> >> >Sent: Monday, 13 September, 2021 19:49
> >> >To: Viechtbauer, Wolfgang (SP)
> >> >Cc: R meta
> >> >Subject: Re: [R-meta] Clarification on ranef.rma.mv()
> >> >
> >> >Hi Wolfgang,
> >> >
> >> >My goal was to follow lme4:::rePCA.merMod assuming that there is an
> >> >underlying reason that lme4 developers chose not to directly apply PCA
> >> >to the G matrix.
> >> >
> >> >But if you think for rma.mv() models applying the PCA directly to the
> >> >G matrix gives the same result, I will very much appreciate a quick
> >> >demonstration?
> >> >
> >> >Thank you again,
> >> >Luke
> >> >
> >> >On Mon, Sep 13, 2021 at 11:42 AM Viechtbauer, Wolfgang (SP)
> >> ><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> >> >>
> >> >> I am not familiar with lme4::rePCA, but if you want to do PCA on the var-cov
> >> >matrix of the random effects, why not just apply PCA directly to G?
> >> >>
> >> >> Best,
> >> >> Wolfgang
> >> >>
> >> >> >-----Original Message-----
> >> >> >From: Luke Martinez [mailto:martinezlukerm using gmail.com]
> >> >> >Sent: Monday, 13 September, 2021 18:25
> >> >> >To: Viechtbauer, Wolfgang (SP)
> >> >> >Cc: R meta
> >> >> >Subject: Re: [R-meta] Clarification on ranef.rma.mv()
> >> >> >
> >> >> >Sure, I recently wrote a function similar to ?lme4::rePCA for lme
> >> >> >models. I keep benefiting from using it. So, I was wondering if I
> >> >> >could extend that to rma.mv() models?
> >> >> >
> >> >> >Here is how it works for lme models:
> >> >> >
> >> >> >#-- Some helper functions:
> >> >> >
> >> >> >Tlist_lme <- function(fit) rev(pdMatrix(fit$modelStruct$reStruct,
> >> >> >factor = TRUE))
> >> >> >theta_lme <- function(fit) sapply(Tlist_lme(fit), function(i)
> >> >> >i[lower.tri(i, diag = TRUE)])
> >> >> >
> >> >> >lowerbd <- function(x){
> >> >> >dd <- diag(0, nrow=nrow(x))
> >> >> >dd[lower.tri(dd)] <- -Inf
> >> >> >dd[lower.tri(dd, diag=TRUE)]
> >> >> >}
> >> >> >
> >> >> >lwr_lme <- function(fit) sapply(Tlist_lme(fit), lowerbd)
> >> >> >
> >> >> >#-- main function:
> >> >> >
> >> >> >rePCA_lme <- function(x){
> >> >> >
> >> >> > chfs <- Tlist_lme(x)
> >> >> > nms <- names(chfs)
> >> >> > unms <- unique(nms)
> >> >> > names(unms) <- unms
> >> >> >
> >> >> > svals <- function(m) { # this is applied each of the RE matrices
> >> >> > vv <- svd(m, nv = 0L)
> >> >> > names(vv) <- c("sdev", "rotation")
> >> >> > vv$center <- FALSE
> >> >> > vv$scale <- FALSE
> >> >> > class(vv) <- "prcomp"
> >> >> > vv
> >> >> > }
> >> >> >
> >> >> > structure(lapply(unms, function(m)
> >> >> > svals(Matrix::bdiag(chfs[which(nms ==
> >> >> > m)]))), class = "prcomplist")
> >> >> >}
> >> >> >
> >> >> >#-- Testing:
> >> >> >
> >> >> >fm2 <- lme(distance ~ age,random=~age | Subject , data = Orthodont)
> >> >> >
> >> >> >rePCA_lme(fm2)
> >> >> >
> >> >> >On Mon, Sep 13, 2021 at 11:10 AM Viechtbauer, Wolfgang (SP)
> >> >> ><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> >> >> >>
> >> >> >> This gives the scaled (by the residual variance) Cholesky decomposition of
> >> >the
> >> >> >var-cov matrix of the random effects.
> >> >> >>
> >> >> >> We can see this if we compare:
> >> >> >>
> >> >> >> t(Tlist_lme(fm1)$Subject) %*% Tlist_lme(fm1)$Subject * sigma(fm1)^2
> >> >> >>
> >> >> >> with:
> >> >> >>
> >> >> >> VarCorr(fm1)
> >> >> >>
> >> >> >> rma.mv() also uses a Cholesky decomposition to ensure that the var-cov
> >matrix
> >> >of
> >> >> >the random effects is (semi)positive definite. However, it does not scale
> >> >things
> >> >> >by the residual variance, since those variances are heteroscedastic.
> >> >> >>
> >> >> >> I don't know why you would want to obtain just Tlist_lme(fm1), but if you
> >are
> >> >> >actually after the var-cov matrix itself, it is stored as "G" in the model
> >> >object.
> >> >> >To use your earlier example:
> >> >> >>
> >> >> >> library(metafor)
> >> >> >> dat <- dat.berkey1998
> >> >> >> res.mv <- rma.mv(yi~ outcome - 1, vi, data = dat, random = ~ outcome |
> >trial,
> >> >> >struct = "UN")
> >> >> >> res.mv$G
> >> >> >>
> >> >> >> If you really want the Cholesky decomposition, then just do:
> >> >> >>
> >> >> >> C <- chol(res.mv$G)
> >> >> >> C
> >> >> >>
> >> >> >> and, as expected, t(C) %*% C is the same as res.mv$G.
> >> >> >>
> >> >> >> Best,
> >> >> >> Wolfgang
> >> >> >>
> >> >> >> >-----Original Message-----
> >> >> >> >From: Luke Martinez [mailto:martinezlukerm using gmail.com]
> >> >> >> >Sent: Monday, 13 September, 2021 17:27
> >> >> >> >To: Viechtbauer, Wolfgang (SP)
> >> >> >> >Cc: R meta
> >> >> >> >Subject: Re: [R-meta] Clarification on ranef.rma.mv()
> >> >> >> >
> >> >> >> >Dear Wolfgang,
> >> >> >> >
> >> >> >> >Thank you very much. For correlated random-effect structures in
> >> >> >> >rma.mv(), is it possible to extract the equivalent of the following
> >> >> >> >lme() information:
> >> >> >> >
> >> >> >> >Tlist_lme <- function(fit) rev(pdMatrix(fit$modelStruct$reStruct,
> >> >> >> >factor = TRUE))
> >> >> >> >
> >> >> >> >#----- Testing:
> >> >> >> >library(nlme)
> >> >> >> >fm1 <- lme(distance ~ age, data = Orthodont)
> >> >> >> >
> >> >> >> >Tlist_lme(fm1)
> >> >> >> >
> >> >> >> >On Mon, Sep 13, 2021 at 2:38 AM Viechtbauer, Wolfgang (SP)
> >> >> >> ><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> >> >> >> >>
> >> >> >> >> Dear Luke,
> >> >> >> >>
> >> >> >> >> Sure:
> >> >> >> >>
> >> >> >> >> library(metafor)
> >> >> >> >>
> >> >> >> >> dat <- dat.berkey1998
> >> >> >> >> res.mv <- rma.mv(yi~ outcome - 1, vi, data = dat, random = ~ outcome |
> >> >trial,
> >> >> >> >struct = "UN")
> >> >> >> >> res.mv$rho
> >> >> >> >>
> >> >> >> >> ran.mv <- ranef.rma.mv(res.mv)
> >> >> >> >> cor(matrix(ran.mv[[1]]$intrcpt, ncol=2, byrow=FALSE))[1,2]
> >> >> >> >>
> >> >> >> >> The two correlations are not the same for the reasons explained at the
> >> >link
> >> >> >you
> >> >> >> >provided.
> >> >> >> >>
> >> >> >> >> If the dataset is not so nicely balanced, one can do something similar,
> >> >but
> >> >> >the
> >> >> >> >restructuring of the output from ranef() into a wide format gets a bit
> >more
> >> >> >> >tedious.
> >> >> >> >>
> >> >> >> >> For example:
> >> >> >> >>
> >> >> >> >> dat <- dat[-4,]
> >> >> >> >> res.mv <- rma.mv(yi~ outcome - 1, vi, data = dat, random = ~ outcome |
> >> >trial,
> >> >> >> >struct = "UN")
> >> >> >> >> res.mv$rho
> >> >> >> >>
> >> >> >> >> ran.mv <- ranef.rma.mv(res.mv)
> >> >> >> >> ran.mv
> >> >> >> >>
> >> >> >> >> ran.mv <- ran.mv[[1]][1]
> >> >> >> >> ran.mv$study <- sapply(strsplit(rownames(ran.mv), "|", fixed=TRUE),
> >tail,
> >> >1)
> >> >> >> >> ran.mv$arm <- sapply(strsplit(rownames(ran.mv), "|", fixed=TRUE),
> >head,
> >> >1)
> >> >> >> >> ran.mv
> >> >> >> >>
> >> >> >> >> wide <- reshape(ran.mv, direction="wide", idvar="study",
> >> >v.names="intrcpt",
> >> >> >> >timevar="arm")
> >> >> >> >> rownames(wide) <- NULL
> >> >> >> >> wide
> >> >> >> >> cor(wide[2:3], use="pairwise.complete.obs")[1,2]
> >> >> >> >>
> >> >> >> >> There might be a more elegant way to do this, but this gets the job
> >done.
> >> >> >> >>
> >> >> >> >> Best,
> >> >> >> >> Wolfgang
> >> >> >> >>
> >> >> >> >> >-----Original Message-----
> >> >> >> >> >From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces using r-
> >> >project.org]
> >> >> >On
> >> >> >> >> >Behalf Of Luke Martinez
> >> >> >> >> >Sent: Monday, 13 September, 2021 8:38
> >> >> >> >> >To: R meta
> >> >> >> >> >Subject: [R-meta] Clarification on ranef.rma.mv()
> >> >> >> >> >
> >> >> >> >> >Dear Wolfgang and List Members,
> >> >> >> >> >
> >> >> >> >> >In ordinary multilevel models (lmer), one can use ranef() of a model
> >> >> >> >> >to get the correlations from the conditional modes of the random
> >> >> >> >> >effects (https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstats.stackexchange.com%2Fq%2F153253%2F124093&data=04%7C01%7C%7C17445b8692e44b424b9308d977d97c07%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637672598247450585%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=VW8W%2B0SXQRhBwgxfYYSyiVKq%2FJexGturZMj9gcemYIE%3D&reserved=0) which may
> >> >> >> >> >reveal how much random-effects for slopes and intercepts are roughly
> >> >> >> >> >correlated.
> >> >> >> >> >
> >> >> >> >> >Similarly, for a struct = "UN" model, I was wondering if
> >> >> >> >> >"ranef.rma.mv(fitted_model)" could reveal how much random-effects for
> >> >> >> >> >outcome levels are roughly correlated?
> >> >> >> >> >
> >> >> >> >> >For example, for the "res.mv" model below where the REML rho estimate
> >> >> >> >> >is "0.775", can ranef.rma.mv(res.mv) values give a rough estimate of
> >> >> >> >> >this correlation conditional on the observed data?
> >> >> >> >> >
> >> >> >> >> >dat <- dat.berkey1998
> >> >> >> >> >res.mv <- rma.mv(yi~ outcome - 1, vi, data = dat, random = ~ outcome |
> >> >> >> >> >trial, struct = "UN")
> >> >> >> >> >
> >> >> >> >> >ran.mv <- ranef.rma.mv(res.mv)
> >> >> >> >> >
> >> >> >> >> >Thank you very much for your help,
> >> >> >> >> >Luke
------------------------------
Message: 2
Date: Tue, 14 Sep 2021 18:33:09 -0500
From: Stefanou Revesz <stefanourevesz using gmail.com>
To: Reza Norouzian <rnorouzian using gmail.com>
Cc: R meta <r-sig-meta-analysis using r-project.org>
Subject: Re: [R-meta] guidance for modeling SMCC type effect size
Message-ID:
<CA+TgogohkVtiWwa4Yz66OFR86F7uJ9KxKDZd5pNGf5TuOXx5rA using mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Very interesting! Thanks a lot! Just a very final question, what does
the ~ 1 | id part do or assume?
On Sun, Sep 12, 2021 at 6:13 PM Reza Norouzian <rnorouzian using gmail.com> wrote:
>
> I wonder how conditions could have their own autoregressive structure?
>
> At the study level, you could add *the same random-effect value* to
> all the effects (i.e., rows) in each study. But within each study, at
> the condition level, you could add *the same random-effect value* to
> each set of effects (i.e., rows) that represent the same condition.
>
> Therefore, the two (study-level and condition-level) auto-regressive
> structures may lead to different estimates of correlation; one
> representing the common correlation among the adjacent interval_id
> levels across studies, the other representing the common correlation
> among the adjacent interval_id levels across the conditions nested in
> studies.
>
> Likewise, the estimates of heterogeneity for SMCC effects at each
> level of interval_id across the studies may be different from that
> across the conditions nested in studies (assuming an HAR structure).
>
> why that could be necessary?
>
> There is nothing necessary, it's just an(other) assumption about the
> structure of true effects, you can fit a model that employs such an
> assumption and see if that improves the fit of the model to the data
> relative to a model that doesn't utilize that assumption.
>
> Best,
> Reza
>
>
>
>
> On Sun, Sep 12, 2021 at 4:43 PM Stefanou Revesz
> <stefanourevesz using gmail.com> wrote:
> >
> > Hi Reza,
> >
> > Thank you so much! A quick follow-up, when you say "If in each study,
> > true SMCCs at all intervals across the conditions are assumed to have
> > their own auto-regressively correlated structure as well", I wonder
> > how conditions could have their own autoregressive structure and why
> > that could be necessary?
> >
> > Thanks again!
> >
> > On Sun, Sep 12, 2021 at 2:57 PM Reza Norouzian <rnorouzian using gmail.com> wrote:
> > >
> > > Dear Stefanou,
> > >
> > > The modeling functions like rma.mv(), rma.uni() etc. don't generally
> > > depend on the type of effect size. That aside, just to make sure, did
> > > you compute the change from each pre-test to each follow-up post-test,
> > > or the change from each testing occasion to the following one (e.g.,
> > > pre-test to post-test1, post-test1 to post-test2 ...)?
> > >
> > > Regardless of how you define the intervals, if your studies include a
> > > control (C) and multiple treatment conditions (T1, T2,...) that occur
> > > across the studies, you can create a 'condition' variable to
> > > distinguish between the control and the treatments' SMCCs (yi) in each
> > > study over the intervals you have defined:
> > >
> > > study condition yi interval_id id
> > > 1 T1 .1 0 1
> > > 1 T1 .3 1 2
> > > 1 T2 .7 0 3
> > > 1 T2 .2 1 4
> > > 1 C .4 0 5
> > > 1 C .5 1 6
> > > 2 T2 .6 0 7
> > > 2 C .9 1 8
> > >
> > > In which case, a starting point might be:
> > >
> > > rma.mv(yi ~ condition*interval_id, V = Some_V_matrix, random = list(~
> > > interval_id | study, ~ 1 | id), struct = "HAR")
> > >
> > > This model assumes that in each study, true SMCCs at all intervals are
> > > auto-regressively correlated with each other regardless of the
> > > conditions they belong to. If in each study, true SMCCs at all
> > > intervals across the conditions are assumed to have their own
> > > auto-regressively correlated structure as well, then, you can
> > > consider:
> > >
> > > rma.mv(yi ~ condition*interval_id, V = Some_V_matrix, random = list(~
> > > interval_id | study, ~ interval_id | interaction(study,condition), ~ 1
> > > | id), struct = c("HAR","HAR") )
> > >
> > > In both models, when the interaction term is decomposed to its simple
> > > effects for each condition, you get the average SMCC for each
> > > condition (e.g., T1, T2, or C) across the intervals for your studies.
> > >
> > > For your second type of effect size (y_i = SMCC_T - SMCC_C, v_i =
> > > v_{i_{SMCC_T}} + v_{i_{SMCC_C}}), pretty much everything I said above
> > > applies. However, in this case, you're basically modeling some sort of
> > > simple effect for each treatment's change vs the control's change
> > > across the intervals for your studies. So, by fitting the above model
> > > but using this type of effect size, you'll be asking how such simple
> > > effects change over the interval you have considered.
> > >
> > > I believe these metrics for effect size are nowadays less commonly
> > > used, partly because you can use an SMD metric, which among other
> > > things doesn't require direct knowledge of pre-post correlations for
> > > their computation, model them using multivariate-multilevel models,
> > > and present the results in perhaps more intuitive ways to your
> > > audience.
> > >
> > > Does that help?
> > >
> > > Reza
> > >
> > >
> > >
> > > Reza
> > >
> > >
> > > On Sun, Sep 12, 2021 at 6:15 AM Stefanou Revesz
> > > <stefanourevesz using gmail.com> wrote:
> > > >
> > > >
> > > > Dear Experts,
> > > >
> > > > I need some guidance for modeling two types of effect sizes (for two
> > > > different meta-analyses) using the rma.mv() program in metafor.
> > > >
> > > > First, I have computed the standardized mean change (SMCC) between
> > > > each pre-test and the follow-up post-tests in each of
> > > > multiple-treatment studies.
> > > >
> > > > Second, I have computed the difference in standardized mean changes
> > > > (SMCC) between a treatment and a control group at each pre-test to
> > > > post-test intervals in each of multiple-treatment studies.
> > > >
> > > > The reason I want to use rma.mv() is that each of my studies could
> > > > produce multiple of these types of effect sizes. But I wonder what
> > > > would be a starting point for modeling these two types of effect size?
> > > >
> > > > Any help is appreciated,
> > > > Stefanou
> > > >
> > > > _______________________________________________
> > > > R-sig-meta-analysis mailing list
> > > > R-sig-meta-analysis using r-project.org
> > > > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-meta-analysis&data=04%7C01%7C%7C17445b8692e44b424b9308d977d97c07%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637672598247450585%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=kAU225PKHScJhBv99soIAJvwSP%2F1U4gOcSMZriehH2M%3D&reserved=0
------------------------------
Subject: Digest Footer
_______________________________________________
R-sig-meta-analysis mailing list
R-sig-meta-analysis using r-project.org
https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-meta-analysis&data=04%7C01%7C%7C17445b8692e44b424b9308d977d97c07%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637672598247450585%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=kAU225PKHScJhBv99soIAJvwSP%2F1U4gOcSMZriehH2M%3D&reserved=0
------------------------------
End of R-sig-meta-analysis Digest, Vol 52, Issue 36
***************************************************
[[alternative HTML version deleted]]
More information about the R-sig-meta-analysis
mailing list