# ============================================================
# LATIHAN 1 — ANOVA DUA JALUR
# ============================================================

# Data tinggi tanaman
tinggi <- c(
  25,28,26,27, 20,22,21,23, 30,32,31,29,
  30,32,31,33, 25,27,26,28, 35,37,36,34,
  28,30,29,31, 23,25,24,26, 33,35,34,32
)

# Faktor pupuk
pupuk <- factor(rep(c("Organik", "Anorganik", "Campuran"),
                    each = 12))

# Faktor tanah
tanah <- factor(rep(rep(c("Lempung", "Pasir", "Humus"),
                        each = 4), 3))

# Membuat data frame
data <- data.frame(tinggi, pupuk, tanah)

# Melihat data
data
##    tinggi     pupuk   tanah
## 1      25   Organik Lempung
## 2      28   Organik Lempung
## 3      26   Organik Lempung
## 4      27   Organik Lempung
## 5      20   Organik   Pasir
## 6      22   Organik   Pasir
## 7      21   Organik   Pasir
## 8      23   Organik   Pasir
## 9      30   Organik   Humus
## 10     32   Organik   Humus
## 11     31   Organik   Humus
## 12     29   Organik   Humus
## 13     30 Anorganik Lempung
## 14     32 Anorganik Lempung
## 15     31 Anorganik Lempung
## 16     33 Anorganik Lempung
## 17     25 Anorganik   Pasir
## 18     27 Anorganik   Pasir
## 19     26 Anorganik   Pasir
## 20     28 Anorganik   Pasir
## 21     35 Anorganik   Humus
## 22     37 Anorganik   Humus
## 23     36 Anorganik   Humus
## 24     34 Anorganik   Humus
## 25     28  Campuran Lempung
## 26     30  Campuran Lempung
## 27     29  Campuran Lempung
## 28     31  Campuran Lempung
## 29     23  Campuran   Pasir
## 30     25  Campuran   Pasir
## 31     24  Campuran   Pasir
## 32     26  Campuran   Pasir
## 33     33  Campuran   Humus
## 34     35  Campuran   Humus
## 35     34  Campuran   Humus
## 36     32  Campuran   Humus
# ============================================================
# MODEL ANOVA DUA JALUR
# ============================================================

model <- aov(tinggi ~ pupuk * tanah, data = data)

# Output ANOVA
summary(model)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## pupuk        2    152   76.00    45.6 2.20e-09 ***
## tanah        2    488  244.00   146.4 3.22e-15 ***
## pupuk:tanah  4      0    0.00     0.0        1    
## Residuals   27     45    1.67                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ============================================================
# UJI LANJUTAN
# ============================================================

TukeyHSD(model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = tinggi ~ pupuk * tanah, data = data)
## 
## $pupuk
##                    diff       lwr        upr     p adj
## Campuran-Anorganik   -2 -3.306768 -0.6932321 0.0021250
## Organik-Anorganik    -5 -6.306768 -3.6932321 0.0000000
## Organik-Campuran     -3 -4.306768 -1.6932321 0.0000139
## 
## $tanah
##               diff        lwr       upr p adj
## Lempung-Humus   -4  -5.306768 -2.693232 1e-07
## Pasir-Humus     -9 -10.306768 -7.693232 0e+00
## Pasir-Lempung   -5  -6.306768 -3.693232 0e+00
## 
## $`pupuk:tanah`
##                                             diff        lwr          upr
## Campuran:Humus-Anorganik:Humus     -2.000000e+00  -5.071534   1.07153421
## Organik:Humus-Anorganik:Humus      -5.000000e+00  -8.071534  -1.92846579
## Anorganik:Lempung-Anorganik:Humus  -4.000000e+00  -7.071534  -0.92846579
## Campuran:Lempung-Anorganik:Humus   -6.000000e+00  -9.071534  -2.92846579
## Organik:Lempung-Anorganik:Humus    -9.000000e+00 -12.071534  -5.92846579
## Anorganik:Pasir-Anorganik:Humus    -9.000000e+00 -12.071534  -5.92846579
## Campuran:Pasir-Anorganik:Humus     -1.100000e+01 -14.071534  -7.92846579
## Organik:Pasir-Anorganik:Humus      -1.400000e+01 -17.071534 -10.92846579
## Organik:Humus-Campuran:Humus       -3.000000e+00  -6.071534   0.07153421
## Anorganik:Lempung-Campuran:Humus   -2.000000e+00  -5.071534   1.07153421
## Campuran:Lempung-Campuran:Humus    -4.000000e+00  -7.071534  -0.92846579
## Organik:Lempung-Campuran:Humus     -7.000000e+00 -10.071534  -3.92846579
## Anorganik:Pasir-Campuran:Humus     -7.000000e+00 -10.071534  -3.92846579
## Campuran:Pasir-Campuran:Humus      -9.000000e+00 -12.071534  -5.92846579
## Organik:Pasir-Campuran:Humus       -1.200000e+01 -15.071534  -8.92846579
## Anorganik:Lempung-Organik:Humus     1.000000e+00  -2.071534   4.07153421
## Campuran:Lempung-Organik:Humus     -1.000000e+00  -4.071534   2.07153421
## Organik:Lempung-Organik:Humus      -4.000000e+00  -7.071534  -0.92846579
## Anorganik:Pasir-Organik:Humus      -4.000000e+00  -7.071534  -0.92846579
## Campuran:Pasir-Organik:Humus       -6.000000e+00  -9.071534  -2.92846579
## Organik:Pasir-Organik:Humus        -9.000000e+00 -12.071534  -5.92846579
## Campuran:Lempung-Anorganik:Lempung -2.000000e+00  -5.071534   1.07153421
## Organik:Lempung-Anorganik:Lempung  -5.000000e+00  -8.071534  -1.92846579
## Anorganik:Pasir-Anorganik:Lempung  -5.000000e+00  -8.071534  -1.92846579
## Campuran:Pasir-Anorganik:Lempung   -7.000000e+00 -10.071534  -3.92846579
## Organik:Pasir-Anorganik:Lempung    -1.000000e+01 -13.071534  -6.92846579
## Organik:Lempung-Campuran:Lempung   -3.000000e+00  -6.071534   0.07153421
## Anorganik:Pasir-Campuran:Lempung   -3.000000e+00  -6.071534   0.07153421
## Campuran:Pasir-Campuran:Lempung    -5.000000e+00  -8.071534  -1.92846579
## Organik:Pasir-Campuran:Lempung     -8.000000e+00 -11.071534  -4.92846579
## Anorganik:Pasir-Organik:Lempung     3.552714e-15  -3.071534   3.07153421
## Campuran:Pasir-Organik:Lempung     -2.000000e+00  -5.071534   1.07153421
## Organik:Pasir-Organik:Lempung      -5.000000e+00  -8.071534  -1.92846579
## Campuran:Pasir-Anorganik:Pasir     -2.000000e+00  -5.071534   1.07153421
## Organik:Pasir-Anorganik:Pasir      -5.000000e+00  -8.071534  -1.92846579
## Organik:Pasir-Campuran:Pasir       -3.000000e+00  -6.071534   0.07153421
##                                        p adj
## Campuran:Humus-Anorganik:Humus     0.4387176
## Organik:Humus-Anorganik:Humus      0.0002547
## Anorganik:Lempung-Anorganik:Humus  0.0043156
## Campuran:Lempung-Anorganik:Humus   0.0000151
## Organik:Lempung-Anorganik:Humus    0.0000000
## Anorganik:Pasir-Anorganik:Humus    0.0000000
## Campuran:Pasir-Anorganik:Humus     0.0000000
## Organik:Pasir-Anorganik:Humus      0.0000000
## Organik:Humus-Campuran:Humus       0.0594707
## Anorganik:Lempung-Campuran:Humus   0.4387176
## Campuran:Lempung-Campuran:Humus    0.0043156
## Organik:Lempung-Campuran:Humus     0.0000010
## Anorganik:Pasir-Campuran:Humus     0.0000010
## Campuran:Pasir-Campuran:Humus      0.0000000
## Organik:Pasir-Campuran:Humus       0.0000000
## Anorganik:Lempung-Organik:Humus    0.9699775
## Campuran:Lempung-Organik:Humus     0.9699775
## Organik:Lempung-Organik:Humus      0.0043156
## Anorganik:Pasir-Organik:Humus      0.0043156
## Campuran:Pasir-Organik:Humus       0.0000151
## Organik:Pasir-Organik:Humus        0.0000000
## Campuran:Lempung-Anorganik:Lempung 0.4387176
## Organik:Lempung-Anorganik:Lempung  0.0002547
## Anorganik:Pasir-Anorganik:Lempung  0.0002547
## Campuran:Pasir-Anorganik:Lempung   0.0000010
## Organik:Pasir-Anorganik:Lempung    0.0000000
## Organik:Lempung-Campuran:Lempung   0.0594707
## Anorganik:Pasir-Campuran:Lempung   0.0594707
## Campuran:Pasir-Campuran:Lempung    0.0002547
## Organik:Pasir-Campuran:Lempung     0.0000001
## Anorganik:Pasir-Organik:Lempung    1.0000000
## Campuran:Pasir-Organik:Lempung     0.4387176
## Organik:Pasir-Organik:Lempung      0.0002547
## Campuran:Pasir-Anorganik:Pasir     0.4387176
## Organik:Pasir-Anorganik:Pasir      0.0002547
## Organik:Pasir-Campuran:Pasir       0.0594707
# ============================================================
# INTERACTION PLOT
# ============================================================

interaction.plot(
  pupuk,
  tanah,
  tinggi,
  type = "b",
  xlab = "Jenis Pupuk",
  ylab = "Rata-rata Tinggi Tanaman",
  trace.label = "Jenis Tanah")

# ============================================================
# LATIHAN 2 — MANOVA
# ============================================================

pendapatan <- c(
  3, 4, 3.5, 4.5, 3.8,
  6, 7, 6.5, 7.5, 6.8,
  10, 12, 11, 13, 11.5)

kepuasan <- c(
  6, 7, 6.5, 7, 6.8,
  8, 9, 8.5, 9, 8.8,
  9, 10, 9.5, 10, 9.8)

pendidikan <- factor(rep(c("SMA", "S1", "S2"), each = 5))

Y <- cbind(pendapatan, kepuasan)

# MANOVA
model_manova <- manova(Y ~ pendidikan)

# Wilks
summary(model_manova, test = "Wilks")
##            Df     Wilks approx F num Df den Df   Pr(>F)    
## pendidikan  2 0.0080673   55.735      4     22 3.38e-11 ***
## Residuals  12                                              
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Pillai
summary(model_manova, test = "Pillai")
##            Df Pillai approx F num Df den Df    Pr(>F)    
## pendidikan  2  1.759   43.784      4     24 1.085e-10 ***
## Residuals  12                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ============================================================
# RATA-RATA
# ============================================================

mean_SMA <- colMeans(Y[pendidikan == "SMA", ])
mean_S1  <- colMeans(Y[pendidikan == "S1", ])
mean_S2  <- colMeans(Y[pendidikan == "S2", ])

mean_total <- colMeans(Y)

mean_SMA
## pendapatan   kepuasan 
##       3.76       6.66
mean_S1
## pendapatan   kepuasan 
##       6.76       8.66
mean_S2
## pendapatan   kepuasan 
##      11.50       9.66
mean_total
## pendapatan   kepuasan 
##   7.340000   8.326667
# ============================================================
# MATRIKS B
# ============================================================

B <- matrix(0, 2, 2)

for (m in c("SMA", "S1", "S2")) {
  mean_group <- colMeans(Y[pendidikan == m, ])
  selisih <- mean_group - mean_total
  B <- B + 5 * (selisih %*% t(selisih))}
B
##      pendapatan kepuasan
## [1,]    152.292 56.60000
## [2,]     56.600 23.33333
# ============================================================
# MATRIKS W
# ============================================================

W <- matrix(0, 2, 2)

for (m in c("SMA", "S1", "S2")) {
  data_group <- Y[pendidikan == m, ]
  mean_group <- colMeans(data_group)

  for (i in 1:nrow(data_group)) {
    selisih <- data_group[i, ] - mean_group
    W <- W + selisih %*% t(selisih)}}
W
##      pendapatan kepuasan
## [1,]      7.504    3.514
## [2,]      3.514    2.136
# ============================================================
# MATRIKS T
# ============================================================

T <- B + W
T
##      pendapatan kepuasan
## [1,]    159.796 60.11400
## [2,]     60.114 25.46933
# ============================================================
# WILKS' LAMBDA MANUAL
# ============================================================

wilks_lambda <- det(W) / det(T)
wilks_lambda
## [1] 0.008067319