User Tools

Site Tools


twoway_repeated_measure_anova

This is an old revision of the document!


E.g. 1

# rep.meas.anova.two.way.csv

df <- read.csv("http://commres.net/wiki/_media/r/rep.meas.anova.two.way.csv")
head(df)
tail(df)
str(df)

df$group <- factor(df$group)
df$id<-1:196
df$id <- factor(df$id)
str(df)

library(reshape2)
mltdf <- melt(df, id.var=c("id", "group"))
mltdf
colnames(mltdf) <- c("id", "group", "time", "value")

mltdf.ftest <- aov(value ~ group * time + Error(id), data=mltdf)
summary(mltdf.ftest)

attach(mltdf)
interaction.plot(time, group, value, 
                 fun=mean, type="b", pch=c(2,4,6), 
                 legend = F, col=c("red","blue","black"), 
                 xlab="Time", ylab="Mean")
legend("topleft", legend=c("Group 1", "Group 2", "Group 3"),
       pch=c(2,4,6), col=c("red", "blue", "black"))

pairwise.t.test(value, time, 
                paired=T, 
                p.adjust.method="bonferroni")
> # rep.meas.anova.two.way.csv
> 
> df <- read.csv("http://commres.net/wiki/_media/r/rep.meas.anova.two.way.csv")
> head(df)
  group baseline after_1hr after_2hr after_4hr
1     1     39.1      90.7      67.4      59.2
2     3     73.4     142.9      56.2     119.6
3     3     93.6     101.8      62.4     115.2
4     2    113.5     109.5     100.2     135.8
5     1     94.2     111.3     111.3     105.8
6     1     58.0     102.3     129.8      80.3
> tail(df)
    group baseline after_1hr after_2hr after_4hr
191     1     71.3     141.3     120.5      65.0
192     3     38.9     116.8     120.3     102.6
193     2     37.7      93.8      91.6      89.9
194     1    133.8      95.9     103.2     111.4
195     2    137.9     132.7     140.5      66.0
196     1    125.1      43.8     112.6      78.6
> str(df)
'data.frame':	196 obs. of  5 variables:
 $ group    : int  1 3 3 2 1 1 2 1 2 1 ...
 $ baseline : num  39.1 73.4 93.6 113.5 94.2 ...
 $ after_1hr: num  90.7 142.9 101.8 109.5 111.3 ...
 $ after_2hr: num  67.4 56.2 62.4 100.2 111.3 ...
 $ after_4hr: num  59.2 119.6 115.2 135.8 105.8 ...
> 
> df$group <- factor(df$group)
> df$id<-1:196
> df$id <- factor(df$id)
> str(df)
'data.frame':	196 obs. of  6 variables:
 $ group    : Factor w/ 3 levels "1","2","3": 1 3 3 2 1 1 2 1 2 1 ...
 $ baseline : num  39.1 73.4 93.6 113.5 94.2 ...
 $ after_1hr: num  90.7 142.9 101.8 109.5 111.3 ...
 $ after_2hr: num  67.4 56.2 62.4 100.2 111.3 ...
 $ after_4hr: num  59.2 119.6 115.2 135.8 105.8 ...
 $ id       : Factor w/ 196 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
> 
> library(reshape2)
> mltdf <- melt(df, id.var=c("id", "group"))
> mltdf
     id group  variable value
1     1     1  baseline  39.1
2     2     3  baseline  73.4
3     3     3  baseline  93.6
4     4     2  baseline 113.5
5     5     1  baseline  94.2
6     6     1  baseline  58.0
7     7     2  baseline  90.2
8     8     1  baseline  94.0
9     9     2  baseline  52.4
10   10     1  baseline  61.6
11   11     2  baseline 116.1
12   12     1  baseline  95.8
13   13     2  baseline 130.7
14   14     3  baseline  34.6
15   15     2  baseline  72.9
16   16     1  baseline  64.5
17   17     2  baseline  76.1
18   18     1  baseline 118.6
19   19     2  baseline  46.5
20   20     3  baseline 124.6
21   21     3  baseline  50.3
22   22     1  baseline  67.7
23   23     1  baseline 100.5
24   24     1  baseline  66.4
25   25     2  baseline 129.7
26   26     1  baseline  92.2
27   27     1  baseline  49.1
28   28     2  baseline  89.3
29   29     1  baseline 101.5
30   30     1  baseline 110.5
31   31     1  baseline  95.4
32   32     1  baseline  59.6
33   33     2  baseline  87.6
34   34     3  baseline  42.3
35   35     3  baseline 110.0
36   36     3  baseline 133.6
37   37     2  baseline  36.8
38   38     1  baseline 106.9
39   39     3  baseline  32.1
40   40     1  baseline 118.9
41   41     2  baseline  70.3
42   42     1  baseline 105.2
43   43     1  baseline  55.2
44   44     3  baseline 103.4
45   45     2  baseline  55.9
46   46     2  baseline  93.3
47   47     3  baseline 113.0
48   48     2  baseline  44.8
49   49     1  baseline 125.4
50   50     2  baseline  91.5
51   51     2  baseline  46.8
52   52     3  baseline  46.9
53   53     1  baseline  88.4
54   54     1  baseline  83.1
55   55     1  baseline  72.7
56   56     1  baseline  78.3
57   57     1  baseline  73.1
58   58     1  baseline  69.9
59   59     2  baseline  94.2
60   60     3  baseline 133.1
61   61     1  baseline  69.7
62   62     1  baseline  95.9
63   63     1  baseline 122.1
64   64     2  baseline  46.4
65   65     3  baseline  62.3
66   66     2  baseline 134.0
67   67     2  baseline  66.9
68   68     3  baseline 109.1
69   69     1  baseline 100.1
70   70     3  baseline  54.9
71   71     2  baseline 118.9
72   72     2  baseline  79.7
73   73     1  baseline  85.2
74   74     3  baseline 133.5
75   75     1  baseline 125.6
76   76     2  baseline  70.3
77   77     3  baseline 133.0
78   78     2  baseline 132.7
79   79     3  baseline 134.6
80   80     2  baseline  97.2
81   81     1  baseline  70.9
82   82     1  baseline  99.3
83   83     3  baseline 131.4
84   84     3  baseline  88.9
85   85     2  baseline  77.2
86   86     1  baseline  62.7
87   87     1  baseline  49.0
88   88     3  baseline 125.1
89   89     3  baseline  94.8
90   90     3  baseline  61.0
91   91     1  baseline 132.9
92   92     2  baseline 109.5
93   93     3  baseline  53.6
94   94     2  baseline  80.4
95   95     2  baseline  48.5
96   96     1  baseline 129.1
97   97     2  baseline 119.3
98   98     2  baseline  74.1
99   99     2  baseline  59.2
100 100     2  baseline 115.5
101 101     2  baseline 125.4
102 102     2  baseline 111.0
103 103     2  baseline  63.5
104 104     2  baseline  60.8
105 105     3  baseline 107.9
106 106     3  baseline  69.2
107 107     3  baseline 133.7
108 108     3  baseline  45.1
109 109     3  baseline 108.4
110 110     2  baseline  69.6
111 111     2  baseline  94.0
112 112     3  baseline  34.2
113 113     2  baseline  41.6
114 114     1  baseline  46.7
115 115     3  baseline  97.2
116 116     1  baseline  70.5
117 117     1  baseline  97.9
118 118     1  baseline  39.6
119 119     2  baseline  39.1
120 120     2  baseline 128.9
121 121     3  baseline 132.5
122 122     3  baseline  71.3
123 123     3  baseline 130.5
124 124     1  baseline 106.9
125 125     2  baseline  84.5
126 126     1  baseline 118.1
127 127     2  baseline  38.0
128 128     3  baseline  51.2
129 129     2  baseline 107.8
130 130     1  baseline  56.8
131 131     2  baseline  71.9
132 132     2  baseline  90.1
133 133     2  baseline  81.4
134 134     3  baseline  88.5
135 135     3  baseline 119.5
136 136     2  baseline  58.2
137 137     1  baseline 109.0
138 138     3  baseline  97.0
139 139     1  baseline 132.0
140 140     2  baseline  35.8
141 141     1  baseline  96.0
142 142     1  baseline  35.9
143 143     1  baseline  65.2
144 144     3  baseline 121.0
145 145     2  baseline 122.8
146 146     2  baseline  51.1
147 147     2  baseline  51.5
148 148     1  baseline 108.7
149 149     1  baseline  89.5
150 150     1  baseline  86.8
151 151     3  baseline  49.2
152 152     3  baseline 119.1
153 153     1  baseline  86.7
154 154     2  baseline  39.9
155 155     1  baseline  46.9
156 156     3  baseline  64.5
157 157     2  baseline  39.1
158 158     1  baseline  70.9
159 159     2  baseline  84.0
160 160     3  baseline 105.2
161 161     2  baseline  46.0
162 162     3  baseline  98.6
163 163     1  baseline  87.3
164 164     2  baseline  52.5
165 165     1  baseline 125.4
166 166     1  baseline  73.7
167 167     1  baseline 101.2
168 168     2  baseline  97.1
169 169     1  baseline  44.9
170 170     1  baseline  39.1
171 171     1  baseline  80.3
172 172     2  baseline 107.5
173 173     3  baseline  67.6
174 174     3  baseline 126.5
175 175     1  baseline  97.8
176 176     1  baseline 132.4
177 177     2  baseline  39.3
178 178     3  baseline  36.1
179 179     3  baseline  30.6
180 180     1  baseline 110.8
181 181     1  baseline 124.5
182 182     3  baseline  78.5
183 183     1  baseline 110.0
184 184     3  baseline  72.2
185 185     1  baseline 121.1
186 186     1  baseline  47.8
187 187     1  baseline 125.6
188 188     1  baseline 116.2
189 189     2  baseline  85.7
190 190     2  baseline  94.5
191 191     1  baseline  71.3
192 192     3  baseline  38.9
193 193     2  baseline  37.7
194 194     1  baseline 133.8
195 195     2  baseline 137.9
196 196     1  baseline 125.1
197   1     1 after_1hr  90.7
198   2     3 after_1hr 142.9
199   3     3 after_1hr 101.8
200   4     2 after_1hr 109.5
201   5     1 after_1hr 111.3
202   6     1 after_1hr 102.3
203   7     2 after_1hr 112.4
204   8     1 after_1hr  76.8
205   9     2 after_1hr 147.1
206  10     1 after_1hr  88.9
207  11     2 after_1hr  69.7
208  12     1 after_1hr 127.5
209  13     2 after_1hr 108.3
210  14     3 after_1hr 107.1
211  15     2 after_1hr 112.6
212  16     1 after_1hr  61.5
213  17     2 after_1hr 118.2
214  18     1 after_1hr 108.8
215  19     2 after_1hr 136.3
216  20     3 after_1hr  91.7
217  21     3 after_1hr  79.0
218  22     1 after_1hr  55.7
219  23     1 after_1hr  67.3
220  24     1 after_1hr  86.5
221  25     2 after_1hr 123.9
222  26     1 after_1hr 126.2
223  27     1 after_1hr  41.3
224  28     2 after_1hr  62.1
225  29     1 after_1hr 102.6
226  30     1 after_1hr  62.9
227  31     1 after_1hr  68.9
228  32     1 after_1hr  77.8
229  33     2 after_1hr  92.8
230  34     3 after_1hr  56.8
231  35     3 after_1hr  87.0
232  36     3 after_1hr 126.3
233  37     2 after_1hr 115.2
234  38     1 after_1hr  80.5
235  39     3 after_1hr  75.9
236  40     1 after_1hr  85.5
237  41     2 after_1hr 125.5
238  42     1 after_1hr  93.6
239  43     1 after_1hr  99.9
240  44     3 after_1hr  70.8
241  45     2 after_1hr 111.9
242  46     2 after_1hr  60.5
243  47     3 after_1hr 132.6
244  48     2 after_1hr 137.5
245  49     1 after_1hr  95.9
246  50     2 after_1hr  59.0
247  51     2 after_1hr  62.5
248  52     3 after_1hr 138.2
249  53     1 after_1hr  40.5
250  54     1 after_1hr  55.7
 [ reached 'max' / getOption("max.print") -- omitted 534 rows ]
> colnames(mltdf) <- c("id", "group", "time", "value")
> 
> mltdf.ftest <- aov(value ~ group * time + Error(id), data=mltdf)
> summary(mltdf.ftest)

Error: id
           Df Sum Sq Mean Sq F value Pr(>F)  
group       2   5283  2641.6   3.298 0.0391 *
Residuals 193 154611   801.1                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Error: Within
            Df Sum Sq Mean Sq F value   Pr(>F)    
time         3  58104   19368  20.747 8.85e-13 ***
group:time   6   8427    1405   1.505    0.174    
Residuals  579 540521     934                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> 
> attach(mltdf)
The following objects are masked from mltdf (pos = 4):

    group, id, time, value

> interaction.plot(time, group, value, 
+                  fun=mean, type="b", pch=c(2,4,6), 
+                  legend = F, col=c("red","blue","black"), 
+                  xlab="Time", ylab="Mean")
> legend("topleft", legend=c("Group 1", "Group 2", "Group 3"),
+        pch=c(2,4,6), col=c("red", "blue", "black"))
> 
> pairwise.t.test(value, time, 
+                 paired=T, 
+                 p.adjust.method="bonferroni")

	Pairwise comparisons using paired t tests 

data:  value and time 

          baseline after_1hr after_2hr
after_1hr 0.0008   -         -        
after_2hr 2.5e-06  0.7653    -        
after_4hr 4.7e-13  0.0026    0.1005   

P value adjustment method: bonferroni 
> 

twoway_repeated_measure_anova.1715124750.txt.gz · Last modified: 2024/05/08 08:32 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki