How can one add a quadratic random effect to a nonlinear mixed effect model? I've been trying to do this with nlmer without luck. Any tips would be greatly appreciated!
Edit: as diagnosed by Ben, the root problem is that I am trying to shoehorn a numeric variable into the role of a (categorical, non-numeric) grouping variable.
Here's my starting point that works fine:
nlmem <- nlmer(value ~ nfun(x, y0) ~ (y0|site) + (y0|gas:CTG), data=data.plot, start=initial.guesses)
…and my failed attempts upon changing the formula to include a quadratic random effect:
value ~ nfun(x, y0) ~ (y0|site) + (y0|gas:CTG) + (y0|CTG*CTG) Error: Invalid grouping factor specification, CTG * CTG In addition: Warning message: In Ops.factor(CTG, CTG) : * not meaningful for factors value ~ nfun(x, y0) ~ (y0|site) + (y0|gas:CTG) + (y0|poly(CTG, 2)) Error: couldn't evaluate grouping factor poly(CTG, 2) within model frame: try adding grouping factor to data frame explicitly if possible In addition: Warning messages: 1: In mean.default(x) : argument is not numeric or logical: returning NA 2: In Ops.factor(x, xbar) : - not meaningful for factors value ~ nfun(x, y0) ~ (y0|site) + (y0|gas:CTG) + (y0|I(CTG^2)) Error: Invalid grouping factor specification, I(CTG^2) In addition: Warning message: In Ops.factor(CTG, 2) : ^ not meaningful for factors
CTG is numeric, not a factor. Not sure why the error message is complaining about it being a factor.
class(data.plot$CTG) [1] "numeric"
Best Answer
If CTG
is numeric you shouldn't be using it as a grouping variable (the right-hand side of a (f|g)
random effect specification). A grouping variable (g
) should always be a categorical/factor variable, or something that can meaningfully be coerced to such.
A possible reason for such a confusion is that, for a categorical effect f
,
(1|f:g)
describes the variation among categories within groups (a single variance parameter);(f|g)
describes the variation among effects across groups (i.e., a variance-covariance matrix among the baseline group and differences among groups). If this variance-covariance matrix is restricted to a positive compound-symmetric structure, e.g.
$$ Sigma = left( begin{array}{cccc} sigma^2 & rho sigma^2 & rho sigma^2 & ldots \ rho sigma^2 & sigma^2 & rho sigma^2& ldots \ vdots & vdots & vdots & ddots end{array} right) $$
(with $rho>0$; notation isn't perfect, but you get the idea) — this is theoretically possible, but not in lme4
at the moment — then you would get exactly the same answer.
Traditionally, with models that only allow among-group differences in the intercept, people have gotten used to thinking about (1|f:g)
as the way to model an interaction between a categorical (fixed-effect) predictor and a random grouping variable, so the distinction between effects and grouping variables tends to get blurred.
I think you're looking for a random (quadratic) slopes model, i.e. if nfun
is a quadratic function a+b*x+c*x^2
then you would use
value ~ nfun(x, a,b,c) ~ (a+b+c|site)
(although for a polynomial model you could just use a linear mixed model with x
and I(x^2)
terms).
Similar Posts:
- Solved – ” random effects must be less than the number of observations” error in lmer package
- Solved – lmer syntax for a two-way model with one fixed and one random factor
- Solved – Random effect specification in lmer mixed effect model
- Solved – How to compute significant interaction estimates when main effect is not significant
- Solved – where to specify covariates in a linear mixed effect model