[R] lme() with known level-one variances

Setzer.Woodrow@epamail.epa.gov Setzer.Woodrow at epamail.epa.gov
Fri Aug 30 18:28:18 CEST 2002

Right.  After thinking about the problem a few minutes longer, I
realized my mistake.  Chapter 5 ("Inference Based on Individual
Estimates") of Davidian and Giltinan (1995) : "Nonlinear Models for
Repeated Measurement Data" can be used to do exactly this.  It turns out
to be quite simple for a one-dimensional parameter, and I coded it up.
This is my interpretation of their "Global two-stage method":

"estmixed" <-
function (mi, sei)
    if (length(mi) == 1) {
        c(muhat = mi, muhat.se = sei, sdhat = NA)
    else {
        vari <- sei^2
        start <- c(mean(mi), log(var(mi)))
        out <- try(optim(par = start, fn = mll, method = "BFGS",
            mi = mi, vari = vari))
        if (inherits(out, "try-error")) {
            print(cbind(mi, sei))
            stop("Problem in optim")
        if (out$convergence == 0)
            c(muhat = out$par[1], muhat.se = sqrt(1/sum(1/(vari +
                exp(out$par[2])))), sdhat = sqrt(exp(out$par[2])))
        else c(muhat = NA, muhat.se = NA, sdhat = NA)

On input, mi is the vector of parameter estimates, and sei is the vector of their standard errors.
On output, muhat is the global estimate, muhat.se is an estimate of its standard error, and sdhat is an estimate of the among-group standard

R. Woodrow Setzer, Jr.                                            Phone:
(919) 541-0128
Experimental Toxicology Division                       Fax:  (919)
Pharmacokinetics Branch

                      Thomas Lumley                                                                                                            
                      <tlumley at u.washin        To:       Woodrow Setzer/RTP/USEPA/US at EPA                                                       
                      gton.edu>                cc:       "J.R. Lockwood" <lockwood at rand.org>, r-help at stat.math.ethz.ch                         
                                               Subject:  Re: [R] lme() with known level-one variances                                          
                      08/30/02 12:11 PM                                                                                                        

On Fri, 30 Aug 2002 Setzer.Woodrow at epamail.epa.gov wrote:

> If I understand your request correctly, you want to use something like
> "weights=varIdent(...)" as an argument to lme().  varIdent and the
> varFunc constructors have an argument "fixed" that allow you to
> values for some or all of the coefficients of the variance function.
> See ?varIdent.  The actual error variance will be varFunc() * sigma^2,
> where sigma^2 is estimated.

That's the problem.

As happens in meta-analysis as well, the problem is to estimate a model
with a variance component fixed. Not fixed up to a scale parameter.

In meta-analysis the model is that within each trial a treatment effect
parameter is constant, and as the trial is large the variance of the
estimated treatment effect is very accurately known conditional on the
true treatment effect for that trial. The unconditional variance is then
the known conditional variance plus an unknown variance.

It doesn't seem that lme() is designed for this, and last time I tried
do it I gave up and changed the model more or less as you suggest.


r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list