[R-sig-ME] using lme for cov structures?
Viechtbauer Wolfgang (SP)
wolfgang.viechtbauer at maastrichtuniversity.nl
Wed Jul 26 15:43:17 CEST 2017
Quick note:
gls(opp ~ 1, correlation = corCompSymm(form = ~ 1 | id))
and
lme(opp ~ 1, random = ~ 1 | id)
are not exactly the same. Marginally, the two models are only identical when the variance component for 'id' in lme() is >= 0 (which implies that the correlation in the gls() model is >= 0). The gls() model however also allows for negative correlation.
For a heterogeneous CS structure, you would use:
gls(opp ~ 1, correlation = corCompSymm(form = ~ 1 | id), weights = varIdent(form = ~ 1 | timepoint))
where 'timepoint' is obviously a variable that indicates the time point for the 4 observations per individual.
lme(opp ~ 1, random = ~ 1 | id)
I don't understand why you want to use use 'random= ~1|one' in the first place.
Best,
Wolfgang
-----Original Message-----
From: R-sig-mixed-models [mailto:r-sig-mixed-models-bounces at r-project.org] On Behalf Of Ben Pelzer
Sent: Wednesday, July 26, 2017 13:37
To: r-sig-mixed-models at r-project.org
Subject: [R-sig-ME] using lme for cov structures?
Dear list,
With longitudinal data, the package nlme offers the possibility to
specify particular covariance structures for the residuals. In the
examples below I used data from 35 individuals measured at 4 time
points, so we have 4 observations nested in each of 35 individuals.
These data are discussed in Singer and Willett, Applied Longitudinal
Data Analysis, chapter 7.
In several sources I found that e.g. compound symmetry can easily be
obtained with gls from package nlme, by using the correlation structure
corCompSymm, as in:
comsym <- gls(opp~1,opposites,
correlation=corCompSymm(form = ~ 1 |id), method="REML")
where id is subject-identifier for the individual. With gls however one
cannot specify random effects, as opposed to lme. To have lme estimate
compound symmetry is simple, one would not even need have to specify a
particular correlation structure, it would suffice to say
"random=~1|id". However, for more complex covariance structures, e.g.
heterogeneous compound symmetry, I was only able to find syntax for gls,
but not for lme.
Then I thought that tricking lme might be an option by having a kind of
"fake" random effect. That is, I constructed a variable "one" which
takes value 1 for all cases, and let the intercept be random across "all
one groups". This led to the following lme model:
comsym.lme <- lme(opp~1,opposites, random= ~1|one,
correlation=corCompSymm(form = ~ 1 |one/id),
method="REML")
And actually to my surprise, the results of this lme are highly similar
to those of the gls above.
The output of both is attached below. The loglik's are identical, the
AIC and BIC are not, which I can understand, as the lme has an extra
variance to be estimated, compared to the gls. Also, the fixed
intercept's standard error is different, the one of the lme being about
twice as large.
I added some independent variables (not shown below) but the
similarities between gls and lme remain, with only the AIC and BIC and
the standard error of the fixed intercept being different for the two
models.
My question is threefold.
1) Suppose the individuals (say pupils) would be nested in schools, then
I assume that with lme I could add school as a random effect, and run a
"usual" model, with pupils nested in schools and observations in pupils,
and then use any of the possible residual covariance structures for the
observations in pupils. Would you agree with this? (with gls one cannot
use an additional random effect, like e.g. school)
2) Are the lme results indeed to be trusted when using this "fake"
random effect, apart from the differences with gls mentioned? Could you
imagine a situation where lme with this trick would produce wrong results?
3) I don't understand the variance of the intercept in the lme output.
Even when I specify a very simple model: lme(opp ~ 1, random = ~1|one,
opposites, method="REML")
lme is able to estimate the intercept variance...but what is this
variance estimate expressing?
Thanks a lot for any help!!!
Ben.
*----------------- gls ---------------------------------------------------
> comsym <- gls(opp~1,opposites,
correlation=corCompSymm(form = ~ 1 |id), method="REML")
> summary(comsym)
Generalized least squares fit by REML
Model: opp ~ 1
Data: opposites
AIC BIC logLik
1460.954 1469.757 -727.4769
Correlation Structure: Compound symmetry
Formula: ~1 | id
Parameter estimate(s):
Rho
0.2757052
Coefficients:
Value Std.Error t-value p-value
(Intercept) 204.8143 5.341965 38.34063 0
Standardized residuals:
Min Q1 Med Q3 Max
-2.75474868 -0.71244027 0.00397158 0.56533908 2.24944156
Residual standard error: 46.76081
Degrees of freedom: 140 total; 139 residual
#------------------ lme ---------------------------------------------------
> comsym.lme <- lme(opp~1,opposites, random= ~1|one,
correlation=corCompSymm(form = ~ 1 |one/id), method="REML")
> summary(comsym.lme)
Linear mixed-effects model fit by REML
Data: opposites
AIC BIC logLik
1462.954 1474.692 -727.4769
Random effects:
Formula: ~1 | one
(Intercept) Residual
StdDev: 10.53875 46.76081
Correlation Structure: Compound symmetry
Formula: ~1 | one/id
Parameter estimate(s):
Rho
0.2757052
Fixed effects: opp ~ 1
Value Std.Error DF t-value p-value
(Intercept) 204.8143 11.81532 139 17.33463 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.75474868 -0.71244027 0.00397158 0.56533908 2.24944156
Number of Observations: 140
Number of Groups: 1
More information about the R-sig-mixed-models
mailing list