User Tools

Site Tools


r:twoway_repeated_measure_anova

Table of Contents

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 
> 

E.g. 2

10_rmanova.csv

acne <- read.csv("http://commres.net/wiki/_media/r/10_rmanova.csv")
str(acne)
acne

# install.packages("reshape")
library(reshape)

acne.re <- reshape(acne, direction="long", varying=3:6, sep="")

str(acne.re)
acne.re$group <- factor(acne.re$group)
acne.re$id <- factor(acne.re$id)
acne.re$time <- factor(acne.re$time)
str(acne.re)

acne.re

attach(acne.re)
acne.re.anova <- aov(month~group*time+Error(id/time), data=acne.re)
summary(acne.re.anova)

interaction.plot(acne.re$time, acne.re$group, acne.re$month)

> acne <- read.csv("http://commres.net/wiki/_media/r/10_rmanova.csv")
> str(acne)
'data.frame':	14 obs. of  6 variables:
 $ group : int  1 1 1 1 1 1 1 2 2 2 ...
 $ id    : int  1 2 3 4 5 6 7 8 9 10 ...
 $ month0: int  60 52 62 58 65 58 53 55 55 60 ...
 $ month1: int  41 38 36 34 34 42 38 42 54 55 ...
 $ month3: int  25 23 22 21 28 26 25 33 46 46 ...
 $ month6: int  16 12 14 13 18 16 21 22 26 23 ...
> acne
   group id month0 month1 month3 month6
1      1  1     60     41     25     16
2      1  2     52     38     23     12
3      1  3     62     36     22     14
4      1  4     58     34     21     13
5      1  5     65     34     28     18
6      1  6     58     42     26     16
7      1  7     53     38     25     21
8      2  8     55     42     33     22
9      2  9     55     54     46     26
10     2 10     60     55     46     23
11     2 11     63     45     40     25
12     2 12     52     41     35     22
13     2 13     61     38     32     18
14     2 14     58     43     39     21
> 
> # install.packages("reshape")
> library(reshape)
Warning message:
패키지 ‘reshape’는 R 버전 4.1.3에서 작성되었습니다 
> 
> acne.re <- reshape(acne, direction="long", varying=3:6, sep="")
> 
> str(acne.re)
'data.frame':	56 obs. of  4 variables:
 $ group: int  1 1 1 1 1 1 1 2 2 2 ...
 $ id   : int  1 2 3 4 5 6 7 8 9 10 ...
 $ time : num  0 0 0 0 0 0 0 0 0 0 ...
 $ month: int  60 52 62 58 65 58 53 55 55 60 ...
 - attr(*, "reshapeLong")=List of 4
  ..$ varying:List of 1
  .. ..$ month: chr [1:4] "month0" "month1" "month3" "month6"
  .. ..- attr(*, "v.names")= chr "month"
  .. ..- attr(*, "times")= num [1:4] 0 1 3 6
  ..$ v.names: chr "month"
  ..$ idvar  : chr "id"
  ..$ timevar: chr "time"
> acne.re$group <- factor(acne.re$group)
> acne.re$id <- factor(acne.re$id)
> acne.re$time <- factor(acne.re$time)
> str(acne.re)
'data.frame':	56 obs. of  4 variables:
 $ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 2 2 2 ...
 $ id   : Factor w/ 14 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ time : Factor w/ 4 levels "0","1","3","6": 1 1 1 1 1 1 1 1 1 1 ...
 $ month: int  60 52 62 58 65 58 53 55 55 60 ...
 - attr(*, "reshapeLong")=List of 4
  ..$ varying:List of 1
  .. ..$ month: chr [1:4] "month0" "month1" "month3" "month6"
  .. ..- attr(*, "v.names")= chr "month"
  .. ..- attr(*, "times")= num [1:4] 0 1 3 6
  ..$ v.names: chr "month"
  ..$ idvar  : chr "id"
  ..$ timevar: chr "time"
> 
> acne.re
     group id time month
1.0      1  1    0    60
2.0      1  2    0    52
3.0      1  3    0    62
4.0      1  4    0    58
5.0      1  5    0    65
6.0      1  6    0    58
7.0      1  7    0    53
8.0      2  8    0    55
9.0      2  9    0    55
10.0     2 10    0    60
11.0     2 11    0    63
12.0     2 12    0    52
13.0     2 13    0    61
14.0     2 14    0    58
1.1      1  1    1    41
2.1      1  2    1    38
3.1      1  3    1    36
4.1      1  4    1    34
5.1      1  5    1    34
6.1      1  6    1    42
7.1      1  7    1    38
8.1      2  8    1    42
9.1      2  9    1    54
10.1     2 10    1    55
11.1     2 11    1    45
12.1     2 12    1    41
13.1     2 13    1    38
14.1     2 14    1    43
1.3      1  1    3    25
2.3      1  2    3    23
3.3      1  3    3    22
4.3      1  4    3    21
5.3      1  5    3    28
6.3      1  6    3    26
7.3      1  7    3    25
8.3      2  8    3    33
9.3      2  9    3    46
10.3     2 10    3    46
11.3     2 11    3    40
12.3     2 12    3    35
13.3     2 13    3    32
14.3     2 14    3    39
1.6      1  1    6    16
2.6      1  2    6    12
3.6      1  3    6    14
4.6      1  4    6    13
5.6      1  5    6    18
6.6      1  6    6    16
7.6      1  7    6    21
8.6      2  8    6    22
9.6      2  9    6    26
10.6     2 10    6    23
11.6     2 11    6    25
12.6     2 12    6    22
13.6     2 13    6    18
14.6     2 14    6    21
> 
> attach(acne.re)
The following objects are masked from acne.re (pos = 4):

    group, id, month, time

> acne.re.anova <- aov(month~group*time+Error(id/time), data=acne.re)
> summary(acne.re.anova)

Error: id
          Df Sum Sq Mean Sq F value   Pr(>F)    
group      1  707.2   707.2   19.71 0.000808 ***
Residuals 12  430.6    35.9                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Error: id:time
           Df Sum Sq Mean Sq F value  Pr(>F)    
time        3  11366    3789  308.78 < 2e-16 ***
group:time  3    396     132   10.77 3.4e-05 ***
Residuals  36    442      12                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> 
> interaction.plot(acne.re$time, acne.re$group, acne.re$month)
> 

E.g. 3

demo1  <- read.csv("https://stats.idre.ucla.edu/stat/data/demo1.csv")
demo1 
str(demo1) ## 모든 변인이 int이므로 (숫자) factor로 바꿔야 한다

## Convert variables to factor
demo1 <- within(demo1, {
  group <- factor(group)
  time <- factor(time)
  id <- factor(id)
}) ## 이제 pulse만 제외하고 모두 factor로 변환된 데이터

str(demo1)

par(cex = .6)

with(demo1, interaction.plot(time, group, pulse,
  ylim = c(5, 20), lty= c(1, 12), lwd = 3,
  ylab = "mean of pulse", xlab = "time", trace.label = "group"))

demo1.aov <- aov(pulse ~ group * time + Error(id), data = demo1)
summary(demo1.aov)
> summary(demo1.aov)

Error: id
          Df Sum Sq Mean Sq F value  Pr(>F)    
group      1 155.04  155.04    3721 1.3e-09 ***
Residuals  6   0.25    0.04                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Error: Within
           Df Sum Sq Mean Sq F value Pr(>F)
time        2 0.0833 0.04167       1  0.397
group:time  2 0.0833 0.04167       1  0.397
Residuals  12 0.5000 0.04167               

demo2

demo2 <- read.csv("https://stats.idre.ucla.edu/stat/data/demo2.csv")
## Convert variables to factor
demo2 <- within(demo2, {
    group <- factor(group)
    time <- factor(time)
    id <- factor(id)
})
demo2

with(demo2, interaction.plot(time, group, pulse,
 ylim = c(10, 40), lty = c(1, 12), lwd = 3,
 ylab = "mean of pulse", xlab = "time", trace.label = "group"))

demo2.aov <- aov(pulse ~ group * time + Error(id), data = demo2)
summary(demo2.aov)

> demo2 <- read.csv("https://stats.idre.ucla.edu/stat/data/demo2.csv")
> ## Convert variables to factor
> demo2 <- within(demo2, {
+     group <- factor(group)
+     time <- factor(time)
+     id <- factor(id)
+ })

> demo2
   id group pulse time
1   1     1    14    1
2   1     1    19    2
3   1     1    29    3
4   2     1    15    1
5   2     1    25    2
6   2     1    26    3
7   3     1    16    1
8   3     1    16    2
9   3     1    31    3
10  4     1    12    1
11  4     1    24    2
12  4     1    32    3
13  5     2    10    1
14  5     2    21    2
15  5     2    24    3
16  6     2    17    1
17  6     2    26    2
18  6     2    35    3
19  7     2    19    1
20  7     2    22    2
21  7     2    32    3
22  8     2    15    1
23  8     2    23    2
24  8     2    34    3
> 
> with(demo2, interaction.plot(time, group, pulse,
+  ylim = c(10, 40), lty = c(1, 12), lwd = 3,
+  ylab = "mean of pulse", xlab = "time", trace.label = "group"))
> 
> demo2.aov <- aov(pulse ~ group * time + Error(id), data = demo2)
> summary(demo2.aov)

Error: id
          Df Sum Sq Mean Sq F value Pr(>F)
group      1  15.04   15.04   0.836  0.396
Residuals  6 107.92   17.99               

Error: Within
           Df Sum Sq Mean Sq F value   Pr(>F)    
time        2  978.2   489.1  53.684 1.03e-06 ***
group:time  2    1.1     0.5   0.059    0.943    
Residuals  12  109.3     9.1                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> 

demo 3

demo3 <- read.csv("https://stats.idre.ucla.edu/stat/data/demo3.csv")
## Convert variables to factor
demo3 <- within(demo3, {
  group <- factor(group)
  time <- factor(time)
  id <- factor(id)
})

with(demo3, interaction.plot(time, group, pulse,
  ylim = c(10, 60), lty = c(1, 12), lwd = 3,
  ylab = "mean of pulse", xlab = "time", trace.label = "group"))

demo3.aov <- aov(pulse ~ group * time + Error(id), data = demo3)
summary(demo3.aov)

> demo3 <- read.csv("https://stats.idre.ucla.edu/stat/data/demo3.csv")
> ## Convert variables to factor
> demo3 <- within(demo3, {
+     group <- factor(group)
+     time <- factor(time)
+     id <- factor(id)
+ })
> 
> with(demo3, interaction.plot(time, group, pulse,
+  ylim = c(10, 60), lty = c(1, 12), lwd = 3,
+  ylab = "mean of pulse", xlab = "time", trace.label = "group"))
> 
> demo3.aov <- aov(pulse ~ group * time + Error(id), data = demo3)
> summary(demo3.aov)

Error: id
          Df Sum Sq Mean Sq F value  Pr(>F)    
group      1 2035.0  2035.0   343.1 1.6e-06 ***
Residuals  6   35.6     5.9                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Error: Within
           Df Sum Sq Mean Sq F value   Pr(>F)    
time        2 2830.3  1415.2   553.8 1.52e-12 ***
group:time  2  200.3   100.2    39.2 5.47e-06 ***
Residuals  12   30.7     2.6                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> 
> 
r/twoway_repeated_measure_anova.txt · Last modified: 2024/05/08 08:34 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki