I would like to make clear that the SAS "unstructured" correlation matrix in
the second model was :
Estimated R Correlation Matrix for id 1

1      1.0000      0.8575      0.6984      0.4657      0.3165
2      0.8575      1.0000      0.8557      0.5670      0.4039
3      0.6984      0.8557      1.0000      0.8717      0.7551
4      0.4657      0.5670      0.8717      1.0000      0.9333
5      0.3165      0.4039      0.7551      0.9333      1.0000

which seems to be equal to :

> cov2cor(cov(datares))
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 1.0000000 0.8574841 0.6984365 0.4657120 0.3165061
[2,] 0.8574841 1.0000000 0.8557224 0.5670489 0.4038805
[3,] 0.6984365 0.8557224 1.0000000 0.8716642 0.7550925
[4,] 0.4657120 0.5670489 0.8716642 1.0000000 0.9333166
[5,] 0.3165061 0.4038805 0.7550925 0.9333166 1.0000000

but not to :

> cov2cor(extract.lme.cov(fm2,rats)[1:5, 1:5]) # corClasses in fm2 : corSymm
          1         2         3         4         5
1 1.0000000 0.9153199 0.8424135 0.6222813 0.2125583
2 0.9153199 1.0000000 0.9344902 0.6960017 0.3115286
3 0.8424135 0.9344902 1.0000000 0.8709635 0.5573176
4 0.6222813 0.6960017 0.8709635 1.0000000 0.8218556
5 0.2125583 0.3115286 0.5573176 0.8218556 1.0000000


2008/6/25 David Hajage <[EMAIL PROTECTED]>:

> Hello R users,
>
> I'm student and I'm actually having a lecture introducing repeated mesures
> analysis. Unfortunately, all examples use SAS system...
>
> I'm working with lme function (package "nlme"), and I'm using
> extract.lme.cov (package "mgcv") to extract covariance structure of models.
>
> One example is about weight evolution of rats (3 treatment groups) :
>
> > summary(rats)
>        id      trt          y         s
>  1      :  5   1:50   Min.   : 46.0   0:27
>  10     :  5   2:50   1st Qu.: 71.0   1:27
>  11     :  5   3:35   Median :100.0   2:27
>  12     :  5          Mean   :100.8   3:27
>  13     :  5          3rd Qu.:122.5   4:27
>  14     :  5          Max.   :189.0
>  (Other):105
>
> id : subjects
> trt : treatment groups (1, 2 or 3)
> y : weights
> s : weeks (Week 0 to Week 4)
>
> There are 5 mesearements of weight (on week 0, 1, 2, 3 and 4) for each rat.
>
> I first fit a model with a compound symmetry correlation structure :
>
> > library(nlme)
> > library(mgcv)
> > fm1 <- lme(y ~ as.factor(s) * as.factor(trt), data = rats, random = ~
> 1|id, correlation = corCompSymm())
> > summary(fm1)
> ...
> Fixed effects: y ~ as.factor(s) * as.factor(trt)
>                                   Value Std.Error DF  t-value p-value
> (Intercept)                    54.00000  3.469019 96 15.56636  0.0000
> as.factor(s)1                  24.50000  3.125974 96  7.83756  0.0000
> as.factor(s)2                  52.00000  3.125974 96 16.63481  0.0000
> as.factor(s)3                  76.10000  3.125974 96 24.34441  0.0000
> as.factor(s)4                 106.60000  3.125974 96 34.10137  0.0000
> as.factor(trt)2                 0.70000  4.905934 24  0.14268  0.8877
> as.factor(trt)3                 1.57143  5.406076 24  0.29068  0.7738
> as.factor(s)1:as.factor(trt)2  -2.90000  4.420795 96 -0.65599  0.5134
> as.factor(s)2:as.factor(trt)2 -10.90000  4.420795 96 -2.46562  0.0155
> as.factor(s)3:as.factor(trt)2 -22.60000  4.420795 96 -5.11220  0.0000
> as.factor(s)4:as.factor(trt)2 -37.30000  4.420795 96 -8.43740  0.0000
> as.factor(s)1:as.factor(trt)3  -4.21429  4.871479 96 -0.86509  0.3891
> as.factor(s)2:as.factor(trt)3  -2.71429  4.871479 96 -0.55718  0.5787
> as.factor(s)3:as.factor(trt)3   1.04286  4.871479 96  0.21407  0.8309
> as.factor(s)4:as.factor(trt)3   0.68571  4.871479 96  0.14076  0.8884
> ...
>
> > extract.lme.cov(fm1,rats)[1:5, 1:5]
>           1         2         3         4         5
> 1 120.34095  71.48238  71.48238  71.48238  71.48238
> 2  71.48238 120.34095  71.48238  71.48238  71.48238
> 3  71.48238  71.48238 120.34095  71.48238  71.48238
> 4  71.48238  71.48238  71.48238 120.34095  71.48238
> 5  71.48238  71.48238  71.48238  71.48238 120.34095
>
> As you can see, I obtain exactly the same solutions for fixed parameters
> and estimated covariance matrix in SAS :
> proc mixed data = rat ;
> class id trt s ;
> format trt ftrt. s fs. ;
> model y = trt s trt * s / solution ddfm = satterth ;
> repeated s / type = cs subject = id r rcorr;
> run ;
>
>                                                    Erreur
>     Effet        trt       s       Estimation    standard      DF    Valeur
> du test t    Pr > |t|
>
>     Intercept                         54.0000      3.4690
> 49.8               15.57      <.0001
>     trt          A.trt3                1.5714      5.4061
> 49.8                0.29      0.7725
>     trt          B.trt2                0.7000      4.9059
> 49.8                0.14      0.8871
>     trt          C.trt1                     0           .
> .                 .         .
>     s                      A.S4        106.60      3.1260
> 96               34.10      <.0001
>     s                      B.S3       76.1000      3.1260
> 96               24.34      <.0001
>     s                      C.S2       52.0000      3.1260
> 96               16.63      <.0001
>     s                      D.S1       24.5000      3.1260
> 96                7.84      <.0001
>     s                      E.S0             0           .
> .                 .         .
>     trt*s        A.trt3    A.S4        0.6857      4.8715
> 96                0.14      0.8884
>     trt*s        A.trt3    B.S3        1.0429      4.8715
> 96                0.21      0.8309
>     trt*s        A.trt3    C.S2       -2.7143      4.8715
> 96               -0.56      0.5787
>     trt*s        A.trt3    D.S1       -4.2143      4.8715
> 96               -0.87      0.3891
>     trt*s        A.trt3    E.S0             0           .
> .                 .         .
>     trt*s        B.trt2    A.S4      -37.3000      4.4208
> 96               -8.44      <.0001
>     trt*s        B.trt2    B.S3      -22.6000      4.4208
> 96               -5.11      <.0001
>     trt*s        B.trt2    C.S2      -10.9000      4.4208
> 96               -2.47      0.0155
>     trt*s        B.trt2    D.S1       -2.9000      4.4208
> 96               -0.66      0.5134
>     trt*s        B.trt2    E.S0             0           .
> .                 .         .
>     trt*s        C.trt1    A.S4             0           .
> .                 .         .
>     trt*s        C.trt1    B.S3             0           .
> .                 .         .
>     trt*s        C.trt1    C.S2             0           .
> .                 .         .
>     trt*s        C.trt1    D.S1             0           .
> .                 .         .
>     trt*s        C.trt1    E.S0             0           .
> .                 .         .
>
> Estimated R Matrix for id 1
>
> 1      120.34     71.4824     71.4824     71.4824     71.4824
> 2     71.4824      120.34     71.4824     71.4824     71.4824
> 3     71.4824     71.4824      120.34     71.4824     71.4824
> 4     71.4824     71.4824     71.4824      120.34     71.4824
> 5     71.4824     71.4824     71.4824     71.4824      120.34
>
> My problem is that I can't find how to obtain an "unstructered" correlation
> structure with lme function (SAS option : type = un), ie to use this
> covariance matrix :
> > datares <- t(unstack(data.frame(fm1$residuals[,1], rats$id)))
> > cov(datares)
>          [,1]     [,2]      [,3]      [,4]      [,5]
> [1,] 19.91593 30.47967  29.15275  25.79780  21.44505
> [2,] 30.47967 63.44066  63.74835  56.06209  48.84066
> [3,] 29.15275 63.74835  87.47912 101.19670 107.22527
> [4,] 25.79780 56.06209 101.19670 154.07418 175.88901
> [5,] 21.44505 48.84066 107.22527 175.88901 230.50989
>
> My first thought was that it was corClasses "corSymm", but I don't have the
> same results in R and SAS :
>
> With R :
> > fm2 <- lme(y ~ as.factor(s) * as.factor(trt), data = rats, random = ~
> 1|id, correlation = corSymm())
>  > summary(fm2)
> ...
>                                   Value Std.Error DF   t-value p-value
> (Intercept)                    54.00000  3.767777 96 14.332057  0.0000
> as.factor(s)1                  24.50000  1.550568 96 15.800659  0.0000
>  as.factor(s)2                  52.00000  2.115240 96 24.583496  0.0000
> as.factor(s)3                  76.10000  3.274798 96 23.238076  0.0000
> as.factor(s)4                 106.60000  4.728348 96 22.544871  0.0000
> as.factor(trt)2                 0.70000  5.328442 24  0.131370  0.8966
> as.factor(trt)3                 1.57143  5.871657 24  0.267629  0.7913
> as.factor(s)1:as.factor(trt)2  -2.90000  2.192835 96 -1.322489  0.1891
> as.factor(s)2:as.factor(trt)2 -10.90000  2.991401 96 -3.643777  0.0004
> as.factor(s)3:as.factor(trt)2 -22.60000  4.631263 96 -4.879878  0.0000
> as.factor(s)4:as.factor(trt)2 -37.30000  6.686894 96 -5.578075  0.0000
> as.factor(s)1:as.factor(trt)3  -4.21429  2.416386 96 -1.744045  0.0844
> as.factor(s)2:as.factor(trt)3  -2.71429  3.296364 96 -0.823418  0.4123
> as.factor(s)3:as.factor(trt)3   1.04286  5.103404 96  0.204345  0.8385
> as.factor(s)4:as.factor(trt)3   0.68571  7.368598 96  0.093059  0.9261
> ...
>
> > extract.lme.cov(fm2, rats)[1:5, 1:5]
>           1         2         3         4         5
> 1 141.96147 129.94016 119.59027  88.33997  30.17509
> 2 129.94016 141.96147 132.66161  98.80543  44.22506
> 3 119.59027 132.66161 141.96147 123.64326  79.11763
> 4  88.33997  98.80543 123.64326 141.96147 116.67183
> 5  30.17509  44.22506  79.11763 116.67183 141.96147
>
> With SAS :
> proc mixed data = rat ;
> class id trt s ;
> format trt ftrt. s fs. ;
> model y = trt s trt * s / solution ddfm = satterth ;
> repeated s / type = un subject = id r rcorr;
> run ;
>
>
>                                                    Erreur
>      Effet        trt       s       Estimation    standard      DF
> Valeur du test t    Pr > |t|
>
>     Intercept                         54.0000      1.4689
> 24               36.76      <.0001
>     trt          A.trt3                1.5714      2.2891
> 24                0.69      0.4990
>     trt          B.trt2                0.7000      2.0773
> 24                0.34      0.7391
>     trt          C.trt1                     0           .
> .                 .         .
>     s                      A.S4        106.60      4.7416
> 24               22.48      <.0001
>     s                      B.S3       76.1000      3.6413
> 24               20.90      <.0001
>     s                      C.S2       52.0000      2.3061
> 24               22.55      <.0001
>     s                      D.S1       24.5000      1.5577
> 24               15.73      <.0001
>     s                      E.S0             0           .
> .                 .         .
>     trt*s        A.trt3    A.S4        0.6857      7.3893
> 24                0.09      0.9268
>     trt*s        A.trt3    B.S3        1.0429      5.6746
> 24                0.18      0.8557
>     trt*s        A.trt3    C.S2       -2.7143      3.5938
> 24               -0.76      0.4574
>     trt*s        A.trt3    D.S1       -4.2143      2.4275
> 24               -1.74      0.0954
>     trt*s        A.trt3    E.S0             0           .
> .                 .         .
>     trt*s        B.trt2    A.S4      -37.3000      6.7057
> 24               -5.56      <.0001
>     trt*s        B.trt2    B.S3      -22.6000      5.1496
> 24               -4.39      0.0002
>     trt*s        B.trt2    C.S2      -10.9000      3.2613
> 24               -3.34      0.0027
>     trt*s        B.trt2    D.S1       -2.9000      2.2029
> 24               -1.32      0.2005
>     trt*s        B.trt2    E.S0             0           .
> .                 .         .
>     trt*s        C.trt1    A.S4             0           .
> .                 .         .
>     trt*s        C.trt1    B.S3             0           .
> .                 .         .
>     trt*s        C.trt1    C.S2             0           .
> .                 .         .
>     trt*s        C.trt1    D.S1             0           .
> .                 .         .
>     trt*s        C.trt1    E.S0             0           .
> .                 .         .
>
>
> Estimated R Matrix for id 1
>
> 1     21.5756     33.0196     31.5821     27.9476     23.2321
> 2     33.0196     68.7274     69.0607     60.7339     52.9107
> 3     31.5821     69.0607     94.7690      109.63      116.16
> 4     27.9476     60.7339      109.63      166.91      190.55
>  5     23.2321     52.9107      116.16      190.55      249.72
>
> I know that R is not SAS, and that the word "unstructured" is perhaps not
> appropriate and a bit confusing. But I would like to know if there is an
> equivalent code for this in R ?
>
> Thank you very much.
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to