# [R] nlme predict with se?

Berton Gunter gunter.berton at gene.com
Sat Mar 18 00:08:48 CET 2006

```This won't be much help, I'm afraid but ...

The problem is, of course, that the prediction is a **nonlinear** function
of the parameters (including possibly the variance components, depending on
what level of the variance hierarchy you are trying to predict). So you need
to somehow estimate how to propogate the error of a nonlinear function of
parameters which, themselves, have an approximate variance-covariance matrix
estimated from an approximation to the likelihood surface. Asymptotic
approaches (Taylor series/delta method; Laplace approximations) can do this,
but they are of questionable accuracy, as Doug Bates has repeatedly
emphasized on this list.

A better approach might well be to bootstrap: repeatedly fit and predict
This, too, could be somewhat tricky, as you have to bootstrap from the
variance components appropriately (preserving group identities, for
example).

As I have no real experience with this, take this with more than just a
grain of salt. But it might give you some insight into the difficulty and
why you were unable to find "good" answers.

Cheers,

-- Bert Gunter
Genentech Non-Clinical Statistics
South San Francisco, CA

"The business of the statistician is to catalyze the scientific learning
process."  - George E. P. Box

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Dr.
> Emilio A. Laca
> Sent: Friday, March 17, 2006 1:55 PM
> To: R-help at stat.math.ethz.ch
> Subject: [R] nlme predict with se?
>
> I am trying to make predictions with se's using a nlme (kew11.nlme
> below).  I get an error indicating levels for a factor are
> not allowed.
> I have searched and read Rnews, MEMSS, MASS, R-Help, and other lists
> in Spanish where I found questions similar to mine but not solution.
> I do not really care about the method used. Any suggestions
> to obtain
> predictions with se's from an nlme would be appreciated.
> eal
>
>
> R Version 2.2.1  (2005-12-20 r36812)
> mac osx 10.4.5 on G5 DP
>
>  > predict(kew11.nlme,x.for.lw.pred, se=T)
> Error in predict.nlme(kew11.nlme, x.for.lw.pred, se = T) :
> 	Levels 1. Fall-Winter,2. Spring,3. Summer,4. Fall not
> allowed for
> Season
>
>  > x.for.lw.pred[1:10,]
>             Season     ecoreg MBreed ageyr2 sheep    farm
> 1  1. Fall-Winter     desert   Meat   0.60     1 AksToKa
> 2       2. Spring     desert   Meat   1.00     1 AksToKa
> 3       3. Summer     desert   Meat   1.25     1 AksToKa
> 4         4. Fall     desert   Meat   1.50     1 AksToKa
> 5  1. Fall-Winter  foothills   Half   0.60     1 AksToKa
> 6       2. Spring  foothills   Half   1.00     1 AksToKa
> 7       3. Summer  foothills   Half   1.25     1 AksToKa
> 8         4. Fall  foothills   Half   1.50     1 AksToKa
> 9  1. Fall-Winter  foothills   Meat   0.60     1 AksToKa
> 10      2. Spring  foothills   Meat   1.00     1 AksToKa
>
>
>  > kew11.nlme\$call
> nlme.formula(model = lw ~ SSasympOff(ageyr2, mw, lgr, age0),
>      data = kew, fixed = list(mw + lgr + age0 ~ Season * MBreed +
>          ecoreg + ecoreg:Season), random = list(farm = list(mw ~
>          1, lgr ~ 1), sheep = list(mw ~ 1)), start = c(fixef
> (kew8.nlme)[1:15],
>          0, 0, 0, 0, 0, 0, 0, 0, 0, fixef(kew8.nlme)[16:30], 0,
>          0, 0, 0, 0, 0, 0, 0, 0, fixef(kew8.nlme)[31:45], 0, 0,
>          0, 0, 0, 0, 0, 0, 0), correlation = corSymm())
>
>
>  > levels(kew\$Season)==levels(x.for.lw.pred\$Season)
> [1] TRUE TRUE TRUE TRUE
>
>
>  > kew[1:10,]
> Grouped Data: lw ~ ageyr2 | farm
>      X sheep doe   ageyr2        MBreEco         Season
> ecoreg
> farm  village Breed MBreed     date doy   lw      ebw
> 1   1     1   1 2.500000 Meatsemidesert 1. Fall-Winter semidesert
> AksToKa Aksenger   KZP   Meat 11/23/02 327 63.8 55.63211
> 2   2     1 139 2.883333 Meatsemidesert      2. Spring semidesert
> AksToKa Aksenger   KZP   Meat  4/10/03 100 51.7 44.53119
> 3   3     1 250 3.191667 Meatsemidesert      3. Summer semidesert
> AksToKa Aksenger   KZP   Meat  7/30/03 211 58.3 50.58624
> 4   4     1 330 3.413889 Meatsemidesert        4. Fall semidesert
> AksToKa Aksenger   KZP   Meat 10/18/03 291 59.9 52.05413
> 5   5     2   1 6.000000 Meatsemidesert 1. Fall-Winter semidesert
> AksToKa Aksenger   KZP   Meat 11/23/02 327 58.0 50.31101
> 6   6     2 139 6.383333 Meatsemidesert      2. Spring semidesert
> AksToKa Aksenger   KZP   Meat  4/10/03 100 41.2 34.89817
> 7   7     2 250 6.691667 Meatsemidesert      3. Summer semidesert
> AksToKa Aksenger   KZP   Meat  7/30/03 211 53.3 45.99908
> 8   8     2 330 6.913889 Meatsemidesert        4. Fall semidesert
> AksToKa Aksenger   KZP   Meat 10/18/03 291 63.7 55.54037
> 9   9     3   1 4.000000 Meatsemidesert 1. Fall-Winter semidesert
> AksToKa Aksenger   KZP   Meat 11/23/02 327 62.3 54.25596
> 10 10     3 139 4.383333 Meatsemidesert      2. Spring semidesert
> AksToKa Aksenger   KZP   Meat  4/10/03 100 47.3 40.49450
>      bcs prcfat     cageyrs
> 1  2.75 26.533 -0.46162659
> 2  2.00 20.192 -0.07829326
> 3  2.50 24.478  0.23004008
> 4  2.50 24.414  0.45226230
> 5  2.50 24.490  3.03837341
> 6  1.75 18.337  3.42170674
> 7  2.25 22.403  3.73004008
> 8  3.25 31.087  3.95226230
> 9  2.50 24.318  1.03837341
> 10 2.00 20.368  1.42170675
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help