--- output: html_document: default pdf_document: default --- ## Laden notweniger Pakete ```{r, message=FALSE} library(tidyverse) library(foreign) library(metafor) library(corpcor) library(metaSEM) ``` ## Einlesen der Daten ```{r, message=FALSE} (mdata <- readr::read_csv2("MASEM Daten.csv") ) ```
## Deskription: Studien-Merkmale ### Anzahl der Studien ```{r} mdata %>% select(studyID) %>% n_distinct() ```
### Gesamt-N ```{r} mdata %>% summarize(N = sum(N[!duplicated(studyID)])) ```
## Bildung der Korrelationsmatrix
### Sampling variance berechnen und in einen neuen dataframe schreiben ```{r} es.data = metafor::escalc(measure="COR", data=mdata, ri=r, ni=N, append=T) es.data$esID <- seq(1, nrow(es.data)) ```
### Random effects dummy Regression (Tabelle 1) ```{r} Step1 <- metafor::rma.mv(yi=r, V=vi, data=es.data, random=list(~1|studyID,~1|esID), method="ML", mods=~factor(model)-1) (sry <- summary(Step1) ) ```
### Tabelle 1 ```{r} tmp1 <- round(cbind(sry$b, sry$se,sry$ci.lb, sry$ci.ub, sry$zval),2) rownames.tmp <- rownames(tmp1) tmp2 <- cbind(rownames.tmp, tmp1) colnames(tmp2) <- c("correlation","B", "SE", "ci.lb", "ci.ub", "zvalue") tmp2 <- tbl_df(tmp2) tmp2 %<>% unite("CI", ci.lb, ci.ub, sep=", ", remove=TRUE) %>% mutate(SE = paste0("(", SE, ")")) %>% mutate(CI = paste0("(", CI, ")")) %>% unite("B (SE)", B, SE, sep=" ", remove=TRUE) %>% print(n=21) ```
### Schätzung der asymptotischen Kovarianzmatrix ```{r} Acov_ES <- Step1$vb ```
### Zusammenstellung der Korrelationsmatrix durch Extraktion der B's ```{r} KM <- corpcor::vec2sm(vec = c( 1,Step1$b[1], Step1$b[7], Step1$b[4], Step1$b[15], Step1$b[12], 1,Step1$b[6], Step1$b[2], Step1$b[14], Step1$b[9], 1,Step1$b[3], Step1$b[8], Step1$b[11], 1,Step1$b[5], Step1$b[10], 1,Step1$b[13],1), diag = TRUE) colnames(KM) <-c("BioDiv","AufgDiv","BezKonf","AufgKonf","Koh","GLeist") rownames(KM) <-c("BioDiv","AufgDiv","BezKonf","AufgKonf","Koh","GLeist") KM ```
### k und N fuer jede Korrelation ausgeben ```{r} mdata %>% group_by(model = model) %>% summarise(k = n_distinct(studyID), N = sum(N[!duplicated(studyID)])) %>% print(n=nrow(15)) ```
## MASEM Das Modell wird mittels zweier Matrizen spezifiziert: * Die A-Matrix enthält die Effekte der Variablen aufeinander. * Die S-Matrix enthält die Fehlervarianzen, Korrelationen und Fehlerkorrelationen Die Einträge innerhalb beider Matrizen werden mittels beliebigen Benennungen vorgenommen, die später im MASEM-Output erscheinen werden. Außerdem enthält jede Zelle die Startwerte. In der Regel sind diese nicht all zu bedeutsam--sie sollten allerdings nicht zu weit entfernt sein von den tatsächlich geschätzten Werten. Die ausgefüllten Zellen der Matrizen kennzeichnen die Variablen und deren Beziehungen: Die Ziffer "2" steht eifnach für "to" und kennzeichnet einen Effekf (z.B. "bd2rc": Effekt von bd auf rc). Der Buchtstabe "w" steht für "with" und kennzeichnet eine Korrelation. Die Kurzformen "e_" stehen für die Fehlervarianz. Sinn dieser Kennzeichnungen ist lediglich eine verständliche Benennung des späteren Modelloutputs. Die numerischen Werte vor den Bezeichnungen sind Startwerte (z.B. ".1*bd2rc": Startwert für diesen Effekt ist .1) Legende der Variablen-Abkürzungen * bd = biodemografische Diversität * td = Aufgabendiversiät ("task diversity") * rc = Beziehungskonflikte ("relationship conflict") * tc = Aufgabenkonflikte ("task conflicts") * coh = Kohäsion ("cohesion") * perf = Gruppenleistung ("performance")
### A-Matrix (Effekte) ```{r} (A <- matrix(c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ".1*bd2rc", 0, 0, ".4*tc2rc", 0, 0, 0, ".1*td2tc", 0, 0, 0, 0, 0, 0, ".4*rc2coh", ".4*tc2coh", 0, 0, 0, 0, 0, 0, ".5*coh2perf", 0), byrow=T, ncol=6, nrow=6) ) ```
### S-Matrix ```{r} (S <- matrix(c( 1, 0, 0, 0, 0, 0, ".3*bd_w_ts", 1, 0, 0, 0, 0, 0, 0, ".5*e_rc", 0, 0, 0, 0, 0, 0, ".5*e_tc", 0, 0, 0, 0, 0, 0, ".5*e_coh", 0, 0, 0, 0, 0, 0, ".5*e_perf"), byrow=T, ncol=6, nrow=6) ) ```
## Schätzung des MASEM ### Gesamt-Stichprobengröße ```{r} (n=sum(mdata$N[!duplicated(mdata$studyID)],na.rm=T)) ```
### Modell
```{r, warning=FALSE, message=FALSE} MASEM <-metaSEM::wls(Cov=KM, aCov=Acov_ES, n=n, Amatrix=A,Smatrix=S, cor.analysis=TRUE,diag.constraints=TRUE) summary(rerun(MASEM)) #Wegen Problemen rerun benutzt ```
## Spezifische Homogenitätstests für die Diversitätsvariablen
### Biodiversität - Gruppenleistung ```{r} data.GLeist.BioDiv <- subset(mdata, model=="GLeist.BioDiv", select=c("studyID","Authors","N","r")) es.GLeist.BioDiv <- metafor::escalc(measure="COR", data=data.GLeist.BioDiv, ri=r, ni=N, append=T) summary(metafor::rma(yi, vi, data=es.GLeist.BioDiv, digits=2, method="ML") ) ```
### Biodiversität - Beziehungskonflikte ```{r} data.BezKonf.BioDiv <- subset(mdata, model=="BezKonf.BioDiv", select=c("studyID","Authors","N","r")) es.BezKonf.BioDiv <- metafor::escalc(measure="COR", data=data.BezKonf.BioDiv, ri=r, ni=N, append=T) summary(metafor::rma(yi, vi, data=es.BezKonf.BioDiv, digits=2, method="ML") ) ```
### Biodiversität - Kohäsion ```{r} data.Koh.BioDiv <- subset(mdata, model=="Koh.BioDiv", select=c("studyID","Authors","N","r")) es.Koh.BioDiv <- metafor::escalc(measure="COR", data=data.Koh.BioDiv, ri=r, ni=N, append=T) summary(metafor::rma(yi, vi, data=es.Koh.BioDiv, digits=2, method="ML") ) ``` Wie zu sehen, sind alle Korrelationen homogen
### Aufgabendiversität - Gruppenleistung ```{r} data.GLeist.AufgDiv <- subset(mdata, model=="GLeist.AufgDiv", select=c("studyID","Authors","N","r")) es.GLeist.AufgDiv <- metafor::escalc(measure="COR", data=data.GLeist.AufgDiv, ri=r, ni=N, append=T) summary(metafor::rma(yi, vi, data=es.GLeist.AufgDiv, digits=2, method="ML") ) ```
### Aufgabendiversität - Aufgabenkonflikte ```{r} data.AufgKonf.AufgDiv <- subset(mdata, model=="AufgKonf.AufgDiv", select=c("studyID","Authors","N","r")) es.AufgKonf.AufgDiv <- metafor::escalc(measure="COR", data=data.AufgKonf.AufgDiv, ri=r, ni=N, append=T) summary(metafor::rma(yi, vi, data=es.AufgKonf.AufgDiv, digits=2, method="ML") ) ```
### Aufgabendiversität - Kohäsion ```{r} data.Koh.AufgDiv <- subset(mdata, model=="Koh.AufgDiv", select=c("studyID","Authors","N","r")) es.Koh.AufgDiv <- metafor::escalc(measure="COR", data=data.Koh.AufgDiv, ri=r, ni=N, append=T) summary(metafor::rma(yi, vi, data=es.Koh.AufgDiv, digits=2, method="ML") ) ```