-----Original Message-----
From: Francesco Romano [mailto:francescobryanromano at gmail.com]
Sent: February 23, 2016 2:34 PM
To: Fox, John <jfox at mcmaster.ca>
Cc: Emmanuel Curis <emmanuel.curis at parisdescartes.fr>; r-sig-mixed-
models at r-project.org
Subject: Re: [R-sig-ME] Replicating type III anova tests for glmer/GLMM
John,
I tried the Anova() function in the car package implemented with contr.sum()
but it doesn't produce beta, SE, z, and p.
To be more precise, R requires that either the F or Chi sq statistic be used.
The model I used was termed "mod", here is the error:
Anova(mod, type=c("III"),
+ test.statistic=c("LR"))
Error in match.arg(test.statistic) : 'arg' should be one of ?Chisq?, ?F?
Chi square produces the following output:
Anova(mod, type=c("III"),
+ test.statistic=c("Chisq"))
Analysis of Deviance Table (Type III Wald chisquare tests)
Response: Correct
Chisq Df Pr(>Chisq)
(Intercept) 67.7409 1 < 2.2e-16 ***
Syntax 0.2856 1 0.593083
Animacy 6.2575 1 0.012367 *
Prof.group.2 2.9888 2 0.224379
Syntax:Animacy 0.0970 1 0.755521
Syntax:Prof.group.2 9.3054 2 0.009536 **
Animacy:Prof.group.2 4.7633 2 0.092399 .
Syntax:Animacy:Prof.group.2 1.3704 2 0.503997
So I still don't know how Raffrey et al. reported beta, SE, z, and p for a main
effect of factor with 4 levels.
If reviewers ask me to do this, I will argue that reporting chi square tests with
corresponding p-values is a more accurate way of reporting main effects and
interactions.
If I haven't abused enough of your time, it would be beneficial to understand
which of the two
methods suggested by Henrik I should adopt. I attach my data.
The predictors of interest are Syntax (2 levels), Animacy (2 levels),
Prof.group.2 (3 levels),
and the outcome 'correct', while the random effects are 'Part.name' and
'Item'. The best model fit is a
bglmer with glmerControl(optimizer = "bobyqa") and nAGQ=1
summary(recallmodel4bisB3)
Cov prior : Part.name ~ wishart(df = 3.5, scale = Inf, posterior.scale = cov,
common.scale = TRUE)
: Item ~ wishart(df = 3.5, scale = Inf, posterior.scale = cov,
common.scale = TRUE)
Prior dev : 1.3565
Generalized linear mixed model fit by maximum likelihood (Laplace
Approximation) ['bglmerMod']
Family: binomial ( logit )
Formula: Correct ~ Syntax * Animacy * Prof.group.2 + (1 | Part.name) + (1
| Item)
Data: recall
Control: glmerControl(optimizer = "bobyqa")
AIC BIC logLik deviance df.resid
313.3 372.9 -142.6 285.3 509
Scaled residuals:
Min 1Q Median 3Q Max
-1.3517 -0.2926 -0.1802 -0.1137 9.3666
Random effects:
Groups Name Variance Std.Dev.
Part.name (Intercept) 0.8046 0.8970
Item (Intercept) 0.5031 0.7093
Number of obs: 523, groups: Part.name, 42; Item, 16
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.8960 0.6317 -1.418 0.156071
Syntaxs -2.0713 0.9447 -2.193 0.028342 *
Animacy+AN -AN -3.0539 1.2548 -2.434 0.014941 *
Prof.group.2int -2.5594 0.9473 -2.702 0.006898 **
Prof.group.2ns -1.8673 0.7634 -2.446 0.014442 *
Syntaxs:Animacy+AN -AN 1.8642 1.8202 1.024 0.305750
Syntaxs:Prof.group.2int 4.1704 1.1676 3.572 0.000355 ***
Syntaxs:Prof.group.2ns 2.4244 1.0483 2.313 0.020736 *
Animacy+AN -AN:Prof.group.2int 3.0067 1.5528 1.936 0.052824 .
Animacy+AN -AN:Prof.group.2ns 1.3245 1.6071 0.824 0.409848
Syntaxs:Animacy+AN -AN:Prof.group.2int -2.2056 2.0550 -1.073 0.283162
Syntaxs:Animacy+AN -AN:Prof.group.2ns -2.3249 2.3108 -1.006 0.314360
---
Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
Henrik's first method via afex:mixed leads to:
m4<-mixed(recallmodel4bisB3, data = recall, family = binomial, method =
"LRT")
Formula (the first argument) converted to formula.
Fitting 8 (g)lmer() models:
(8 warnings omitted)
Mixed Model Anova Table (Type 3 tests)
Model: Correct ~ Syntax * Animacy * Prof.group.2 + (1 | Part.name) +
Model: (1 | Item)
Data: recall
Df full model: 14
Df Chisq Chi Df Pr(>Chisq)
Syntax 13 5.5659 1 0.018313 *
Animacy 13 8.4710 1 0.003609 **
Prof.group.2 12 10.5099 2 0.005222 **
Syntax:Animacy 13 0.9832 1 0.321400
Syntax:Prof.group.2 12 15.8094 2 0.000369 ***
Animacy:Prof.group.2 12 3.9188 2 0.140945
Syntax:Animacy:Prof.group.2 12 1.2240 2 0.542272
---
Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
The result is a main effect of Syntax, Animacy, Prof.group.2, and interaction
between Syntax and Prof.Group.2. The summary(m4) is perfectly
interpretable.
Henrik's second method yields:
*set contrasts*
Syntax01 <- as.factor(1*(recall$Syntax=="of") + 2*(recall$Syntax=="''s"))
Animacy01 <- as.factor(1*(recall$Animacy=="-AN +AN") +
2*(recall$Animacy=="+AN -AN"))
Group012 <- as.factor(1*(recall$Prof.group.2=="adv") +
2*(recall$Prof.group.2=="int") + 3*(recall$Prof.group.2=="ns"))
contrasts(Syntax01) <- contr.sum
contrasts(Animacy01) <- contr.sum
contrasts(Group012) <- contr.sum
m5 <- bglmer (Correct~Syntax01 * Animacy01 * Group012 + (1 | Part.name)
+ (1 | Item), data = recall, control = glmerControl(optimizer = "bobyqa"),
nAGQ=1, family=binomial, expand_re= T)
Warning message:
extra argument(s) ?expand_re? disregarded
Analysis of Deviance Table (Type III Wald chisquare tests)
Response: Correct
Chisq Df Pr(>Chisq)
(Intercept) 67.7409 1 < 2.2e-16 ***
Syntax01 0.2856 1 0.593083
Animacy01 6.2575 1 0.012367 *
Group012 2.9888 2 0.224379
Syntax01:Animacy01 0.0970 1 0.755521
Syntax01:Group012 9.3054 2 0.009536 **
Animacy01:Group012 4.7633 2 0.092399 .
Syntax01:Animacy01:Group012 1.3704 2 0.503997
The result this time is a main effect of what was Animacy and interaction
between what was Syntax and Prof.Group.2 ?!
The summary(m5) is perfectly interpretable.
On Tue, Feb 23, 2016 at 6:17 PM, Fox, John <jfox at mcmaster.ca
<mailto:jfox at mcmaster.ca> > wrote:
Dear Emmanuel,
First, the relevant linear hypothesis is for several coefficients
simultaneously -- for example, all 3 coefficients for the contrasts
representing a 4-level factor -- not for a single contrast. Although it's true
that any linear combination of parameters that are 0 is 0, the converse isn't
true. Second, for a GLMM, we really should be talking about type-III tests not
type-III sums of squares.
Type-III tests are dependent on coding in the full-rank
parametrization of linear (and similar) models used in R, to make the tests
correspond to reasonable hypotheses. The invariance of type-II tests with
respect to coding is attractive, but shouldn't distract from the fundamental
issues, which are the hypotheses that are tested and the power of the tests.
Best,
John
> -----Original Message-----
> From: Emmanuel Curis [mailto:emmanuel.curis at parisdescartes.fr
<mailto:emmanuel.curis at parisdescartes.fr> ]
> Sent: February 23, 2016 11:50 AM
> To: Fox, John <jfox at mcmaster.ca <mailto:jfox at mcmaster.ca> >
> Cc: Francesco Romano <francescobryanromano at gmail.com
<mailto:francescobryanromano at gmail.com> >; r-sig-mixed-
> models at r-project.org <mailto:models at r-project.org>
> Subject: Re: [R-sig-ME] Replicating type III anova tests for
> Dear Pr Fox,
>
> Thanks for your precision. But to summarize this test of, let's say 3
> parameters to 0 for a 4-levels factor, by a single value with its SE, as
> mentionned in Francesco's mail, the linear combination of these
> that is practically tested by this sum of square is needed, isn't it ?
>
> I mean, if really the parameters are all 0, whatever linear
> do the job, but type III sum of square just tests one of all possible
> combinations, right?
>
> By the way, I was always very annoyed by the fact that Type III sum
> squares are so dependent on coding, but that's another debate...
>
> Best regards,
>
> On Tue, Feb 23, 2016 at 04:15:02PM +0000, Fox, John wrote:
> < Dear Emmanuel,
> <
> < With proper contrast coding (i.e., a coding that's orthogonal in the
> of the design, such as provided by contr.sum() ), a "type-III" test is
> that the corresponding parameters are 0. The models in question
> generalized linear (mixed) models and so sums of squares aren't
> involved, but one could do the corresponding Wald (like
> test. The Wald test is what you'd get with multcomp:glht or
> car:linearHypothesis. BTW, I don't think that it would be hard for
> to be extended to provide LR tests in this case.
> <
> < Best,
> < John
>
> --
> Emmanuel CURIS
> emmanuel.curis at parisdescartes.fr
<mailto:emmanuel.curis at parisdescartes.fr>