library(TukeyC)
## Loading required package: doBy
df <- read.table(textConnection("est cult r resp
A1 B1 1 3.1
A1 B1 2 3.3
A1 B1 3 3.3
A1 B1 4 3.9
A1 B2 1 3.2
A1 B2 2 3.1
A1 B2 3 3.3
A1 B2 4 3.6
A1 B3 1 3.2
A1 B3 2 3
A1 B3 3 3.2
A1 B3 4 3.5
A1 B4 1 3.4
A1 B4 2 3.6
A1 B4 3 3.2
A1 B4 4 3.8
A1 B5 1 3
A1 B5 2 3.1
A1 B5 3 3.1
A1 B5 4 3.2
A2 B1 1 3.8
A2 B1 2 3
A2 B1 3 3.9
A2 B1 4 3.6
A2 B2 1 3.8
A2 B2 2 4.3
A2 B2 3 3.9
A2 B2 4 3.6
A2 B3 1 3.6
A2 B3 2 3.1
A2 B3 3 3.5
A2 B3 4 2.9
A2 B4 1 4.7
A2 B4 2 4
A2 B4 3 4.4
A2 B4 4 4.4
A2 B5 1 4.4
A2 B5 2 4.1
A2 B5 3 3.9
A2 B5 4 4
A3 B1 1 2.4
A3 B1 2 2.6
A3 B1 3 2.5
A3 B1 4 2.9
A3 B2 1 2.6
A3 B2 2 2.9
A3 B2 3 2.4
A3 B2 4 2.8
A3 B3 1 2.4
A3 B3 2 2.3
A3 B3 3 2.4
A3 B3 4 2.6
A3 B4 1 3.6
A3 B4 2 4.2
A3 B4 3 3.6
A3 B4 4 3.5
A3 B5 1 3.1
A3 B5 2 2.9
A3 B5 3 3.3
A3 B5 4 3.6
A4 B1 1 2.1
A4 B1 2 2.5
A4 B1 3 2.6
A4 B1 4 2.8
A4 B2 1 2.5
A4 B2 2 3.2
A4 B2 3 2.9
A4 B2 4 3.1
A4 B3 1 2.1
A4 B3 2 2.5
A4 B3 3 2.9
A4 B3 4 2.6
A4 B4 1 4.3
A4 B4 2 4
A4 B4 3 3.6
A4 B4 4 4.2
A4 B5 1 3.3
A4 B5 2 3.9
A4 B5 3 3.4
A4 B5 4 3.7
A5 B1 1 1.2
A5 B1 2 1.5
A5 B1 3 1.6
A5 B1 4 1.7
A5 B2 1 1.8
A5 B2 2 2.4
A5 B2 3 1.7
A5 B2 4 2.4
A5 B3 1 1.9
A5 B3 2 1.6
A5 B3 3 2
A5 B3 4 2.2
A5 B4 1 3.5
A5 B4 2 3.2
A5 B4 3 3.7
A5 B4 4 3.3
A5 B5 1 3.3
A5 B5 2 2.9
A5 B5 3 3.1
A5 B5 4 3
A6 B1 1 1.2
A6 B1 2 1.7
A6 B1 3 1.1
A6 B1 4 1.3
A6 B2 1 1.3
A6 B2 2 1.9
A6 B2 3 1.5
A6 B2 4 2.1
A6 B3 1 1.4
A6 B3 2 1.9
A6 B3 3 1.4
A6 B3 4 1.5
A6 B4 1 2.9
A6 B4 2 2.8
A6 B4 3 3.1
A6 B4 4 2.4
A6 B5 1 2.5
A6 B5 2 2.9
A6 B5 3 2.2
A6 B5 4 2.9
"), header = TRUE)
df
## est cult r resp
## 1 A1 B1 1 3.1
## 2 A1 B1 2 3.3
## 3 A1 B1 3 3.3
## 4 A1 B1 4 3.9
## 5 A1 B2 1 3.2
## 6 A1 B2 2 3.1
## 7 A1 B2 3 3.3
## 8 A1 B2 4 3.6
## 9 A1 B3 1 3.2
## 10 A1 B3 2 3.0
## 11 A1 B3 3 3.2
## 12 A1 B3 4 3.5
## 13 A1 B4 1 3.4
## 14 A1 B4 2 3.6
## 15 A1 B4 3 3.2
## 16 A1 B4 4 3.8
## 17 A1 B5 1 3.0
## 18 A1 B5 2 3.1
## 19 A1 B5 3 3.1
## 20 A1 B5 4 3.2
## 21 A2 B1 1 3.8
## 22 A2 B1 2 3.0
## 23 A2 B1 3 3.9
## 24 A2 B1 4 3.6
## 25 A2 B2 1 3.8
## 26 A2 B2 2 4.3
## 27 A2 B2 3 3.9
## 28 A2 B2 4 3.6
## 29 A2 B3 1 3.6
## 30 A2 B3 2 3.1
## 31 A2 B3 3 3.5
## 32 A2 B3 4 2.9
## 33 A2 B4 1 4.7
## 34 A2 B4 2 4.0
## 35 A2 B4 3 4.4
## 36 A2 B4 4 4.4
## 37 A2 B5 1 4.4
## 38 A2 B5 2 4.1
## 39 A2 B5 3 3.9
## 40 A2 B5 4 4.0
## 41 A3 B1 1 2.4
## 42 A3 B1 2 2.6
## 43 A3 B1 3 2.5
## 44 A3 B1 4 2.9
## 45 A3 B2 1 2.6
## 46 A3 B2 2 2.9
## 47 A3 B2 3 2.4
## 48 A3 B2 4 2.8
## 49 A3 B3 1 2.4
## 50 A3 B3 2 2.3
## 51 A3 B3 3 2.4
## 52 A3 B3 4 2.6
## 53 A3 B4 1 3.6
## 54 A3 B4 2 4.2
## 55 A3 B4 3 3.6
## 56 A3 B4 4 3.5
## 57 A3 B5 1 3.1
## 58 A3 B5 2 2.9
## 59 A3 B5 3 3.3
## 60 A3 B5 4 3.6
## 61 A4 B1 1 2.1
## 62 A4 B1 2 2.5
## 63 A4 B1 3 2.6
## 64 A4 B1 4 2.8
## 65 A4 B2 1 2.5
## 66 A4 B2 2 3.2
## 67 A4 B2 3 2.9
## 68 A4 B2 4 3.1
## 69 A4 B3 1 2.1
## 70 A4 B3 2 2.5
## 71 A4 B3 3 2.9
## 72 A4 B3 4 2.6
## 73 A4 B4 1 4.3
## 74 A4 B4 2 4.0
## 75 A4 B4 3 3.6
## 76 A4 B4 4 4.2
## 77 A4 B5 1 3.3
## 78 A4 B5 2 3.9
## 79 A4 B5 3 3.4
## 80 A4 B5 4 3.7
## 81 A5 B1 1 1.2
## 82 A5 B1 2 1.5
## 83 A5 B1 3 1.6
## 84 A5 B1 4 1.7
## 85 A5 B2 1 1.8
## 86 A5 B2 2 2.4
## 87 A5 B2 3 1.7
## 88 A5 B2 4 2.4
## 89 A5 B3 1 1.9
## 90 A5 B3 2 1.6
## 91 A5 B3 3 2.0
## 92 A5 B3 4 2.2
## 93 A5 B4 1 3.5
## 94 A5 B4 2 3.2
## 95 A5 B4 3 3.7
## 96 A5 B4 4 3.3
## 97 A5 B5 1 3.3
## 98 A5 B5 2 2.9
## 99 A5 B5 3 3.1
## 100 A5 B5 4 3.0
## 101 A6 B1 1 1.2
## 102 A6 B1 2 1.7
## 103 A6 B1 3 1.1
## 104 A6 B1 4 1.3
## 105 A6 B2 1 1.3
## 106 A6 B2 2 1.9
## 107 A6 B2 3 1.5
## 108 A6 B2 4 2.1
## 109 A6 B3 1 1.4
## 110 A6 B3 2 1.9
## 111 A6 B3 3 1.4
## 112 A6 B3 4 1.5
## 113 A6 B4 1 2.9
## 114 A6 B4 2 2.8
## 115 A6 B4 3 3.1
## 116 A6 B4 4 2.4
## 117 A6 B5 1 2.5
## 118 A6 B5 2 2.9
## 119 A6 B5 3 2.2
## 120 A6 B5 4 2.9
str(df)
## 'data.frame': 120 obs. of 4 variables:
## $ est : Factor w/ 6 levels "A1","A2","A3",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ cult: Factor w/ 5 levels "B1","B2","B3",..: 1 1 1 1 2 2 2 2 3 3 ...
## $ r : int 1 2 3 4 1 2 3 4 1 2 ...
## $ resp: num 3.1 3.3 3.3 3.9 3.2 3.1 3.3 3.6 3.2 3 ...
df$r <- as.factor(df$r)
av <- aov(resp ~ r + est * cult + Error(r / est ), data = df)
summary(av)
##
## Error: r
## Df Sum Sq Mean Sq
## r 3 0.5737 0.1912
##
## Error: r:est
## Df Sum Sq Mean Sq F value Pr(>F)
## est 5 43.12 8.624 70.1 7.31e-10 ***
## Residuals 15 1.85 0.123
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Error: Within
## Df Sum Sq Mean Sq F value Pr(>F)
## cult 4 25.312 6.328 99.785 < 2e-16 ***
## est:cult 20 7.562 0.378 5.962 7.86e-09 ***
## Residuals 72 4.566 0.063
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cv(av)
## cv(a) cv(b)
## 11.96 8.59
tk1 <- TukeyC(av,which = 'est', error="Within")
tk1[["out"]][["Result"]]
## Means G1 G2 G3 G4 G5
## A2 3.85 a
## A1 3.31 b
## A4 3.11 b c
## A3 2.93 c
## A5 2.40 d
## A6 2.00 e
tk2 <- TukeyC(av, which = 'cult', error="Within")
tk2[["out"]][["Result"]]
## Means G1 G2 G3 G4
## B4 3.64 a
## B5 3.28 b
## B2 2.76 c
## B3 2.49 d
## B1 2.48 d
tk3 <- TukeyC(av, which = 'est:cult', error="Within", fl1=1)
tk3[["out"]][["Result"]]
## Means G1
## A1/B4 3.50 a
## A1/B1 3.40 a
## A1/B2 3.30 a
## A1/B3 3.23 a
## A1/B5 3.10 a
tk4 <- TukeyC(av, which = 'est:cult', error="Within", fl1=2)
tk4[["out"]][["Result"]]
## Means G1 G2 G3
## A2/B4 4.38 a
## A2/B5 4.10 a
## A2/B2 3.90 a b
## A2/B1 3.58 b c
## A2/B3 3.27 c
tk5 <- TukeyC(av, which = 'est:cult', error="Within", fl1=3)
tk5[["out"]][["Result"]]
## Means G1 G2 G3
## A3/B4 3.73 a
## A3/B5 3.23 b
## A3/B2 2.67 c
## A3/B1 2.60 c
## A3/B3 2.42 c
tk6 <- TukeyC(av, which = 'est:cult', error="Within", fl1=4)
tk6[["out"]][["Result"]]
## Means G1 G2
## A4/B4 4.03 a
## A4/B5 3.58 a
## A4/B2 2.92 b
## A4/B3 2.52 b
## A4/B1 2.50 b
tk7 <- TukeyC(av, which = 'est:cult', error="Within", fl1=5)
tk7[["out"]][["Result"]]
## Means G1 G2 G3
## A5/B4 3.42 a
## A5/B5 3.08 a
## A5/B2 2.08 b
## A5/B3 1.92 b c
## A5/B1 1.50 c
tk8 <- TukeyC(av, which = 'est:cult', error="Within", fl1=6)
tk8[["out"]][["Result"]]
## Means G1 G2
## A6/B4 2.80 a
## A6/B5 2.62 a
## A6/B2 1.70 b
## A6/B3 1.55 b
## A6/B1 1.32 b