R/mixed_model_slopes.R
mixed_model_slopes.Rd
One of four related functions for mixed effects analyses (based on lmer
and as_lmerModLmerTest
) to get a linear model for downstream steps, or an ANOVA table.
mixed_model
mixed_anova
mixed_model_slopes
mixed_anova_slopes
.
mixed_model_slopes(
data,
Y_value,
Fixed_Factor,
Slopes_Factor,
Random_Factor,
...
)
a data table object, e.g. data.frame or tibble.
name of column containing quantitative (dependent) variable, provided within "quotes".
name(s) of categorical fixed factors (independent variables) provided as a vector if more than one or within "quotes".
name of factor to allow varying slopes on.
name(s) of random factors to allow random intercepts; to be provided as a vector when more than one or within "quotes".
any additional arguments to pass on to lmer
if required.
This function returns an S4 object of class "lmerModLmerTest".
These functions require a data table, one dependent variable (Y_value), one or more independent variables (Fixed_Factor), and at least one random factor (Random_Factor). These should match names of variables in the long-format data table exactly.
Outputs of mixed_model
and mixed_model_slopes
can be used for post-hoc comparisons with posthoc_Pairwise
, posthoc_Levelwise
, posthoc_vsRef
, posthoc_Trends_Pairwise
, posthoc_Trends_Levelwise
and posthoc_Trends_vsRef
or with emmeans
.
More than one fixed factors can be provided as a vector (e.g. c("A", "B")). A full model with interaction term is fitted.
This means when Y_value = Y, Fixed_factor = c("A", "B"), Random_factor = "R"
are entered as arguments, these are passed on as Y ~ A*B + (1|R)
(which is equivalent to Y ~ A + B + A:B + (1|R)
).
In mixed_model_slopes
and mixed_anova_slopes
, the following kind of formula is used: Y ~ A*B + (S|R)
(which is equivalent to Y ~ A + B + A:B + (S|R)
).
In this experimental implementation, random slopes and intercepts are fitted ((Slopes_Factor|Random_Factor)
). Only one term each is allowed for Slopes_Factor
and Random_Factor
.
#two fixed factors as a vector,
#exactly one slope factor and random factor
mod <- mixed_model_slopes(data = data_2w_Tdeath,
Y_value = "PI",
Fixed_Factor = c("Genotype", "Time"),
Slopes_Factor = "Time",
Random_Factor = "Experiment")
#> boundary (singular) fit: see help('isSingular')
#get summary
summary(mod)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: PI ~ Genotype * Time + (Time | Experiment)
#> Data: data_2w_Tdeath
#>
#> REML criterion at convergence: 132.9
#>
#> Scaled residuals:
#> Min 1Q Median 3Q Max
#> -1.74243 -0.50144 0.01573 0.55592 1.88600
#>
#> Random effects:
#> Groups Name Variance Std.Dev. Corr
#> Experiment (Intercept) 7.372 2.715
#> Timet300 1.231 1.110 1.00
#> Residual 24.327 4.932
#> Number of obs: 24, groups: Experiment, 6
#>
#> Fixed effects:
#> Estimate Std. Error df t value Pr(>|t|)
#> (Intercept) 23.841 2.299 12.624 10.373 1.53e-07 ***
#> GenotypeKO -16.918 2.848 15.000 -5.941 2.71e-05 ***
#> Timet300 13.563 2.883 14.912 4.704 0.000287 ***
#> GenotypeKO:Timet300 -10.293 4.027 15.000 -2.556 0.021937 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Correlation of Fixed Effects:
#> (Intr) GntyKO Tmt300
#> GenotypeKO -0.619
#> Timet300 -0.536 0.494
#> GntyKO:T300 0.438 -0.707 -0.698
#> optimizer (nloptwrap) convergence code: 0 (OK)
#> boundary (singular) fit: see help('isSingular')
#>