[R-sig-ME] lme() vs aov()
Kingsford Jones
kingsfordjones at gmail.com
Thu May 22 22:54:42 CEST 2008
Hi Federico,
Note also that the intervals function is a good tool for checking
reliability of lme objects:
> mod.lme = lme(response ~ drug, random = ~1|source, dat)
> intervals(mod.lme)
Error in intervals.lme(mod.lme) :
Cannot get confidence intervals on var-cov components: Non-positive
definite approximate variance-covariance
Kingsford
On Thu, May 22, 2008 at 1:19 PM, Peter Dalgaard
<p.dalgaard at biostat.ku.dk> wrote:
> Federico Calboli wrote:
>>
>> Hi All,
>>
>> I was playing with a small dataset of 12 observations, a very basic nested
>> model, with 3 drugs, 2 sources for each drug and two response counts for
>> each source (the response is some medical parameter, of no real interest
>> here). The data is:
>>
>> drug source response
>> d1 a 102
>> d1 a 104
>> d1 q 103
>> d1 q 104
>> d2 d 108
>> d2 d 110
>> d2 b 109
>> d2 b 108
>> d3 l 104
>> d3 l 106
>> d3 s 105
>> d3 s 107
>>
>> For kicks, and because the data is balanced I thought that I could use it
>> to compare the results of aov() with those of lme() -- I know the library
>> lme4 and lmer() should be preferred, but the stuff I am ultimately testig
>> was done with lme.
>>
>> In any case I fit 2 models and got 2 different answers:
>>
>> > mod.lme = lme(response ~ drug, random = ~1|source, dat)
>> > mod.aov = aov(response ~ drug + Error(source), dat)
>>
>> > summary(mod.aov)
>>
>> Error: source
>> Df Sum Sq Mean Sq F value Pr(>F)
>> drug 2 61.167 30.583 61.167 0.003703 **
>> Residuals 3 1.500 0.500
>> ---
>> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>>
>> Error: Within
>> Df Sum Sq Mean Sq F value Pr(>F)
>> Residuals 6 9.0 1.5
>>
>>
>> > anova(mod.lme) # I use anova here to directly compare the F-test
>> numDF denDF F-value p-value
>> (Intercept) 1 6 115207.14 <.0001
>> drug 2 3 26.21 0.0126
>>
>> (incidentally the 3 denDF here make me think the F-test is exactly what
>> I'd expect)
>>
>> Because the results look different, I thought the possibilities are:
>>
>> 1) I fit 2 different models without realising it
>> 2) one model is more conservative than the other
>> 3) I'm completely missing some point (despite searching the archives of
>> R-help and R-ME)
>>
>> Just to be pesky, if I check the calculations against the book I got the
>> data from (Zar 4th ed, pgg 304-305) they agree with the aov() results.
>>
>> Any illumination is gratefully asked for. I apologise in advance for any
>> annoyance past/present/future my question will cause.
>>
> The gut reaction is that you shouldn't trust lme() in low-df cases, but in
> this particular case the issue is different:
>
>> summary(mod.aov)
>
> Error: source
> Df Sum Sq Mean Sq F value Pr(>F) drug 2 61.167 30.583
> 61.167 0.003703 **
> Residuals 3 1.500 0.500 ---
> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> Error: Within
> Df Sum Sq Mean Sq F value Pr(>F)
> Residuals 6 9.0 1.5
> Notice that the Residuals Mean Sq is larger in the Within stratum than in
> the source stratum. In terms of a mixed-effects model, this implies a
> negative estimate for the variance of the source effect. lme() will have
> nothing of that and sets it to zero instead. If you drop the Error(source)
> you get the same F as in lme() although the df differ.
>
> (The "negative variance" can be interpreted as negative within-source
> correlation, but that only works properly for balanced designs. Long
> story...)
>
> --
> O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
> c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
> (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
>
> _______________________________________________
> R-sig-mixed-models at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>
More information about the R-sig-mixed-models
mailing list