# [R] How to extract R{i} from lme object?

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Tue Mar 4 22:15:35 CET 2003

```
Peng wrote:
> Hi, lme() users,
>
> Can some one tell me how to do this.
> I model Orthodont with the same G for random
> variables, but different R{i}'s for boys and girls, so
> that I can get sigma1_square_hat for boys and
> sigma2_square_hat for girls.
>
> The model is Y{i}=X{i}beta + Z{i}b + e{i}
> b ~ iid N(0,G) and e{i} ~ iid N(0,R{i}) i=1,2
> orth.lme <- lme(distance ~ Sex * age, data=Orthodont,
> random=~age|Subject, weights=varIdent(form=~1|Sex),
> method="ML")
>
> I can see the numbers I need from summary(), but how
> can I extract them? I tried several functions in nlme,
> but I cannot find a correct one.
>
> Peng
>

Peng,

Is this what you need?

R> data(Orthodont)
R> orth.lme <- lme(distance ~ Sex * age,
+                  data=Orthodont,
+                  random=~age|Subject,
+                  weights=varIdent(form=~1|Sex),
+                  method="ML")
R> orth.lme\$modelStruct\$varStruct
Variance function structure of class varIdent representing
Male    Female
1.0000000 0.4112708
R> rcov.unscaled <- as.matrix(orth.lme\$modelStruct\$reStruct[])
R> rcov.scaled <- rcov.unscaled * orth.lme\$sigma^2
R> Stdev <- sqrt(diag(rcov.scaled))
R> Stdev
(Intercept)         age
1.7914848   0.1408001
R>

If there's nesting, look for more elements in \$reStruct.

Regards,
Sundar

```