Skip to content

[R-meta] Violation in non-independece of errors (head to head studies and mutlilevel meta-analysis)?

4 messages · Gerta Ruecker, Natan Gosmann

#
Dear Wolfgang,



Thank you very much for your response and all comments. Here it goes an
example of what we are doing.



Our full data frame is composed of 1100 rows e 700 columns, but an example
of the data structure could be described like this (basically each study
has one or more trt group, identified by drug, compared to placebo
considering multiple outcomes, identified by measurement scales):



study /trt/drug/ outcome/pcb _m1/pcb _sd1/pcb_m2/drug _m1/drug _sd1/drug_m2
-------------------------------------------------------------------------------------------------------------------
1          1      flx      HAM             25               3               19
            26                3                12
1          2      esc     HAM             25               3               19
            24              2.5              13
2          1      cit       SDS               13               2
             9               12              1.5                3
2          1      cit      HAM             24              2.5              20
            25               2                14
3          1      dul    MADRS          31               6              24
             29                6                17
3          1      dul     HAM             20               5               17
             21             4.5               14
3          2      flx     MADRS          31               6              24
             30              5.5               16
3          2      flx      HAM              20               5              17
             20                4                13





(1) We are calculating Differences in Standardized Mean Change from Pre and
Post Means and initial SD according to the Gleser & Olkin 2009 Study;



# assuming a 0.25 correlation between pre and post means (ri)

meta_pcb <- escalc(measure="SMCR", m1i= pcb_m2, m2i= pcb _m1, sd1i= pcb _sd1,
ni=n_pcb, ri=r1,data=mydata2)



meta_drug<- escalc(measure="SMCR", m1i= drug _m2, m2i= drug _m1,
sd1i=drug_sd1, ni=n_drug, ri=r1,data=mydata2)



meta <- data.frame(yi = meta_drug$yi - meta_pcb$yi, vi = meta_drug$vi +
meta_pcb$vi)



(2) Considering that we also want to include studies with more than one
treatment group, we constructed a full V matrix as you suggested;



calc.v <- function(x) {

   v <- matrix(1/x$n2i[1] + outer(x$yi, x$yi, "*")/(2*x$Ni[1]),
nrow=nrow(x), ncol=nrow(x))

   diag(v) <- x$vi

   v

}



V <- bldiag(lapply(split(meta, meta$study), calc.v))





(3) So far we were specifying as random variables: Study ID and Measurement
Scale (outcome) as exemplified;



meta_out1<-rma.mv(yi=yi, V=V, data=meta,

                  random=list(~1|outcome, ~1|study),

                  slab=paste(author, outcome, sep=", "),

                  mods = ~relevel(factor(drug), ref="flx"))





However, we have doubts if our current analysis is being performed
correctly. Considering our current data structure (as exemplified above),
isn?t problematic to construct a full V matrix to compute the covariance
for various effect sizes of different treatment groups of the same study,
since we also have different rows for different outcomes of the same
treatment group? Should we also include trt as a random variable?



Any advice or suggestions on that would be greatly appreciated.



Best,



Natan


2018-03-31 12:52 GMT-03:00 Viechtbauer Wolfgang (SP) <
wolfgang.viechtbauer at maastrichtuniversity.nl>:

  
  
20 days later
#
Hello all,

Here goes a better example of our data structure (maybe the previous one
was not so clear because of the text format):

study = c("1", "1", "2","2", "3", "3", "3","3")
trt = c( "1", "2", "1","1", "1", "1", "2","2" )
drug= c( "flx", "esc", "cit","cit", "dul", " dul", "flx","flx" )
outcome = c( "HAM", "HAM", "SDS","HAM", "MADRS", "HAM", "MADRS","HAM" )
pcb_m1= c( "25", "25", "13","24", "31", "20", "31","20" )
pcb_sd1 = c( "3", "3", "2","2.5", "6", "5", "6","5" )
pcb_m2 = c( "19", "19", "9","20", "24", "17", "24","17" )
drug_m1= c( "26", "24", "12","25", "29", "21", "30","20" )
drug_sd1 = c( "3", "2.5", "1.5","2", "6", "4.5", "5.5","4" )
drug_m2 = c( "12", "13", "3","14", "17", "14", "16","13" )

data = data.frame( study, trt, drug, outcome, pcb_m1, pcb_sd1, pcb_m2,
drug_m1, drug_sd1, drug_m2)


Any advice or suggestions on the questions described in my previous post
would be greatly appreciated and we would be really thankful if someone
could clarify these points for us.

Best,
Natan

2018-04-03 21:25 GMT-03:00 Natan Gosmann <natan.gosmann at gmail.com>:

  
  
#
Dear Natan,

notwithstanding your problem with network meta-analysis (which I do not 
understand):

I do not see any standard errors or sample sizes in your example data 
(and also no covariates). Could you provide the sample sizes?

Best,

Gerta


Am 24.04.2018 um 22:17 schrieb Natan Gosmann:

  
    
#
Dear Gerta,

Thank you very much for answering.
Our main purpose in this project is to perform multilevel multiple
meta-regression models. Would be possible to perform multilevel models
adjusting for multiple moderators and also network meta-analysis?

The idea of the example data was more to explain our current data
structure, not so much its content, thats why I didn't include sample size
and covariates in the example.

Here it goes the example with sample size and two covariates as an example:

study = c("1", "1", "2","2", "3", "3", "3","3")
trt = c( "1", "2", "1","1", "1", "1", "2","2" )
drug= c( "flx", "esc", "cit","cit", "dul", " dul", "flx","flx" )
outcome = c( "HAM", "HAM", "SDS","HAM", "MADRS", "HAM", "MADRS","HAM" )
pcb_n= c( "252", "252", "127","127", "184", "184", "184","184" )
pcb_m1= c( "25", "25", "13","24", "31", "20", "31","20" )
pcb_sd1 = c( "3", "3", "2","2.5", "6", "5", "6","5" )
pcb_m2 = c( "19", "19", "9","20", "24", "17", "24","17" )
drug_n= c( "249", "255", "130","130", "180", "180", "187","187" )
drug_m1= c( "26", "24", "12","25", "29", "21", "30","20" )
drug_sd1 = c( "3", "2.5", "1.5","2", "6", "4.5", "5.5","4" )
drug_m2 = c( "12", "13", "3","14", "17", "14", "16","13" )
sampling= c( "outpatients", "outpatients", "inpatients","inpatients",
"outpatients", "outpatients", "outpatients","outpatients" )
publication_year= c( "1995", "1995", "2013","2013", "2016", "2016",
"2016","2016" )

data = data.frame( study, trt, drug, outcome, pcb_n, pcb_m1, pcb_sd1,
pcb_m2, drug_n, drug_m1, drug_sd1, drug_m2, samping, publication_year)


Thank you very much for your help.

Best,
Natan

2018-04-25 8:27 GMT-03:00 Gerta Ruecker <ruecker at imbi.uni-freiburg.de>: