If you have any questions regarding this document, please contact Shravan Vasishth (vasishth@uni-potsdam.de).
We can construct a hierarchical model as follows:
\[\begin{equation} \begin{split} y_i \mid \theta_i, \sigma_i^2 \sim & N(\theta_i, \sigma_i^2) \quad i=1,\dots, n\\ \theta_i\mid \theta,\tau^2 \sim & N(\theta, \tau^2), \\ \theta \sim & N(0,100^2),\\ \tau \sim & N(0,100^2)T(0,) \\ \end{split} \end{equation}\]dat<-read.csv("../data/MetaAnalysisData.csv",header=TRUE,sep=";")
## reorder by increasing y:
dat<-dat[with(dat,order(Effect)),]
unique(dat$Cue)
## [1] num gend subj anim ccom sem
## Levels: anim ccom gend num sem subj
# Retrieval cue that is manipulated:
## gend: gender (masculin vs feminin)
## num: number (singular vs plural)
## subj: subject (being a subject or not)
## anim: animacy (animate vs inanimate)
## ccom: c-comand (being a c-commander or not of the reflexive)
## sem: semantic cue (matching or mismatching the semantic requirements of a verb with respect to its subject)
unique(dat$DepType)
## [1] agreement refl nonagreement reci
## Levels: agreement nonagreement reci refl
# Dependency Type:
## agreement: subject-verb number agreement dependency
## nonagreement: subject-verb non-agreement dependency
## refl: reflexive-antecedent dependency
## reci: reciprocal-antecedent dependency
unique(dat$IntType)
## [1] pro retro
## Levels: pro retro
# Interference type:
## pro: proactive interference
## retro: retroactive interference
# Contrast coding of the covariates
# Interference type: sum contrasts
dat$proretro<-ifelse(dat$IntType=="pro",0.5,-0.5)
## Distractor prominence: sliding contrasts
dat$contrOR2<-ifelse(dat$Prominence2=="subj_OR_topic",0.5,
ifelse(dat$Prominence2=="other",-0.5,0))
dat$contrAND2<-ifelse(dat$Prominence2=="subj_AND_topic",0.5,
ifelse(dat$Prominence2=="subj_OR_topic",
-0.5,0))
MatchDat<-subset(dat,TargetType=="Match")
MismatchDat<-subset(dat,TargetType=="Mismatch")
## will do separate analyses on these subsets of data:
MatchNonAgrmt<-subset(dat,DepType=="nonagreement" & TargetType=="Match")
nMatchNonAgrmt<-dim(MatchNonAgrmt)[1] #12 studies
MatchAgrmt<-subset(dat,DepType=="agreement" & TargetType=="Match")
nMatchAgrmt <- dim(MatchAgrmt)[1] # 18 studies
MismatchAgrmt<-subset(dat,DepType=="agreement" & TargetType=="Mismatch")
nMismatchAgrmt<-dim(MismatchAgrmt)[1] # 13 studies
MatchReflReci<-subset(dat,DepType%in%c("refl","reci") & TargetType=="Match")
MismatchReflReci<-subset(dat,DepType%in%c("refl","reci") & TargetType=="Mismatch")
nMatchReflReci<-dim(MatchReflReci)[1] #21 studies
nMismatchReflReci<-dim(MismatchReflReci)[1] # 13 studies
This analysis is not reported in the paper (except as an aside).
## define model:
cat("
model
{
for( i in 1:n)
{
p[i] <- 1/s[i]^2
y[i] ~ dnorm(thetai[i],p[i])
thetai[i] ~ dnorm(theta,prec)
}
## priors for theta:
## theta lies between (-1.96*100,1.96*100):
theta ~ dnorm(0,1/100^2)
## Prior 1:
# prec ~ dgamma(0.001,0.001)
# tau.sq <- 1/prec
# tau <- pow(tau.sq,0.5)
## Prior 2:
#tau ~ dunif(0,200)
#tau.sq <- tau*tau
#prec<-1/(tau.sq)
## Prior 3: truncated normal
tau ~ dnorm(0,1/10000)T(0,)
tau.sq <- tau*tau
prec<-1/(tau.sq)
## Prior 4: truncated t-distribution
# tau ~ dt(0,25,2)I(0,)
# tau.sq <- tau*tau
# prec<-1/(tau.sq)
}",
file="../vignettes/JAGSModels/RandomEffectsMetaAnalysisM1.jag" )
Matchdat <- list(y = MatchDat$Effect,
s = MatchDat$SE,
n = dim(MatchDat)[1])
Mismatchdat <- list(y = MismatchDat$Effect,
s = MismatchDat$SE,
n = dim(MismatchDat)[1])
res<-fitmodel(Matchdat)
mysummary(res,rows = 1:2)
## Mean SD
## tau 12.1466267 2.940201
## theta 0.1624393 2.612423
## Point est. Upper C.I.
## tau 1.000835 1.002999
## theta 1.000243 1.001066
estimate_match<-summary(res)$statistics[2,1]
se_match<-summary(res)$statistics[2,2]
resFull<-res
(TMCrI<-summarize(d=res,rows=1:2))
## mean lower upper prob(b>0)
## tau 12.1466267 6.727681 18.396145 1.00000
## theta 0.1624393 -4.723847 5.456512 0.51725
Check whether the Pearlmutter (1999) results are unduly influential. If we remove Pearlmutter et al (1999), Exp. 1 and Exp. 3, singular verbs, the posterior is a bit shifted to the right:
MatchNoPearl<-subset(MatchDat, Publication != "PearlmutterEtAl99E3sing" & Publication != "PearlmutterEtAl99E1")
MatchNoPearldat <- list(y = MatchNoPearl$Effect,
s = MatchNoPearl$SE,
n = dim(MatchNoPearl)[1])
resNoPearl<-fitmodel(MatchNoPearldat)
mysummary(resNoPearl,rows = 1:2)
## Mean SD
## tau 7.420933 3.328401
## theta 1.579368 2.193328
## Point est. Upper C.I.
## tau 1.005033 1.008736
## theta 1.000167 1.000763
summarize(d=resNoPearl,rows=1:2)
## mean lower upper prob(b>0)
## tau 7.420933 0.8484178 13.915302 1.000
## theta 1.579368 -2.5130623 6.138356 0.762
Plot with and without Pearlmutter studies:
multiplot(plotparameter(resFull,title="Interference effect \n (Target-Match, Full data)",col=2),
plotparameter(resNoPearl,title="Interference effect \n (Target-Match, W/o Pearlmutter)",col=2),
cols=2)
## for composite plot:
TMatchParam<-plotparameter(resFull,col=2)
CrI<-getCrI(res)
plotposteriors(d=MatchDat,CrI=CrI,start=3,title="Target-Match")
res<-fitmodel(Mismatchdat)
mysummary(res,rows = 1:2)
## Mean SD
## tau 20.533981 4.937801
## theta -5.666933 5.291269
## Point est. Upper C.I.
## tau 0.9998441 0.9999229
## theta 1.0010853 1.0036515
estimate_mismatch<-summary(res)$statistics[2,1]
se_mismatch<-summary(res)$statistics[2,2]
(TMisCrI<-summarize(d=res,rows = 1:2))
## mean lower upper prob(b>0)
## tau 20.533981 12.18010 31.324651 1.000000
## theta -5.666933 -16.35722 4.695931 0.138125
If we remove Jäger et al. (2015), Exp. 1 and Pearlmutter et al. (1999), Exp. 1 (the only two experiments who report significant inhibition), we see stronger evidence for a facilitatory effect:
## Remove Jaeger et al. (2015), Exp 1 and Pearlmutter et al. (1999), Exp. 1:
MismatchNoJaegerPearl <- subset(MismatchDat, Publication != "JaegerEtAl15E1" & Publication != "PearlmutterEtAl99E1")
MismatchNoJaegerPearldat<-list(y = MismatchNoJaegerPearl$Effect,
s = MismatchNoJaegerPearl$SE,
n = dim(MismatchNoJaegerPearl)[1])
resNoJaegerPearl<-fitmodel(MismatchNoJaegerPearldat)
mysummary(resNoJaegerPearl,rows = 1:2)
## Mean SD
## tau 18.97298 5.296332
## theta -8.84101 5.323369
## Point est. Upper C.I.
## tau 1.000092 1.000399
## theta 1.000501 1.002216
summarize(resNoJaegerPearl,rows=1:2)
## mean lower upper prob(b>0)
## tau 18.97298 9.524939 30.459445 1.000000
## theta -8.84101 -19.264212 1.721858 0.049125
However, the facilitation in target-mismatch is entirely driven by Wagers et al (2009), Experiments 2, 4 and 5:
MismatchNoWagers<-subset(MismatchDat, Publication!="WagersEtAl09E2" & Publication!= "WagersEtAl09E4" & Publication!="WagersEtAl09E5")
MismatchNoWagersdat<-list(y = MismatchNoWagers$Effect,
s = MismatchNoWagers$SE,
n = dim(MismatchNoWagers)[1])
resNoWagers<-fitmodel(MismatchNoWagersdat)
mysummary(resNoWagers,rows = 1:2)
## Mean SD
## tau 18.287717 4.811238
## theta -1.354558 5.206259
## Point est. Upper C.I.
## tau 1.001492 1.004799
## theta 0.999840 1.000139
summarize(resNoWagers,rows=1:2)
## mean lower upper prob(b>0)
## tau 18.287717 10.24659 28.958630 1.000000
## theta -1.354558 -11.80014 8.568415 0.394375
TMismatchPlot<-plotparameter(res,col=2,title="Interference effect \n (Target-Mismatch")
TMismatchPlot
CrI<-getCrI(res)
# start refers to the row we want to plot the CrIs for:
plotposteriors(d=MismatchDat,CrI=CrI,start=3,title="Target-Mismatch")
cat("
model
{
for( i in 1:n)
{
p[i] <- 1/s[i]^2
y[i] ~ dnorm(thetai[i]+betaOR2*contrOR2[i]+
betaAND2*contrAND2[i]+betaPR*proretro[i],p[i])
thetai[i] ~ dnorm(theta,prec)
}
## prior for theta:
## theta lies between (-1.96*100,1.96*100):
theta ~ dnorm(0,1/100^2)
## prior for beta:
betaAND2 ~ dnorm(0,1/100^2)
betaOR2 ~ dnorm(0,1/100^2)
betaPR ~ dnorm(0,1/100^2)
## Prior 1:
# prec ~ dgamma(0.001,0.001)
# tau.sq <- 1/prec
# tau <- pow(tau.sq,0.5)
## Prior 2:
#tau ~ dunif(0,200)
#tau.sq <- tau*tau
#prec<-1/(tau.sq)
## Prior 3: truncated normal
tau ~ dnorm(0,1/10000)T(0,)
tau.sq <- tau*tau
prec<-1/(tau.sq)
## Prior 4: truncated t-distribution
# tau ~ dt(0,25,2)I(0,)
# tau.sq <- tau*tau
# prec<-1/(tau.sq)
}",
file="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag" )
datMatchPromslidingPR<-list(y=MatchDat$Effect,
s=MatchDat$SE,
n=dim(MatchDat)[1],
contrOR2=MatchDat$contrOR2,
contrAND2=MatchDat$contrAND2,
proretro=MatchDat$proretro)
res<-fitmodel(d=datMatchPromslidingPR,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
mysummary(res,rows=1:5)
## Mean SD
## betaAND2 -12.183718 10.165541
## betaOR2 -2.084771 8.133591
## betaPR 8.235375 5.841801
## tau 12.569955 2.990330
## theta -1.119907 2.953436
## Point est. Upper C.I.
## betaAND2 1.000356 1.001129
## betaOR2 1.000634 1.002645
## betaPR 1.001078 1.002583
## tau 1.001178 1.002511
## theta 1.000229 1.000705
(resMPromSlid<-summarize(res,rows = 1:5))
## mean lower upper prob(b>0)
## betaAND2 -12.183718 -33.130214 7.218893 0.114875
## betaOR2 -2.084771 -18.428092 14.164600 0.397625
## betaPR 8.235375 -3.104622 19.786283 0.924875
## tau 12.569955 7.260572 19.011191 1.000000
## theta -1.119907 -6.957254 4.745669 0.346875
TMAndOr<-plotparameter(res,col=1,title="Target-Match:\n Prominence (AND vs OR)")
TMOrOther<-plotparameter(res,col=2,title="Target-Match:\n Prominence (OR vs other)")
TMproretro<-plotparameter(res,col=3,title="Target-Match:\n (proretro)")
TMTheta<-plotparameter(res,col=5,title="Target-Match:\n Interference effect (theta)")
CrI<-getCrI(res)
plotposteriors(d=MatchDat,CrI=CrI,start=6,title="Target-Match")
Note that Pearlmutter paper might be influential in driving the posterior distribution. We therefore remove Pearlmutter et al. (1999), Exp. 1 and Exp. 3 (singular verbs), and fit the same model again.
MatchNoPearl<-subset(MatchDat, Publication != "PearlmutterEtAl99E3sing" & Publication != "PearlmutterEtAl99E1")
MatchNoPearldat <- list(y = MatchNoPearl$Effect,
s = MatchNoPearl$SE,
n = dim(MatchNoPearl)[1],
contrOR2=MatchNoPearl$contrOR2,
contrAND2=MatchNoPearl$contrAND2,
proretro=MatchNoPearl$proretro)
resNoPearl<-fitmodel(d=MatchNoPearldat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
mysummary(resNoPearl,rows = 1:5)
## Mean SD
## betaAND2 -11.8637672 8.640307
## betaOR2 -5.9797638 6.835906
## betaPR 5.2625807 4.900148
## tau 8.7787818 3.319874
## theta 0.1373528 2.545942
## Point est. Upper C.I.
## betaAND2 1.001330 1.004131
## betaOR2 1.001633 1.005001
## betaPR 1.000252 1.001265
## tau 1.005442 1.012737
## theta 1.000694 1.002615
(resMPromSlid_NoPearl<-summarize(d=resNoPearl,rows=1:5))
## mean lower upper prob(b>0)
## betaAND2 -11.8637672 -29.465711 4.373669 0.07750
## betaOR2 -5.9797638 -19.735706 7.427098 0.18775
## betaPR 5.2625807 -4.184834 15.139201 0.86675
## tau 8.7787818 2.005221 15.536941 1.00000
## theta 0.1373528 -4.965013 5.293621 0.51725
Plot with and without Pearlmutter studies:
multiplot(plotparameter(res,title="Interference effect \n (Target-Match, Full data)",col=2),
plotparameter(resNoPearl,title="Interference effect \n (Target-Match, W/o Pearlmutter)",col=2),
cols=2)
Removing the Pearlmutter experiments does not have much of an impact on the posterior.
datMismatchPromslidingPR<-list(y=MismatchDat$Effect,
s=MismatchDat$SE,
n=dim(MismatchDat)[1],
contrOR2=MismatchDat$contrOR2,
contrAND2=MismatchDat$contrAND2,
proretro=MismatchDat$proretro)
res<-fitmodel(d=datMismatchPromslidingPR,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
mysummary(res,rows=1:5)
## Mean SD
## betaAND2 39.379414 14.270717
## betaOR2 34.921319 14.719521
## betaPR -32.793193 10.729314
## tau 13.837776 5.326225
## theta -5.121709 4.566062
## Point est. Upper C.I.
## betaAND2 1.000879 1.003284
## betaOR2 1.001572 1.005361
## betaPR 1.001289 1.004514
## tau 1.000531 1.002081
## theta 1.000410 1.001329
(resMPromSlidPR<-summarize(res,rows = 1:5))
## mean lower upper prob(b>0)
## betaAND2 39.379414 11.942016 67.394384 0.996500
## betaOR2 34.921319 5.636282 63.008330 0.987875
## betaPR -32.793193 -53.429255 -10.425960 0.002625
## tau 13.837776 3.250984 24.953868 1.000000
## theta -5.121709 -14.366683 3.602075 0.122250
TMMAndOr<-plotparameter(res,col=1,title="Target-Mismatch:\n Prominence (AND vs OR)")
TMMOrOther<-plotparameter(res,col=2,title="Target-Mismatch:\n Prominence (OR vs other)")
TMMproretro<-plotparameter(res,col=3,title="Target-Mismatch:\n (proretro)")
TMMTheta<-plotparameter(res,col=5,title="Target-Mismatch:\n Interference Effect (theta)")
multiplot(TMTheta,TMMTheta,
TMproretro,TMMproretro,
TMOrOther,TMMOrOther,
TMAndOr,TMMAndOr,
cols=2)
CrI<-getCrI(res)
plotposteriors(d=MismatchDat,CrI=CrI,start=6,title="Target-Mismatch")
If we remove Jäger et al. (2015), Exp. 1 and Pearlmutter et al. (1999), Exp. 1, there isn’t a dramatic change in the posterior, but we see somewhat stronger evidence for facilitatory interference:
MismatchNoJaegerPearl<-subset(MismatchDat, Publication != "JaegerEtAl15E1" & Publication != "PearlmutterEtAl99E1")
MismatchNoJaegerPearldat<-list(y = MismatchNoJaegerPearl$Effect,
s = MismatchNoJaegerPearl$SE,
n = dim(MismatchNoJaegerPearl)[1],
contrOR2=MismatchNoJaegerPearl$contrOR2,
contrAND2=MismatchNoJaegerPearl$contrAND2,
proretro=MismatchNoJaegerPearl$proretro)
resNoJaegerPearl<-fitmodel(d=MismatchNoJaegerPearldat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
mysummary(resNoJaegerPearl,rows=1:5)
## Mean SD
## betaAND2 42.283734 13.531809
## betaOR2 36.536784 15.334369
## betaPR -27.933056 10.926518
## tau 11.343895 5.938237
## theta -7.257867 4.423751
## Point est. Upper C.I.
## betaAND2 0.9998337 1.000006
## betaOR2 1.0000025 1.000683
## betaPR 1.0000793 1.000749
## tau 1.0008225 1.002462
## theta 1.0006391 1.002409
(resMPromSlidPR_NoJaegerPearl<-summarize(resNoJaegerPearl,rows = 1:5))
## mean lower upper prob(b>0)
## betaAND2 42.283734 16.034020 68.605012 0.997750
## betaOR2 36.536784 4.828925 65.475124 0.988500
## betaPR -27.933056 -49.278971 -6.032174 0.007875
## tau 11.343895 1.056794 23.864894 1.000000
## theta -7.257867 -16.128205 1.361952 0.047750
However, the facilitation in Target-Mismatch is driven entirely by Experiments 2, 4, and 5 reported by Wagers et al. (2009). Without these two studies, the effect is centered around 0.
MismatchNoWagersAgrmt<-subset(MismatchDat, Publication!="WagersEtAl09E2" & Publication!= "WagersEtAl09E4" & Publication!="WagersEtAl09E5")
MismatchNoWagersdat<-list(y = MismatchNoWagers$Effect,
s = MismatchNoWagers$SE,
n = dim(MismatchNoWagers)[1],
contrOR2=MismatchNoWagers$contrOR2,
contrAND2=MismatchNoWagers$contrAND2,
proretro=MismatchNoWagers$proretro)
resNoWagers<-fitmodel(MismatchNoWagersdat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
(mysummary(resNoWagers,rows = 1:5))
## Mean SD
## betaAND2 32.048275 13.314489
## betaOR2 25.054214 13.536724
## betaPR -32.088824 9.286889
## tau 9.883541 5.465640
## theta -1.423317 4.135809
## Point est. Upper C.I.
## betaAND2 1.001631 1.005295
## betaOR2 1.000361 1.001557
## betaPR 1.001585 1.004642
## tau 1.001178 1.003489
## theta 1.001045 1.003632
## Point est. Upper C.I.
## betaAND2 1.001631 1.005295
## betaOR2 1.000361 1.001557
## betaPR 1.001585 1.004642
## tau 1.001178 1.003489
## theta 1.001045 1.003632
(summarize(resNoWagers,rows=1:5))
## mean lower upper prob(b>0)
## betaAND2 32.048275 5.9708829 58.710087 0.991625
## betaOR2 25.054214 -2.2995069 51.587766 0.966000
## betaPR -32.088824 -49.8151176 -12.680201 0.002000
## tau 9.883541 0.5095725 21.509571 1.000000
## theta -1.423317 -9.9970414 6.309276 0.374875
Check what happens if we also remove the experiments published by Lago et al (2015) in addition to the Wagers et al (2009) experiments. Without the Wagers et al (2009) and the Lago et al (2015) data, the mean of the posterior turns out to be positive.
MismatchNoWagersNoLago<-subset(MismatchDat, Publication!="WagersEtAl09E2" & Publication!= "WagersEtAl09E4" & Publication!= "WagersEtAl09E5" & Publication!= "WagersEtAl09E3sing" & Publication!= "WagersEtAl09E3plu" & Publication != "LagoEtAl15E1" & Publication!="LagoEtAl15E2" & Publication != "LagoEtAl15E3a" & Publication != "LagoEtAl15E3b")
MismatchNoWagersNoLagodat<-list(y = MismatchNoWagersNoLago$Effect,
s = MismatchNoWagersNoLago$SE,
n = dim(MismatchNoWagersNoLago)[1],
contrOR2=MismatchNoWagersNoLago$contrOR2,
contrAND2=MismatchNoWagersNoLago$contrAND2,
proretro=MismatchNoWagersNoLago$proretro)
resNoWagersNoLago<-fitmodel(MismatchNoWagersNoLagodat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
(mysummary(resNoWagersNoLago,rows = 1:5))
## Mean SD
## betaAND2 7.969248 20.203290
## betaOR2 18.515835 14.677673
## betaPR -7.423974 17.507018
## tau 11.235463 6.520889
## theta 7.555262 7.061419
## Point est. Upper C.I.
## betaAND2 1.000134 1.000914
## betaOR2 1.000422 1.001393
## betaPR 1.000459 1.001851
## tau 1.001083 1.002949
## theta 1.000486 1.001170
## Point est. Upper C.I.
## betaAND2 1.000134 1.000914
## betaOR2 1.000422 1.001393
## betaPR 1.000459 1.001851
## tau 1.001083 1.002949
## theta 1.000486 1.001170
(summarize(resNoWagersNoLago,rows=1:5))
## mean lower upper prob(b>0)
## betaAND2 7.969248 -32.1471232 48.10305 0.664625
## betaOR2 18.515835 -10.7187705 47.89170 0.900375
## betaPR -7.423974 -42.3363346 27.63692 0.324625
## tau 11.235463 0.9148786 26.04826 1.000000
## theta 7.555262 -6.3554260 21.40271 0.866625
Distractor prominence is not included in the models because not enough data is available to fit models with two covariates.
One could fit one giant meta-regression looking at the main effects of dependency type and pro/retroactive interference, and interactions. But there really isn’t enough data to do this. We can therefore do subgroup analyses: fit separate models for nonagreement, agreement, and reflexive/reciprocal dependencies and investigate whether pro/retro interference effects differ within each subtype.
We define the following model for the meta-regressions.
## define model for meta-regression analysis with Interference Type as predictor (without distractor prominence): Thompson and Sharp model.
## pred is the proretro predictor:
cat("
model
{
for(i in 1:n)
{
p[i] <- 1/s[i]^2
y[i] ~ dnorm(thetai[i]+ beta * pred[i],p[i])
thetai[i] ~ dnorm(theta,prec)
}
## prior for theta:
## theta lies between (-1.96*100,1.96*100):
theta ~ dnorm(0,1/100^2)
## prior for beta:
beta ~ dnorm(0,1/100^2)
## Prior 1:
# prec ~ dgamma(0.001,0.001)
# tau.sq <- 1/prec
# tau <- pow(tau.sq,0.5)
## Prior 2:
#tau ~ dunif(0,200)
#tau.sq <- tau*tau
#prec<-1/(tau.sq)
## Prior 3: truncated normal
tau ~ dnorm(0,1/10000)T(0,)
tau.sq <- tau*tau
prec<-1/(tau.sq)
## Prior 4: truncated t-distribution
# tau ~ dt(0,25,2)I(0,)
# tau.sq <- tau*tau
# prec<-1/(tau.sq)
}",
file="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag" )
This is essentially all the Van Dyke data:
datMatchNonAgrmt<-list(y=MatchNonAgrmt$Effect,
s=MatchNonAgrmt$SE,
n=dim(MatchNonAgrmt)[1],
pred=MatchNonAgrmt$proretro)
res<-fitmodel(d=datMatchNonAgrmt,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"))
res<-fitmodel(d=datMatchNonAgrmt,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"))
res<-fitmodel(d=datMatchPromslidingPR,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysisPromslidingPR.jag",
track=c("tau","theta","thetai","betaAND2","betaOR2","betaPR"))
mysummary(res,rows=1:5)
## Mean SD
## betaAND2 -12.252150 10.039158
## betaOR2 -2.061730 7.997041
## betaPR 8.180431 5.696649
## tau 12.571589 2.952570
## theta -1.135459 2.905504
## Point est. Upper C.I.
## betaAND2 0.9999130 1.000138
## betaOR2 0.9999769 1.000482
## betaPR 1.0000967 1.000685
## tau 1.0005105 1.002227
## theta 1.0000338 1.000565
(resMPromSlid<-summarize(res,rows = 1:5))
## mean lower upper prob(b>0)
## betaAND2 -12.252150 -32.414925 7.53270 0.106250
## betaOR2 -2.061730 -17.636330 13.64896 0.396000
## betaPR 8.180431 -3.099878 19.71950 0.926500
## tau 12.571589 7.160007 18.70487 1.000000
## theta -1.135459 -6.669930 4.67434 0.346375
mysummary(res,rows=1:3)
## Mean SD
## betaAND2 -12.252150 10.039158
## betaOR2 -2.061730 7.997041
## betaPR 8.180431 5.696649
## Point est. Upper C.I.
## betaAND2 0.9999130 1.000138
## betaOR2 0.9999769 1.000482
## betaPR 1.0000967 1.000685
(resMNonAgrmt<-summarize(res,rows=1:3))
## mean lower upper prob(b>0)
## betaAND2 -12.252150 -32.414925 7.53270 0.10625
## betaOR2 -2.061730 -17.636330 13.64896 0.39600
## betaPR 8.180431 -3.099878 19.71950 0.92650
NonAgrmtMatchproretro<-plotparameter(res,col=1,title="Target-Match (non-agr Argument-verb):\n proretro")
NonAgrmtMatchTheta<-plotparameter(res,col=3,title="Target-Match (non-agr Argument-verb):\n theta")
datMatchAgrmt<-list(y=MatchAgrmt$Effect,
s=MatchAgrmt$SE,
n=dim(MatchAgrmt)[1],
pred=MatchAgrmt$proretro)
res<-fitmodel(d=datMatchAgrmt,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
mysummary(res,rows=1:3)
## Mean SD
## beta 15.928959 9.981681
## tau 15.265863 5.169076
## theta -6.546933 4.927926
## Point est. Upper C.I.
## beta 1.0000874 1.000617
## tau 1.0000300 1.000240
## theta 0.9999577 1.000149
(resMatchAgrmt<-summarize(d=res,rows=1:3))
## mean lower upper prob(b>0)
## beta 15.928959 -2.589227 36.989289 0.95450
## tau 15.265863 6.720609 27.255308 1.00000
## theta -6.546933 -15.923588 3.419853 0.08825
TMAgrmtproretro<-plotparameter(res,col=1,title="Target-Match Agrmt:\n proretro")
TMAgrmtTheta<-plotparameter(res,col=3,title="Target-Match Agrmt:\n theta")
Only Franck et al 2015, Exp1 RC and Pearlmutter et al. 1999, Exp 3 report inhibitory interference for subject-verb agreement in target-match configurations. All other studies that report significant results found facilitation. The effect reported by Franck is extremely large (much larger than in any other experiment). Check the impact of Franck et al 2015, Exp1 RC on the posterior distribution. Without this data point, the posterior is just a bit more shifted to the left.
# Remove Franck et al (2015)
MatchNoFranckAgrmt<-subset(MatchAgrmt, Publication != "FranckEtAl15E1RC")
MatchNoFranckAgrmtdat<-list(y = MatchNoFranckAgrmt$Effect,
s=MatchNoFranckAgrmt$SE,
n=dim(MatchNoFranckAgrmt)[1],
pred=MatchNoFranckAgrmt$proretro)
resNoFranckAgrmt<-fitmodel(MatchNoFranckAgrmtdat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
(summary_NoFranckAgrmt<-summarize(resNoFranckAgrmt,rows=1:3))
## mean lower upper prob(b>0)
## beta 13.545708 -4.941398 33.194511 0.931125
## tau 14.460510 6.214719 25.557596 1.000000
## theta -7.748854 -17.151302 1.810515 0.050125
theta_match_Agrmt_noFranck <- round(summary_NoFranckAgrmt$mean[3],1)
theta_match_Agrmt_noFranck_p <- round(summary_NoFranckAgrmt[[4]][3],2)
datMismatchAgrmt<-list(y=MismatchAgrmt$Effect,
s=MismatchAgrmt$SE,
n=dim(MismatchAgrmt)[1],
pred=MismatchAgrmt$proretro)
res<-fitmodel(d=datMismatchAgrmt,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
mysummary(res,rows=1:3)
## Mean SD
## beta -14.51144 13.194966
## tau 16.78267 7.180141
## theta -21.79474 6.898115
## Point est. Upper C.I.
## beta 1.0000483 1.000306
## tau 1.0005777 1.001158
## theta 0.9999683 1.000039
(resMismatchAgrmt<-summarize(d=res,rows=1:3))
## mean lower upper prob(b>0)
## beta -14.51144 -40.99270 11.374048 0.1233125
## tau 16.78267 4.48629 33.338539 1.0000000
## theta -21.79474 -36.36791 -8.897948 0.0014375
TMMAgrmtproretro<-plotparameter(res,col=1,title="Target-Mismatch Agrmt:\n proretro")
TMMAgrmtTheta<-plotparameter(res,col=3,title="Target-Mismatch Agrmt:\n theta")
CrI<-getCrI(res)
plotposteriors(d=MismatchAgrmt,CrI=CrI,start=4,title="Target-Mismatch (Agrmt)")
The large facilitatory interferencce effect in Target-Mismatch in subj-verb agreement may be driven by the experiments in Wagers et al (2009) and Lago et al (2015). First, check the influence of the Wagers et al (2009) experiments:
#Check influence of the Wagers et al (2009) experiments:
MismatchNoWagersAgrmt<-subset(MismatchAgrmt, Publication!="WagersEtAl09E2" & Publication!= "WagersEtAl09E4" & Publication!= "WagersEtAl09E5" & Publication!= "WagersEtAl09E3sing" & Publication!= "WagersEtAl09E3plu")
MismatchNoWagersAgrmtdat<-list(y = MismatchNoWagersAgrmt$Effect,
s=MismatchNoWagersAgrmt$SE,
n=dim(MismatchNoWagersAgrmt)[1],
pred=MismatchNoWagersAgrmt$proretro)
resNoWagersAgrmt<-fitmodel(MismatchNoWagersAgrmtdat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
(summary_NoWagersAgrmt<-summarize(resNoWagersAgrmt,rows=1:3))
## mean lower upper prob(b>0)
## beta -22.06114 -54.375872 11.425249 0.0756875
## tau 16.37320 1.562648 41.329493 1.0000000
## theta -14.17401 -32.081589 1.571142 0.0353750
theta_mismatch_Agrmt_noWagers <- round(summary_NoWagersAgrmt$mean[3],1)
theta_mismatch_Agrmt_noWagers_p <- round(summary_NoWagersAgrmt[[4]][3],2)
Second, check the influence of the Wagers et al (2009) experiments together with the Lago et al (2015):
#Check influence of the Wagers et al (2009) and Lago et al (2015) experiments:
MismatchNoWagersNoLagoAgrmt<-subset(MismatchAgrmt, Publication!="WagersEtAl09E2" & Publication!= "WagersEtAl09E4" & Publication!= "WagersEtAl09E5" & Publication!= "WagersEtAl09E3sing" & Publication!= "WagersEtAl09E3plu" & Publication != "LagoEtAl15E1" & Publication!="LagoEtAl15E2" & Publication != "LagoEtAl15E3a" & Publication != "LagoEtAl15E3b")
MismatchNoWagersNoLagoAgrmtdat<-list(y = MismatchNoWagersNoLagoAgrmt$Effect,
s=MismatchNoWagersNoLagoAgrmt$SE,
n=dim(MismatchNoWagersNoLagoAgrmt)[1],
pred=MismatchNoWagersNoLagoAgrmt$proretro)
resNoWagersNoLagoAgrmt<-fitmodel(MismatchNoWagersNoLagoAgrmtdat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
(summary_NoWagersNoLagoAgrmt<-summarize(resNoWagersNoLagoAgrmt,rows=1:3))
## mean lower upper prob(b>0)
## beta -0.1067043 -176.599566 181.66858 0.4992500
## tau 30.8827189 3.681275 94.56938 1.0000000
## theta -3.8764386 -97.748413 90.81650 0.4675625
theta_mismatch_Agrmt_noWagersNoLago <- round(summary_NoWagersNoLagoAgrmt$mean[3],1)
theta_mismatch_Agrmt_noWagersNoLago_p <- round(summary_NoWagersNoLagoAgrmt[[4]][3],2)
The facilitatory effect disappears (the posterior is centered around 0) when removing the Wagers et al (2009) and the Lago et al (2015) data. However, this new estimate is actually not very informative as not many data points are left in the analysis. Therefore, this analysis is not reported in the paper.
datMatchReci<-list(y=MatchReflReci$Effect,
s=MatchReflReci$SE,
n=dim(MatchReflReci)[1],
pred=MatchReflReci$proretro)
res<-fitmodel(d=datMatchReci,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
mysummary(res,rows=1:3)
## Mean SD
## beta 10.27121066 6.193356
## tau 5.35436817 3.943952
## theta 0.01298092 3.117555
## Point est. Upper C.I.
## beta 1.000251 1.000701
## tau 1.000729 1.002336
## theta 1.000401 1.001129
(resMatchReci<-summarize(d=res,rows=1:3))
## mean lower upper prob(b>0)
## beta 10.27121066 -1.5480337 22.880870 0.9557500
## tau 5.35436817 0.2284568 14.773019 1.0000000
## theta 0.01298092 -6.1807229 6.072214 0.5058125
TMReciproretro<-plotparameter(res,col=1,title="Target-Match Refl:\n proretro")
TMReciTheta<-plotparameter(res,col=3,title="Target-Match Refl:\n theta")
datMismatchReci<-list(y=MismatchReflReci$Effect,
s=MismatchReflReci$SE,
n=dim(MismatchReflReci)[1],
pred=MismatchReflReci$proretro)
res<-fitmodel(d=datMismatchReci,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
mysummary(res,rows=1:3)
## Mean SD
## beta -6.124193 11.566317
## tau 8.228772 6.126415
## theta 10.776803 5.818454
## Point est. Upper C.I.
## beta 1.000546 1.000801
## tau 1.000368 1.001255
## theta 1.000198 1.000243
(resMismatchReci<-summarize(res,rows=1:3))
## mean lower upper prob(b>0)
## beta -6.124193 -28.4146386 17.03809 0.2830000
## tau 8.228772 0.2871181 22.63134 1.0000000
## theta 10.776803 -0.8850380 21.99304 0.9676875
TMMReciproretro<-plotparameter(res,col=1,title="Target-Mismatch Refl/Reci:\n proretro")
TMMReciTheta<-plotparameter(res,col=3,title="Target-Mismatch Refl:\n theta")
CrI<-getCrI(res)
plotposteriors(d=MismatchReflReci,CrI=CrI,start=4,title="Target-Mismatch (Refl/Reci)")
Is the inhibition in target-mismatch configurations in reflexives/reciprocals driven by the Chinese data from Jäger et al (2015) which is the only study that reports statistically significant inhibition and has an unusually large sample size?
MismatchNoJaegerRefl<-subset(MismatchReflReci, Publication != "JaegerEtAl15E1")
MismatchNoJaegerRefldat<-list(y = MismatchNoJaegerRefl$Effect,
s=MismatchNoJaegerRefl$SE,
n=dim(MismatchNoJaegerRefl)[1],
pred=MismatchNoJaegerRefl$proretro)
resNoJaegerRefl<-fitmodel(MismatchNoJaegerRefldat,
m="../vignettes/JAGSModels/RandomEffectsMetaRegressionAnalysispred.jag",
track=c("theta","thetai","beta","tau"),adapt=40000,iter=80000)
(summary_resNoJaegerRefl<-summarize(resNoJaegerRefl,rows=1:3))
## mean lower upper prob(b>0)
## beta -3.499557 -28.1942561 21.14555 0.3850000
## tau 9.346311 0.4140192 25.87458 1.0000000
## theta 9.378967 -2.9879443 21.78830 0.9389375
theta_mismatch_Refl_noJaeger <- round(summary_resNoJaegerRefl$mean[3],1)
theta_mismatch_Refl_noJaeger_p <- round(summary_resNoJaegerRefl[[4]][3],2)
multiplot(NonAgrmtMatchTheta,
NonAgrmtMatchproretro,
TMAgrmtTheta,
TMAgrmtproretro,
TMMAgrmtTheta,
TMMAgrmtproretro,
TMReciTheta,
TMReciproretro,
TMMReciTheta,
TMMReciproretro,
cols=2)
Here, we are just checking whether Stan gives similar results for some of the basic models. We recover approximately the same parameters using Stan.
fit <- stan(file='StanModels/rema2.stan', data=Matchdat,
iter=2000, chains=4, seed=987654321,
control = list(adapt_delta = 0.8))
paramnames<-c("mu","tau")
#print(fit,pars=paramnames)
params<-extract(fit,pars=paramnames)
stan_plot(fit,pars=paramnames)+geom_vline(xintercept = 0)+
labs(title="Target match studies")
## ci_level: 0.8 (80% intervals)
## outer_level: 0.95 (95% intervals)
paramnames<-c("mu")
stan_hist(fit,pars=paramnames)+geom_vline(xintercept = 0)+
labs(title="Overall interference effect (Target match)")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
output <- stanc("StanModels/rema2.stan")
fit <- stan(file='StanModels/rema2.stan', data=Mismatchdat,
iter=2000, chains=4, seed=987654321,
control = list(adapt_delta = 0.8))
paramnames<-c("mu","tau","theta")
#print(fit,pars=paramnames)
params<-extract(fit,pars=paramnames)
stan_plot(fit,pars=paramnames)+geom_vline(xintercept = 0)+
labs(title="Target mismatch")
## ci_level: 0.8 (80% intervals)
## outer_level: 0.95 (95% intervals)
stan_hist(fit,pars=paramnames)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
paramnames<-c("mu")
stan_hist(fit,pars=paramnames)+geom_vline(xintercept = 0)+
labs(title="Overall interference effect (Target mismatch)")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
MatchNonAgrmt <- list(y = MatchNonAgrmt$Effect,
s = MatchNonAgrmt$SE,
n = dim(MatchNonAgrmt)[1])
fit <- stan(file='StanModels/rema2.stan', data=MatchNonAgrmt,
iter=2000, chains=4, seed=987654321,
control = list(adapt_delta = 0.99))
paramnames<-c("mu","theta")
print(fit,pars=paramnames)
## Inference for Stan model: rema2.
## 4 chains, each with iter=2000; warmup=1000; thin=1;
## post-warmup draws per chain=1000, total post-warmup draws=4000.
##
## mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat
## mu 13.29 0.19 6.37 2.84 9.05 12.59 16.75 28.23 1154 1
## theta[1] 2.08 0.13 8.40 -16.48 -3.28 2.86 8.11 16.56 4000 1
## theta[2] 5.64 0.13 8.40 -12.54 0.76 6.55 11.11 20.57 4000 1
## theta[3] 7.99 0.10 6.30 -5.26 4.04 8.16 12.09 20.38 4000 1
## theta[4] 9.36 0.11 6.96 -5.41 5.09 9.53 13.78 22.95 4000 1
## theta[5] 9.54 0.10 6.26 -3.13 5.41 9.61 13.69 22.05 4000 1
## theta[6] 12.78 0.20 12.69 -12.13 5.70 11.82 19.16 41.71 4000 1
## theta[7] 15.81 0.13 8.52 0.98 9.80 14.95 21.16 34.33 4000 1
## theta[8] 18.27 0.28 12.45 -1.59 9.67 15.91 25.45 47.70 1936 1
## theta[9] 18.82 0.29 12.85 -0.96 9.96 16.19 26.18 48.60 1967 1
## theta[10] 20.65 0.33 13.35 1.21 10.93 17.99 28.31 52.09 1592 1
## theta[11] 17.81 0.33 14.43 -4.98 8.60 15.12 24.72 53.50 1934 1
## theta[12] 20.59 0.35 14.65 -0.41 10.32 17.31 28.03 56.71 1782 1
##
## Samples were drawn using NUTS(diag_e) at Thu Mar 2 12:58:16 2017.
## For each parameter, n_eff is a crude measure of effective sample size,
## and Rhat is the potential scale reduction factor on split chains (at
## convergence, Rhat=1).
params<-extract(fit,pars=paramnames)
stan_plot(fit,pars=paramnames)+geom_vline(xintercept = 0)+
labs(title="Interference studies (Van Dyke and colleagues)",size=20)
## ci_level: 0.8 (80% intervals)
## outer_level: 0.95 (95% intervals)