[R-sig-ME] significance of slope (different than zero) in triple interaction
Lenth, Russell V
ru@@ell-lenth @ending from uiow@@edu
Wed Sep 5 18:38:44 CEST 2018
I’m confused. Do you want to test the slopes against zero, or against 1? I ask because you note that most of the confidence intervals include 1. To test against 1, add `null = 1.0` to the summary() call. To perform an equivalence test that the slopes do not differ from 1 by more than a specified threshold, also add `delta = (desired threshold)` to the call. See help(“summary.emmGrid”) for details.
Russ
From: Guillaume Adeux <guillaumesimon.a2 using gmail.com>
Sent: Wednesday, September 5, 2018 10:13 AM
To: Lenth, Russell V <russell-lenth using uiowa.edu>
Cc: R-mixed models mailing list <r-sig-mixed-models using r-project.org>
Subject: Re: [R-sig-ME] significance of slope (different than zero) in triple interaction
Hi Russell,
Thank you very much for your answer. It's very nice of you.
I ran what you recommended and it produced the following output:
> em=emtrends(mod1,~syst|timing,var="year")
> summary(em,infer=c(TRUE,TRUE))
timing = après2:
syst year.trend SE df asymp.LCL asymp.UCL z.ratio p.value
S1 -0.9946823 0.05952514 Inf -1.1113495 -0.8780152 -16.710 <.0001
S2 -0.8997828 0.07019881 Inf -1.0373699 -0.7621956 -12.818 <.0001
S3 -0.8885606 0.06511346 Inf -1.0161806 -0.7609405 -13.646 <.0001
S4 -0.9976324 0.06288404 Inf -1.1208828 -0.8743819 -15.865 <.0001
S5 -0.7435081 0.06728649 Inf -0.8753872 -0.6116291 -11.050 <.0001
timing = avant1:
syst year.trend SE df asymp.LCL asymp.UCL z.ratio p.value
S1 -0.9758510 0.05696640 Inf -1.0875031 -0.8641990 -17.130 <.0001
S2 -0.9170666 0.06973012 Inf -1.0537351 -0.7803980 -13.152 <.0001
S3 -0.8793391 0.06482135 Inf -1.0063867 -0.7522916 -13.566 <.0001
S4 -1.0951932 0.06253345 Inf -1.2177565 -0.9726298 -17.514 <.0001
S5 -0.8061455 0.06589310 Inf -0.9352936 -0.6769974 -12.234 <.0001
However, I find this highly surprising because I know the slopes are not different than 0 for at least 4 of my systems at level "après2" (which means after). We can actually see that the confidence interval for all levels of syst at "timing=après2" embrace 1.
Do you have any explanation to this?
Thanks again for your interest.
Guillaume ADEUX
=========================
Le mer. 5 sept. 2018 à 16:25, Lenth, Russell V <mailto:russell-lenth using uiowa.edu> a écrit :
I'm a little confused because you refer to predictors by different names in different places, and 'year' seems to be used as both a covariate and a grouping factor. But try something like this:
library(emmeans)
emt <- emtrends(mod, ~ syst:timing, var = "year")
summary(emt, infer = c(TRUE, TRUE))
This will estimate the slope for year at each combination of the two factors syst and timing. (You may need to re-fit the model after creating an additional variable, say WEED$syear <- scale(WEED$year), and with syear in place of scale(year) in the model formula and the emtrends call. You may follow-up with call(s) to emmeans::contrast(emt, ...) to compare or contrast these slopes.
Hope that helps.
-- Russ
Russell V. Lenth - Professor Emeritus
Department of Statistics and Actuarial Science
The University of Iowa - Iowa City, IA 52242 USA
Voice (319)335-0712 (Dept. office) - FAX (319)335-3017
-----Original Message-----
Date: Wed, 5 Sep 2018 10:43:39 +0200
From: Guillaume Adeux <mailto:guillaumesimon.a2 using gmail.com>
To: R-mixed models mailing list <mailto:r-sig-mixed-models using r-project.org>
Subject: [R-sig-ME] significance of slope (different than zero) in
triple interaction
Hi mixmoders,
I have the following model:
mod=glmer(Weed_density~block+scale(year)*syst*timing+(1|year)+(1|plot)+(1|plot:year)+(1|ID_quadrat)+(1|OLRE)+offset(log(size_quadrat)),family=poisson(link="log"),dat=WEED)
I have a significant triple interaction between time : treatment : season.
Time is continuous, syst(=treatment) has 5 levels and season(=sampling
session) has two levels.
Here is the model output:
Generalized linear mixed model fit by maximum likelihood (Laplace
Approximation) ['glmerMod']
Family: poisson ( log )
Formula: WDall ~ block + scale(year) * syst * timing + (1 | year) + (1
| plot) + (1 | plot:year) + (1 | ID_quadrat) + (1 | OLRE) +
offset(log(size_quadrat))
Data: WEED_paired_2
Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e+05))
AIC BIC logLik deviance df.resid
21206.3 21371.9 -10577.2 21154.3 4286
Scaled residuals:
Min 1Q Median 3Q Max
-1.6531 -0.4373 -0.1646 0.1426 2.6313
Random effects:
Groups Name Variance Std.Dev.
OLRE (Intercept) 4.456e-01 6.675e-01
ID_quadrat (Intercept) 1.011e+00 1.006e+00 plot:year (Intercept) 1.429e+00 1.195e+00
year (Intercept) 5.635e-15 7.506e-08
plot (Intercept) 0.000e+00 0.000e+00
Number of obs: 4312, groups: OLRE, 4312; ID_quadrat, 2156; plot:year, 86; year, 17; plot, 10
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.84765 0.33352 -2.542 0.011036 *
blockD -0.28663 0.27596 -1.039 0.298971
scale(year) 0.11385 0.25128 0.453 0.650500
systS2 2.21797 0.43765 5.068 4.02e-07 ***
systS3 2.97934 0.42857 6.952 3.61e-12 ***
systS4 2.64787 0.43488 6.089 1.14e-09 ***
systS5 0.55059 0.45565 1.208 0.226912
timingavant1 1.87971 0.10286 18.275 < 2e-16 ***
scale(year):systS2 0.40061 0.38882 1.030 0.302863
scale(year):systS3 0.44798 0.37297 1.201 0.229698
scale(year):systS4 -0.01245 0.36549 -0.034 0.972819
scale(year):systS5 1.06031 0.37957 2.793 0.005215 **
scale(year):timingavant1 0.07949 0.09954 0.799 0.424489
systS2:timingavant1 -0.36039 0.12128 -2.972 0.002963 **
systS3:timingavant1 -0.56704 0.11777 -4.815 1.47e-06 ***
systS4:timingavant1 -0.39785 0.11984 -3.320 0.000901 ***
systS5:timingavant1 -0.06724 0.14990 -0.449 0.653770
scale(year):systS2:timingavant1 -0.15246 0.11992 -1.271 0.203628
scale(year):systS3:timingavant1 -0.04057 0.11556 -0.351 0.725543
scale(year):systS4:timingavant1 -0.49134 0.11614 -4.231 2.33e-05 ***
scale(year):systS5:timingavant1 -0.34391 0.13427 -2.561 0.010429 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
I wish to set up constrats to test if the slopes for scale(year):syst differ from zero at level 1 of timing.
It seems like we can do this with testInteractions but I'm not sure if my set up is correct:
testInteractions(mod1,custom=list(syst=c(1,0,0,0,0),timing=c(1,0)),
slope="scale(year)", adjustment="none")
The preceding code yields the following:
Adjusted slope for scale(year)
Chisq Test:
P-value adjustment method: none
Value Df Chisq Pr(>Chisq)
syst1 : timing1 -0.82831 1 0.6464 0.4214
This doesn't seem correct because Value doesn't represent the slope for the first level of "syst" at the first level of "timing".
Could anyone shed their light?
Thank you very much!
Guillaume ADEUX
More information about the R-sig-mixed-models
mailing list