[R] beginner gls (nlme) question
Simon Blomberg
Simon.Blomberg at anu.edu.au
Wed Jul 9 01:48:25 CEST 2003
Hi,
Well since I have gotten no responses to my question, I managed to figure it out for myself (I think.). Here is the answer, for the purposes of the archive:
Firstly, I was wrong in that it is not the factors that are correlated, but the observations (D'oh!). Therefore, the correlation matrix will have dimension 2^3 * 5 = 40. However, we can simplify the structure if we assume no correlation among replicates of the same treatment (using a grouping variable), reducing the matrix to dimension 2^3=8. ie the correlations among the observations of the interactions also have to be specified, not just the main effects. The data set looks like:
A B C response group
1 0 0 0 40.411581 1
2 1 0 0 19.926468 1
3 0 1 0 70.824970 1
4 1 1 0 37.298386 1
5 0 0 1 108.361849 1
6 1 0 1 67.315986 1
7 0 1 1 7.843482 1
8 1 1 1 45.648360 1
9 0 0 0 115.457913 2
10 1 0 0 42.650458 2
11 0 1 0 88.852955 2
12 1 1 0 116.738213 2
13 0 0 1 150.724565 2
14 1 0 1 81.888251 2
15 0 1 1 47.178701 2
16 1 1 1 28.822613 2
...
and the correlation matrix mat is:
> mat
Int A B C A:B A:C B:C A:B:C
Int 1 0.00 0.00 0 0.00 0 0 0
A 0 1.00 0.75 0 0.75 0 0 0
B 0 0.75 1.00 0 0.75 0 0 0
C 0 0.00 0.00 1 0.00 0 0 0
A:B 0 0.75 0.75 0 1.00 0 0 0
A:C 0 0.00 0.00 0 0.00 1 0 0
B:C 0 0.00 0.00 0 0.00 0 1 0
A:B:C 0 0.00 0.00 0 0.00 0 0 1
Then the call to gls will be:
gls(response~A*B*C, data=dat, correlation=corSymm(mat[lower.tri(mat)], form= ~1|group))
Simon.
Simon Blomberg, PhD
Depression & Anxiety Consumer Research Unit
Centre for Mental Health Research
Australian National University
http://www.anu.edu.au/cmhr/
Simon.Blomberg at anu.edu.au +61 (2) 6125 3379
> -----Original Message-----
> From: Simon Blomberg
> Sent: Thursday, 3 July 2003 10:53 AM
> To: R-help mailing list
> Subject: [R] beginner gls (nlme) question
>
>
> Hi all,
>
> I am trying to get a handle on gls (package nlme). I have a
> toy problem: 3 fixed factors (A, B, C), two levels each, 5
> replicates per treatment. The response variable is
> continuous, normal. I have a correlation matrix of the form:
>
> > mat
> A B C
> A 1.00 0.75 0
> B 0.75 1.00 0
> C 0.00 0.00 1
>
> which is common to all observations.
>
> How do I construct the call to gls? I think I need to use
> correlation=corSymm(), but I do not understand the precise
> syntax. I have read the relevant parts of Pinheiro and Bates,
> but they only talk about cases where the corSymm correlation
> structure is modelled, rather than known. I have also
> searched the R archives, but no luck.
>
> I think it should be of the form gls(response~A*B*C,
> data=dat, correlation=corSymm(...?))
> but I don't understand the arguments to corSymm.
>
> Thanks in advance,
>
> Simon.
>
> Simon Blomberg, PhD
> Depression & Anxiety Consumer Research Unit
> Centre for Mental Health Research
> Australian National University
> http://www.anu.edu.au/cmhr/
> Simon.Blomberg at anu.edu.au +61 (2) 6125 3379
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
More information about the R-help
mailing list