[R] lme cant get parameter estimated correctly
Bill.Venables at csiro.au
Bill.Venables at csiro.au
Sun Apr 6 08:50:37 CEST 2008
Here is a demo you may like to consider. (I can see what you are trying
to do with your loops, but I prefer to do it this way.)
On 32 bit Windows, (which I am forced to use), your seed is not a valid
integer, so I have changed it to something which is.
> set.seed(7658943)
>
> fph <- 0.4
> Sigh <- sqrt(0.0002)
> Sigi <- sqrt(0.04)
>
> reH <- rnorm(90, fph, Sigh) ## hospid effects
> dta <- within(expand.grid(hospid = 1:90, empid = 1:80),
fpi1 <- reH[hospid] + rnorm(7200, fph, Sigi))
>
> require(nlme)
>
> Modl <- lme(fpi1 ~ 1, data = dta, random = ~1|hospid)
> summary(Modl)
Linear mixed-effects model fit by REML
.........
Random effects:
Formula: ~1 | hospid
(Intercept) Residual
StdDev: 0.01593939 0.2003148
.........
Compare this with what you started with, viz:
> c(Sigh, Sigi)
[1] 0.01414214 0.20000000
and it doesn't look too bad to me. You might like to see how well the
effects themselves agree:
> plot(ranef(Modl)[[1]], reH-fph)
> abline(0,1)
> cor(ranef(Modl)[[1]], reH)
[1] 0.6317546
Again, about what I would expect.
Note that the summary to lme objects gives standard deviations, not
variance components. If you want to see variance components, there is a
function in the 'ape' package which does it:
> require(ape)
> varcomp(Modl)
hospid Within
0.0002540641 0.0401260303
Look familiar?
Bill Venables
CSIRO Laboratories
PO Box 120, Cleveland, 4163
AUSTRALIA
Office Phone (email preferred): +61 7 3826 7251
Fax (if absolutely necessary): +61 7 3826 7304
Mobile: +61 4 8819 4402
Home Phone: +61 7 3286 7700
mailto:Bill.Venables at csiro.au
http://www.cmis.csiro.au/bill.venables/
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of toby909
Sent: Sunday, 6 April 2008 3:27 PM
To: r-help at stat.math.ethz.ch
Subject: [R] lme cant get parameter estimated correctly
I am caught in a mental trap. Why isn't the between groups variance
estimated
(0.0038) to be around the value with which I generated the data
(0.0002)?
Thanks Toby
set.seed(76589437887)
fph = 0.4
Sigh = sqrt(0.0002)
Sigi = sqrt(0.04)
ci = 1
fpi = matrix(,7200,3)
for (i in 1:90) {
fph = rnorm(1, fph, Sigh)
for (k in 1:80) {
fpi[ci,1:3] = matrix(c(i, k, rnorm(1, fph, Sigi)),1)
ci = ci+1
}
}
colnames(fpi) = c("hospid", "empid", "fpi1")
dta = as.data.frame(fpi)
lme = lme(fpi1 ~ 1, dta, ~1|hospid)
summary(lme)
lme = lme(fpi1 ~ 1, dta, ~1|hospid)
summary(lme)
Linear mixed-effects model fit by REML
Data: dta
AIC BIC logLik
-2555.416 -2534.771 1280.708
Random effects:
Formula: ~1 | hospid
(Intercept) Residual
StdDev: 0.06173257 0.1997302
Fixed effects: fpi1 ~ 1
Value Std.Error DF t-value p-value
(Intercept) 0.368082 0.006919828 7110 53.19236 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.4870696 -0.6747173 -0.0048658 0.6838012 4.2633384
Number of Observations: 7200
Number of Groups: 90
0.0617^2
[1] 0.00380689
______________________________________________
R-help at r-project.org 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