[R-sig-ME] nlmer model specification
Ben Bolker
bbolker at gmail.com
Tue Dec 21 22:16:50 CET 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 10-12-21 02:43 PM, James Widman wrote:
> Happy Holidays to All,
>
> I'm trying to use nlmer to model some data from an experiment I ran and
> am having some trouble specifying the model correctly. Would appreciate
> any insight you can provide.
>
> I am examining the growth of fish fed two diets over 9 weeks - with
> weekly measurements. Thirty fish were placed in each of 8 tanks, 4 tanks
> fed foodtype NRD and 4 tanks fed foodtype OTO.
> Unbalanced data due to mortality.
> I'm trying to fit a nlmer to the data and want to make sure I have
> specified the model correctly. I can provide additional information if
> needed.
> This is what I came up with and have tried a number of alternatives but
> don't seem to be progressing. I realize the model will probably be
> simplified.
>
> foodtype should be a fixed effect.
>
Hmmm. It's not obvious to me from looking at the ?lmer page how one
would go about fitting this sort of 'split-plot' design in lmer: I see
how one would allow all three variables to vary among tanks and among
fish within tanks:
nlmer(Weight..g. ~ SSgompertz(week, Asym, a, b) ~
Asym+b+c|tankf/FishIDf, ...)
If there weren't a problem with specifying a fixed effect with only
two types, we could do
nlmer(Weight..g. ~ SSgompertz(week, Asym, a, b) ~
Asym+b+c|foodtype/tankf/FishIDf, ...)
but that probably won't work well.
My next try, unless someone on the list has a better solution, would
probably be to try this in AD Model Builder.
(I just got a copy of Madsen and Thyregod "Intro to general and
generalized linear models", which has an interesting section on
extending the orange-tree analysis (?Orange) using Laplace
approximations coded around nlme and using AD Model Builder ...)
Ben Bolker
>> str(scupgrowth)
> 'data.frame': 2925 obs. of 11 variables:
> $ StartDate : Factor w/ 1 level "2008/07/29": 1 1 1 1 1 1 1 1 1 1 ...
> $ SampleDate : Factor w/ 10 levels "2008/07/29","2008/08/05",..: 1 1 1
> 1 1 1 1 1 1 1 ...
> $ FishID : int 1 2 3 4 5 6 7 8 9 10 ...
> $ Length..mm.: int 38 39 34 33 36 40 39 34 32 35 ...
> $ Weight..g. : num 0.64 0.81 0.47 0.48 0.62 0.78 0.7 0.47 0.47 0.62 ...
> $ Tank : int 1 1 1 1 1 1 1 1 1 1 ...
> $ Days : int 0 0 0 0 0 0 0 0 0 0 ...
> $ FishIDf : Factor w/ 2925 levels "1","2","3","4",..: 1 2 3 4 5 6 7
> 8 9 10 ...
> $ foodtype : Factor w/ 2 levels "NRD","OTO": 1 1 1 1 1 1 1 1 1 1 ...
> $ tankf : Factor w/ 8 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1
> 1 ...
> $ week : num 0 0 0 0 0 0 0 0 0 0 ...
>> (nlm1 <- nlmer(Weight..g. ~ SSgompertz(week, Asym, a, b) ~ foodtype +
> tankf + tankf|FishIDf,
> + scupgrowth, start = c(Asym = 72.70484, a = 5.34048, b = 0.83792)))
> Nonlinear mixed model fit by the Laplace approximation
> Formula: Weight..g. ~ SSgompertz(week, Asym, a, b) ~ foodtype + tankf
> + tankf | FishIDf
> Data: scupgrowth
> AIC BIC logLik deviance
> 6010 6249 -2965 5930
> Random effects:
> Groups Name Variance Std.Dev. Corr
> FishIDf foodtypeOTO 4.7489e-06 0.0021792
> tankf2 2.8193e-04 0.0167909 -0.829
> tankf3 1.4213e-04 0.0119219 0.001 0.110
> tankf4 2.0968e-04 0.0144804 -0.913 0.759 0.056
> tankf5 1.8160e-04 0.0134760 -0.023 -0.007 -0.035 0.019
> tankf6 3.7620e-04 0.0193958 -0.800 0.704 0.014 0.731
> -0.260
> tankf7 2.0907e-04 0.0144592 0.023 -0.195 -0.062 -0.022
> -0.038
> tankf8 3.4983e-04 0.0187038 -0.958 0.701 -0.033 0.870
> 0.222
> Residual 1.1874e+00 1.0896851
>
> -0.021
> 0.702 -0.107
>
> Number of obs: 2925, groups: FishIDf, 2925
>
> Fixed effects:
> Estimate Std. Error t value
> Asym 90.150991 5.205204 17.32
> a 5.160145 0.042640 121.02
> b 0.868886 0.003198 271.73
>
> Correlation of Fixed Effects:
> Asym a
> a 0.748
> b 0.970 0.576
>
> When I tried the following I get an error.
> (nlm1 <- nlmer(Weight..g. ~ SSgompertz(week, Asym, a, b) ~ (1 |
> foodtype) + tankf + tankf|FishIDf,
> + scupgrowth, start = c(Asym = 72.70484, a = 5.34048, b = 0.83792)))
> Error in model.matrix.default(eval(substitute(~expr, list(expr =
> x[[2]]))), :
> model frame and formula mismatch in model.matrix()
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk0RGUIACgkQc5UpGjwzenPswwCfUo5zcC9OBCKRTwwoUuGBrr0k
8xEAmwa6mpJaboeDXTZrod8jqqDbBXj4
=VpL8
-----END PGP SIGNATURE-----
More information about the R-sig-mixed-models
mailing list