[R] extracting nested variances from lme4 model
Spencer Graves
spencer.graves at pdf.com
Sun Oct 15 04:00:06 CEST 2006
You want to estimate a different 'cs' variance for each level of
'trth', as indicated by the following summary from your 'fake data set':
> tapply(dtf$x, dtf$trth, sd)
FALSE TRUE
1.532251 8.378206
Since var(x[trth]) > var(x[!trth]), I thought that the following
should produce this:
mod1.<-lmer( x ~ (1|rtr)+ (trth|cs) , data=dtf)
Unfortunately, this generates an error for me:
Error in lmer(x ~ (1 | rtr) + (trth | cs), data = dtf) :
the leading minor of order 1 is not positive definite
I do not understand this error, and I don't have other ideas about
how to get around it using 'lmer'. It seems to me that 'lme' in
library(nlme) should also be able to handle this problem, but 'lme' is
designed for nested factors, and your 'rtr' and 'cs' are crossed. If it
were my problem, I think I'd study ch. 4 and possibly ch. 5 of Pinheiro
and Bates (2000) Mixed-Effects Models in S and S-Plus (Springer) on
'pdMat' and 'corrStruct' classes, because I believe those may support
models with crossed random effects like in your example AND might also
support estimating different variance components for different levels of
a fixed effect like 'trth' in your example.
If we are lucky, someone else might educate us both.
I'm sorry I couldn't answer your question, but I hope these
comments might help in some way.
Spencer Graves
Frank Samuelson wrote:
> I have a model:
> mod1<-lmer( x ~ (1|rtr)+ trth/(1|cs) , data=dtf) #
>
> Here, cs and rtr are crossed random effects.
> cs 1-5 are of type TRUE, cs 6-10 are of type FALSE,
> so cs is nested in trth, which is fixed.
> So for cs I should get a fit for 1-5 and 6-10.
>
> This appears to be the case from the random effects:
> > mean( ranef(mod1)$cs[[1]][1:5] )
> [1] -2.498002e-16
> > var( ranef(mod1)$cs[[1]][1:5] )
> [1] 23.53083
> > mean( ranef(mod1)$cs[[1]][6:10] )
> [1] 2.706169e-16
> > var( ranef(mod1)$cs[[1]][6:10] )
> [1] 1.001065
>
> However VarCorr(mod1) gives me only
> a single variance estimate for the cases.
> How do I get the other variance estimate?
>
> Thanks for any help.
>
> -Frank
>
>
>
> My fake data set:
> -------------------------------------------
> data:
> $frame
> x rtr trth cs
> 1 -4.4964808 1 TRUE 1
> 2 -0.6297254 1 TRUE 2
> 3 1.8062857 1 TRUE 3
> 4 2.7273275 1 TRUE 4
> 5 -0.6297254 1 TRUE 5
> 6 -1.3331767 1 FALSE 6
> 7 -0.3055796 1 FALSE 7
> 8 1.3331767 1 FALSE 8
> 9 0.1574314 1 FALSE 9
> 10 -0.1574314 1 FALSE 10
> 11 -3.0958803 2 TRUE 1
> 12 12.4601615 2 TRUE 2
> 13 -5.2363532 2 TRUE 3
> 14 1.5419810 2 TRUE 4
> 15 7.7071005 2 TRUE 5
> 16 -0.3854953 2 FALSE 6
> 17 0.7673098 2 FALSE 7
> 18 2.9485984 2 FALSE 8
> 19 0.3854953 2 FALSE 9
> 20 -0.3716558 2 FALSE 10
> 21 -6.4139940 3 TRUE 1
> 22 -3.8162344 3 TRUE 2
> 23 -11.0518554 3 TRUE 3
> 24 2.7462631 3 TRUE 4
> 25 16.2543990 3 TRUE 5
> 26 -1.7353668 3 FALSE 6
> 27 1.3521369 3 FALSE 7
> 28 1.3521369 3 FALSE 8
> 29 0.2054067 3 FALSE 9
> 30 -1.7446691 3 FALSE 10
> 31 -6.7468356 4 TRUE 1
> 32 -11.3228243 4 TRUE 2
> 33 -18.0088554 4 TRUE 3
> 34 4.6264891 4 TRUE 4
> 35 9.2973991 4 TRUE 5
> 36 -4.1122576 4 FALSE 6
> 37 -0.5091994 4 FALSE 7
> 38 1.2787085 4 FALSE 8
> 39 -1.6867089 4 FALSE 9
> 40 -0.5091994 4 FALSE 10
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list