[R] summary.lme: argument "adjustSigma"

Spencer Graves spencer.graves at pdf.com
Sun May 7 18:12:51 CEST 2006


<see inline>	

Christoph Buser wrote:
> Dear Spencer 
> 
> Thank you for your answer. You are correct. The "adjustSigma"
> argument is only used for the "ML" method. In the code there is: 
> 
> stdFixed <- sqrt(diag(as.matrix(object$varFix)))
> 
> if (object$method == "ML" && adjustSigma == TRUE) {
>     stdFixed <- sqrt(object$dims$N/(object$dims$N - length(stdFixed))) * 
>         stdFixed
> }
> 
> But my question is still open:
> 
> Looking into the code above, "stdFixed" is adapted for the "ML"
> method if "adjustSigma" is TRUE. Therefore the standard error
> and the test results for the fixed effects is affected.
> 
> But I would expect that the residual standard error should be
> adapted, too. But "object$sigma" of the lme object is unchanged
> and therefore in the summary output, the estimate of the
> residual standard error is identical, independent of the value
> of "adjustSigma".
> 
> To my understanding this is a discrepancy to the help page that
> says: 
> 
> adjustSigma: an optional logical value. If 'TRUE' and the
>           estimation method used to obtain 'object' was maximum
>           likelihood, the residual standard error is multiplied
>           by sqrt(nobs/(nobs - npar)), converting it to a
>           REML-like estimate. This argument is only used when a
>           single fitted object is passed to the
>           function. Default is 'TRUE'. 
> 
I would say that the documentation is ambiguous on the issue you raise. 
  Furthermore, I suspect that most people would likely expect the 
"sigma" component of summary(lme(..., method="ML")) to match that of 
lme(..., method="ML").

	  hope this helps,
	  Spencer Graves
> 
> Regards,
> 
> Christoph Buser
> 
> --------------------------------------------------------------
> Christoph Buser <buser at stat.math.ethz.ch>
> Seminar fuer Statistik, LEO C13
> ETH Zurich	8092 Zurich	 SWITZERLAND
> phone: x-41-44-632-4673		fax: 632-1228
> http://stat.ethz.ch/~buser/
> --------------------------------------------------------------
> 
> 
> 
> Spencer Graves writes:
>  > 	  It appears that the "adjustSigma" argument of 'summary.lme' does 
>  > nothing with the default method, "REML".  To check, I tried the 
>  > following modification of the 'summary.lme' example:
>  > 
>  > fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject)
>  > fm1sa <- summary(fm1)
>  > fm1s <- summary(fm1, adjustSigma=FALSE)
>  > fm1saa <- summary(fm1, adjustSigma=TRUE)
>  > all.equal(fm1s, fm1sa)
>  > TRUE
>  > all.equal(fm1s, fm1saa)
>  > TRUE
>  > #################
>  > 
>  > 	  When I changed 'method' to "ML" in this example, the result suggested 
>  > that the adjustment to sigma also affected the standard errors and t 
>  > values for the fixed effects.  If the p-values had not been 0, they also 
>  > would have been affected:
>  > 
>  > fm2 <- lme(distance ~ age, Orthodont, random = ~ age | Subject,
>  >             method="ML")
>  > (fm2sa <- summary(fm2))
>  > Linear mixed-effects model fit by maximum likelihood
>  >   Data: Orthodont
>  >         AIC      BIC    logLik
>  >    451.2116 467.3044 -219.6058
>  > 
>  > Random effects:
>  >   Formula: ~age | Subject
>  >   Structure: General positive-definite, Log-Cholesky parametrization
>  >              StdDev    Corr
>  > (Intercept) 2.1940998 (Intr)
>  > age         0.2149245 -0.581
>  > Residual    1.3100399
>  > 
>  > Fixed effects: distance ~ age
>  >                  Value Std.Error DF   t-value p-value
>  > (Intercept) 16.761111 0.7678975 80 21.827277       0
>  > age          0.660185 0.0705779 80  9.353997       0
>  >   Correlation:
>  >      (Intr)
>  > age -0.848
>  > 
>  > Standardized Within-Group Residuals:
>  >           Min           Q1          Med           Q3          Max
>  > -3.305969237 -0.487429631  0.007597973  0.482237063  3.922789795
>  > 
>  > Number of Observations: 108
>  > Number of Groups: 27
>  >  > (fm2s <- summary(fm2, adjustSigma=FALSE))
>  > Linear mixed-effects model fit by maximum likelihood
>  >   Data: Orthodont
>  >         AIC      BIC    logLik
>  >    451.2116 467.3044 -219.6058
>  > 
>  > Random effects:
>  >   Formula: ~age | Subject
>  >   Structure: General positive-definite, Log-Cholesky parametrization
>  >              StdDev    Corr
>  > (Intercept) 2.1940998 (Intr)
>  > age         0.2149245 -0.581
>  > Residual    1.3100399
>  > 
>  > Fixed effects: distance ~ age
>  >                  Value Std.Error DF  t-value p-value
>  > (Intercept) 16.761111 0.7607541 80 22.03223       0
>  > age          0.660185 0.0699213 80  9.44183       0
>  >   Correlation:
>  >      (Intr)
>  > age -0.848
>  > 
>  > Standardized Within-Group Residuals:
>  >           Min           Q1          Med           Q3          Max
>  > -3.305969237 -0.487429631  0.007597973  0.482237063  3.922789795
>  > 
>  > Number of Observations: 108
>  > Number of Groups: 27
>  >  >
>  > 	  Does this answer the question?
>  > 	  spencer graves
>  > 	
>  > Christoph Buser wrote:
>  > 
>  > > Dear R-list
>  > > 
>  > > I have a question concerning the argument "adjustSigma" in the
>  > > function "lme" of the package "nlme". 
>  > > 
>  > > The help page says:
>  > > 
>  > > "the residual standard error is multiplied by sqrt(nobs/(nobs - 
>  > > npar)), converting it to a REML-like estimate."
>  > > 
>  > > Having a look into the code I found:
>  > > 
>  > > stdFixed <- sqrt(diag(as.matrix(object$varFix)))
>  > > 
>  > > if (object$method == "ML" && adjustSigma == TRUE) {
>  > >     stdFixed <- sqrt(object$dims$N/(object$dims$N - length(stdFixed))) * 
>  > >         stdFixed
>  > > }
>  > > 
>  > > tTable <- data.frame(fixed, stdFixed, object$fixDF[["X"]], 
>  > >     fixed/stdFixed, fixed)
>  > > 
>  > > 
>  > > To my understanding, only the standard error for the fixed
>  > > coefficients is adapted and not the residual standard error. 
>  > > 
>  > > Therefore only the tTable of the output is affected by the
>  > > argument "adjustSigma", but not the estimate for residual
>  > > standard error (see the artificial example below). 
>  > > 
>  > > May someone explain to me if there is an error in my
>  > > understanding of the help page and the R code? 
>  > > Thank you very much.  
>  > > 
>  > > Best regards,
>  > > 
>  > > Christoph Buser
>  > > 
>  > > --------------------------------------------------------------
>  > > Christoph Buser <buser at stat.math.ethz.ch>
>  > > Seminar fuer Statistik, LEO C13
>  > > ETH Zurich	8092 Zurich	 SWITZERLAND
>  > > phone: x-41-44-632-4673		fax: 632-1228
>  > > http://stat.ethz.ch/~buser/
>  > > --------------------------------------------------------------
>  > > 
>  > > 
>  > > Example
>  > > -------
>  > > 
>  > > set.seed(1)
>  > > dat <- data.frame(y = rnorm(16), fac1 = rep(1:4, each = 4),
>  > >                   fac2 = rep(1:2,each = 8))
>  > > 
>  > > telme <- lme(y ~ fac1, data = dat, random = ~ 1 | fac2, method = "ML")
>  > > summary(telme)
>  > > summary(telme, adjustSigma = FALSE)
>  > > 
>  > > ______________________________________________
>  > > 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
> 
> ______________________________________________
> 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




More information about the R-help mailing list