I have some doubts about the validity of my procedure to estimeate linear contrasts ina a factorial design.
For sake of semplicity, let's imagine a one way ANOVA with three levels. I am interested to test the significance of the difference between the first and third level (called here contrast C1) and between the first and the seconda level (called here contrast C2). I used the following procedure:


------------------- reading data from a text file -----------------------

> ar <-read.table("C:/Programmi/R/myworks/contrasti/cont1.txt",header=TRUE)

> ar

     CC GROUP

1   3.0     0

2   3.0     0

3   4.0     0

4   5.0     0

5   6.0     0

6   7.0     0

7   3.0     0

8   2.0     0

9   1.0     1

10  6.0     1

11  5.0     1

12  7.0     1

13  2.0     1

14  3.0     1

15  1.5     1

16  1.7     1

17 17.0     2

18 12.0     2

19 15.0     2

20 16.0     2

21 12.0     2

22 23.0     2

23 19.0     2

24 21.0     2

 

------------------- creating a new array of data-----------------------

> ar<-data.frame(GROUP=factor(ar$GROUP),DIP=ar$CC)

> ar

   GROUP  DIP

1      0  3.0

2      0  3.0

3      0  4.0

4      0  5.0

5      0  6.0

6      0  7.0

7      0  3.0

8      0  2.0

9      1  1.0

10     1  6.0

11     1  5.0

12     1  7.0

13     1  2.0

14     1  3.0

15     1  1.5

16     1  1.7

17     2 17.0

18     2 12.0

19     2 15.0

20     2 16.0

21     2 12.0

22     2 23.0

23     2 19.0

24     2 21.0

 

------------------- creating two dummy variables (C1 and C2) for linear contrasts-----------------------

> ar<-data.frame(GROUP=factor(ar$GROUP),C1=factor(ar$GROUP),C2=factor(ar$GROUP),DIP=ar$DIP)

> ar

   GROUP C1 C2  DIP

1      0  0  0  3.0

2      0  0  0  3.0

3      0  0  0  4.0

4      0  0  0  5.0

5      0  0  0  6.0

6      0  0  0  7.0

7      0  0  0  3.0

8      0  0  0  2.0

9      1  1  1  1.0

10     1  1  1  6.0

11     1  1  1  5.0

12     1  1  1  7.0

13     1  1  1  2.0

14     1  1  1  3.0

15     1  1  1  1.5

16     1  1  1  1.7

17     2  2  2 17.0

18     2  2  2 12.0

19     2  2  2 15.0

20     2  2  2 16.0

21     2  2  2 12.0

22     2  2  2 23.0

23     2  2  2 19.0

24     2  2  2 21.0

 

------------------- selecting the contrast levels-----------------------

> ar$C1 <- C(ar$C1, c(1,0,-1), how.many = 1)

> ar$C2 <- C(ar$C2, c(1,-1,0), how.many = 1)

 

 

------------------- contrast analysis of C2 -----------------------

> r.aov8 <-aov(DIP ~  C2 + GROUP , data = ar)

> anova(r.aov8)

Analysis of Variance Table

 

Response: DIP

          Df Sum Sq Mean Sq  F value    Pr(>F)    

C2         1   2.10    2.10   0.2622     0.614    

GROUP      1 917.00  917.00 114.3460 5.915e-10 ***

Residuals 21 168.41    8.02                       

---

Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

 

------------------- contrast analysis of C1 -----------------------

> r.aov9 <-aov(DIP ~  C1 + GROUP , data = ar)

> anova(r.aov9)

Analysis of Variance Table

 

Response: DIP

          Df Sum Sq Mean Sq F value    Pr(>F)    

C1         1 650.25  650.25  81.083 1.175e-08 ***

GROUP      1 268.85  268.85  33.525 9.532e-06 ***

Residuals 21 168.41    8.02                      

---

Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

 

------------------- anova of the global design -----------------------

> r.aov10 <-aov(DIP ~  GROUP , data = ar)

> anova(r.aov10)

Analysis of Variance Table

 

Response: DIP

          Df Sum Sq Mean Sq F value    Pr(>F)    

GROUP      2 919.10  459.55  57.304 3.121e-09 ***

Residuals 21 168.41    8.02                      

---

Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1









I would like to know if there is a more economic procedure with R to do linear contrasts.

Every comments will be well accepted.



Thank you very much and best regards



Marco Tommasi

	[[alternative HTML version deleted]]


