[R] Extracting Phi from gls/lme

Peter Dalgaard p.dalgaard at biostat.ku.dk
Thu Jul 13 15:24:11 CEST 2006


John Logsdon <j.logsdon at quantex-research.com> writes:

> Peter
> 
> This looks very promising:
> 
> x<-mod.lme$model$Struct$corStruct
> Correlation structure of class corAR1 representing
>        Phi
> -0.1996813
> 
> which is the value I want.  
> 
> Yippee (save the bricks)
> 
> But:
> 
> coef(x,unconstrained=FALSE)
> [1] -0.4048011
> 
> and any attempt to coerce x into a scalar always returns -0.404...

Works for me. Is there a rogue coef() around?? Or did you misspell
"unconstrained" and not tell us?

> coef(x,uncostrained=FALSE)
[1] 0.1171201
> coef(x,unconstrained=FALSE)
       Phi
0.05849318
 

 
> This is not an obvious transformation of the -0.1996813 I think.

Obvious is in the eyes of the beholder, but:

> aux <- exp(-0.4048011)
> (aux - 1) / (aux + 1)
[1] -0.1996813

> Looking at str(x) returns the first line:
> 
> Classes 'corAR1', 'corStruct' atomic [1:1] -0.405
> 
> Not a -0.199 ... in sight in the attributes various.
> 
> How does summary.lme/gls do it?

I don't think they do anything, but their print methods call
print.corStruct which calls coef.corAR1. And

> getAnywhere(coef.corAR1)
A single object matching coef.corAR1 was found
It was found in the following places
  registered S3 method for coef from namespace nlme
  namespace:nlme
with value

function (object, unconstrained = TRUE, ...)
{
    if (unconstrained) {
        if (attr(object, "fixed")) {
            return(numeric(0))
        }
        else {
            return(as.vector(object))
        }
    }
    aux <- exp(as.vector(object))
    aux <- c((aux - 1)/(aux + 1))
    names(aux) <- "Phi"
    aux
}
<environment: namespace:nlme>
> aux <- exp(-0.4048011


 
> Best wishes
> 
> John
> 
> John Logsdon                               "Try to make things as simple
> Quantex Research Ltd, Manchester UK         as possible but not simpler"
> j.logsdon at quantex-research.com              a.einstein at relativity.org
> +44(0)161 445 4951/G:+44(0)7717758675       www.quantex-research.com
> 
> 
> On 13 Jul 2006, Peter Dalgaard wrote:
> 
> > John Logsdon <j.logsdon at quantex-research.com> writes:
> > 
> > > I am trying to extract into a scalar the value of Phi from the printed
> > > output of gls or lme using corAR1 correlation.  ie I want the estimate of
> > > the autocorrelation.  I can't see how to do this and haven't seen it
> > > anywhere in str(model.lme).
> > > 
> > > I can get all the other information - fixed and random effects etc.
> > > 
> > > Is there an obvious way so that I can save the brick wall some damage?
> > 
> > Just be soft in the head...
> > 
> > Seriously, I think the recipe is to drill down into model.lme until
> > you find the corAR1 class object,  like this, I think.
> > 
> > x <- model.lme$modelStruct$corStruct
> > coef(x,unconstrained=FALSE). 
> > 
> > -- 
> >    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
> > 
> 
> 

-- 
   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



More information about the R-help mailing list