---
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") )
```