On 24 Mar 2018, at 8:30 am, Rolf Turner <r.turner at auckland.ac.nz> wrote:
On 24/03/18 10:52, Rolf Turner wrote:
On 24/03/18 08:58, Andrzej Galecki wrote:
Hi Louise,
One possible way ...
mSt <- fit.gls$modelStruct
cSt <- mSt$corStruct
coef(cSt, unconstrained = FALSE)
# Phi
# 0.1748786
Not exactly obvious, but, is it? How on earth would one ever figure this out, except by appealing to r-sig-mixed-models?
Looking at str(fit.gls) one sees that there is a (list) component "modelStruct" and that this component in turn has a component "corStruct". If one is an optimist, one might try
fit.gls$modelStruct$corStruct
which (mirabile dictu!) gives:
Correlation structure of class corAR1 representing
Phi
0.1748786
Again if one is an optimist, one might try stripping away all the unwanted baggage by doing
as.vector(fit.gls$modelStruct$corStruct)
giving:
[1] 0.3533897
Bingo.
Nope! ***NOT*** bingo!!! Louise just pointed out to me that what I got by applying as.vector(), i.e. 0.3533897, is not the same as the number one gets by just typing fit.gls$modelStruct$corStruct, which is 0.1748786 --- which is what Andrzej's approach gives (and which would
appear to be the right answer). Bit of a duhhh on my part.
Setting unconstrained=FALSE as in Andrzej's approach seems to be crucial. I missed that bit ....
But it still mystifies me why as.vector() doesn't give the same numeric value as is obtained from just printing the object in question. Also
looking at the code of nlme:::coef.corStruct I would have thought that
this function would simply throw an error when unconstrained is set to FALSE. (Just type "nlme:::coef.corStruct" and you'll see what I mean.)
If I set foo <- nlme:::coef.corStruct and then do
foo(fit.gls$modelStruct$corStruct)
I do indeed get an error. WTF?
There would appear to be no way for the results to be different (look
at the code) --- but different they are.
But that sort of nonsense is to be expected when S4 classes and methods are involved in any way.
cheers,
Rolf
--
Technical Editor ANZJS
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276