As Spencer Graves suggested, I tried this with continuous variables. Seems to work ok:
lme(maill6 ~ water * temp , random= ~1|rep, data = milk)
Linear mixed-effects model fit by REML
Data: milk
Log-restricted-likelihood: -10.57237
Fixed: maill6 ~ water * temp
(Intercept) water temp water:temp
-1.107227891 0.928965420 0.032507653 -0.008792517
Random effects:
Formula: ~1 | rep
(Intercept) Residual
StdDev: 0.1358565 0.2189339
Number of Observations: 27
Number of Groups: 3
For the smaller model, I get:
lme(maill6 ~ water + temp , random= ~1|rep, data = milk)
Linear mixed-effects model fit by REML
Data: milk
Log-restricted-likelihood: -8.068963
Fixed: maill6 ~ water + temp
(Intercept) water temp
1.17083333 -0.05819444 0.01212500
Random effects:
Formula: ~1 | rep
(Intercept) Residual
StdDev: 0.1328748 0.2348303
Number of Observations: 27
Number of Groups: 3
Cheers,
Dick
*******************************************************************************
Richard P. Beyer, Ph.D. University of Washington
Tel.:(206) 616 7378 Env. & Occ. Health Sci. , Box 354695
Fax: (206) 685 4696 4225 Roosevelt Way NE, # 100
Seattle, WA 98105-6099
http://depts.washington.edu/ceeh/ServiceCores/FC5/FC5.html
*******************************************************************************
Message: 14
Date: Mon, 23 Feb 2004 07:41:07 -0800
From: Spencer Graves <spencer.graves at pdf.com>
Subject: Re: [R] lme - problems with model
To: CG Pettersson <cg.pettersson at evp.slu.se>
Cc: Douglas Bates <bates at stat.wisc.edu>, r-help at stat.math.ethz.ch
Message-ID: <403A1F13.7000008 at pdf.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
If you want to try to get the same answers as PROC MIXED, I
suggest you try to figure out how SAS codes interactions and which ones
it retains. Then you can try code those manually and include them as
separate explanatory variables, e.g., I((water=="2")&(temp==110)). You
could work this out in "lm" then try the result on "lme".
An alternative would be to convert "temp" from a factor to a
continuous variable. I would make plots of the response variables vs.
"temp" with different lines and symbols for "water" and "rep" to make
sure I had something that was mostly linear in some transformation of
"temp".
hope this helps.
spencer graves
CG Pettersson wrote:
Thanks a lot for the answer! Now, I only have the last one left - How do I get round it? I knew about the missing cells in the design, but didn´t know how lme would react on them. In this case, I can remove the water:temp term, but how can I be sure that this is the right thing to do? Is the lm run without the random term enough for removing water:temp from the lme model, or do I have to do a PROC MIXED run with the random term to make that decision in a case like this? Is it possible (for me) to understand why MIXED accepts the design but not lme? They ought to get the same sort of problems, or have I missed something? /CG -------------------
CG Pettersson <cg.pettersson at evp.slu.se> writes:
Hello all!
I´m working with some training datasets in a SAS-based course,
trying
to do the same things in lme that I do in PROC MIXED.
Why don´t lme do an analysis on this dataset when I use the model
water*temp?
The trouble comes from the water:temp term, as it works with
water+temp.
The data are, indeed, assymetric but lm accepts the water:temp
term
giving results in the F-test near what PROC MIXED produces. MIXED
accepts the model.
The water:temp term can be removed from the model according to the
F-test in SAS (and to the lm model without any random term). Doing
so
in both MIXED and lme gives reasonably similar results for both
systems.
What do the error message mean, and how can I get around this?
Because of missing cells in the design
xtabs(~water + temp, milk)
temp water 100 110 120 140 1 3 3 3 0 2 3 0 3 3 3 3 3 0 3 the model matrix for the fixed effects is rank deficient. In lm the rank deficiency is detected and appropriate adjustments made
coef(summary(lm(maill6 ~ water * temp, milk)))
Estimate Std. Error t value Pr(>|t|) (Intercept) 2.17666667 0.1142339 19.0544730 2.218661e-13 water2 0.28333333 0.1615511 1.7538308 9.647013e-02 water3 0.05333333 0.1615511 0.3301329 7.451108e-01 temp110 0.14000000 0.1615511 0.8665987 3.975669e-01 temp120 0.31333333 0.1615511 1.9395305 6.827304e-02 temp140 0.23333333 0.1615511 1.4443312 1.658280e-01 water3:temp110 -0.18666667 0.2284678 -0.8170371 4.245898e-01 water2:temp120 0.09666667 0.2284678 0.4231085 6.772282e-01 water2:temp140 0.21666667 0.2284678 0.9483467 3.555125e-01 Notice that you would expect 6 degrees of freedom for the
interaction
term but only three coefficients are estimated. In lme it is much more difficult to compensate for such rank deficiencies because they could be systematic, like this, or they could be due to relative precision parameters approaching zero
during
the iterations. Because of this we just report the error (although admittedly we could be a bit more explicit about the nature of the problem - we are reporting the symptom that we detect, not the probable cause).
The dataset:
milk
water temp rep maill4 maill6 maill8 taste4 taste6 taste8
1 1 100 1 2.90 2.13 2.39 10.1 10.0 9.6
2 1 100 2 2.19 2.20 2.27 11.0 9.3 11.0
3 1 100 3 2.13 2.20 2.41 10.1 7.0 9.6
4 1 110 1 2.13 2.34 2.41 11.0 10.5 9.8
5 1 110 2 2.32 2.27 2.25 11.0 11.3 11.2
6 1 110 3 2.13 2.34 2.42 9.4 10.7 9.0
7 1 120 1 2.00 2.49 2.71 11.1 11.2 11.4
8 1 120 2 2.41 2.49 2.46 11.6 11.7 9.6
9 1 120 3 2.22 2.49 2.73 10.7 10.3 10.2
10 2 100 1 2.13 2.41 2.49 11.1 10.8 11.2
11 2 100 2 2.49 2.34 2.53 11.1 11.2 9.2
12 2 100 3 2.80 2.63 3.33 8.3 9.7 7.8
13 2 120 1 2.38 2.85 2.06 11.9 11.2 11.2
14 2 120 2 2.61 2.70 2.70 11.7 10.8 11.0
15 2 120 3 2.77 3.06 3.25 10.9 9.0 9.4
16 2 140 1 2.56 2.84 3.10 10.7 11.2 9.8
17 2 140 2 2.63 2.61 2.81 10.8 11.0 11.6
18 2 140 3 2.99 3.28 3.75 9.2 9.6 9.6
19 3 100 1 2.60 2.24 2.32 10.8 8.4 10.8
20 3 100 2 2.06 2.11 2.20 11.0 11.2 11.8
21 3 100 3 1.98 2.34 2.80 10.3 10.2 10.6
22 3 110 1 1.91 2.06 2.29 11.0 11.4 9.4
23 3 110 2 1.98 1.98 2.15 10.0 11.8 10.6
24 3 110 3 1.98 2.51 2.81 9.3 9.2 10.2
25 3 140 1 2.27 2.42 2.72 10.8 11.6 12.0
26 3 140 2 2.27 2.20 2.41 11.2 11.0 11.4
27 3 140 3 2.20 2.77 3.06 10.5 10.2 10.0
The failing model:
lme(maill6 ~ water * temp , random= ~1|rep, data = milk)
Error in MEEM(object, conLin, control$niterEM) :
Singularity in backsolve at level 0, block 1
The smaller (working) model:
lme(maill6 ~ water + temp , random= ~1|rep, data = milk)
Linear mixed-effects model fit by REML
Data: milk
Log-restricted-likelihood: 4.922178
Fixed: maill6 ~ water + temp
(Intercept) water2 water3 temp110 temp120
temp140
2.19466667 0.32800000 -0.04533333 0.07800000 0.32133333
0.35066667
Random effects:
Formula: ~1 | rep
(Intercept) Residual
StdDev: 0.1477760 0.1323057
Number of Observations: 27
Number of Groups: 3
CG Pettersson, MSci, PhD Stud.
Swedish University of Agricultural Sciences
Dep. of Ecology and Crop Production. Box 7043
SE-750 07 Uppsala
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html -- Douglas Bates bates at stat.wisc.edu Statistics Department 608/262-2598 University of Wisconsin - Madison http://www.stat.wisc.edu/~bates/ CG Pettersson, MSci, PhD Stud. Swedish University of Agricultural Sciences Dep. of Ecology and Crop Production. Box 7043 SE-750 07 Uppsala ______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html