Analisis varians (ANOVA) adalah metode statistik untuk menguji apakah
rata-rata dari dua atau lebih kelompok berbeda secara signifikan.
Dalam pelatihan ini, kita akan membahas: - ANOVA 1 Arah (One-Way
ANOVA): Menguji pengaruh satu faktor kategorik terhadap
variabel respon. - ANOVA 2 Arah (Two-Way ANOVA):
Menguji pengaruh dua faktor kategorik terhadap variabel respon, termasuk
interaksinya.
# Install package jika belum ada
# install.packages(c("dplyr", "ggplot2"))
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
set.seed(123)
# Dataset ANOVA 1 Arah
pupuk <- rep(c("A", "B", "C"), each = 10)
tinggi <- c(rnorm(10, mean=20, sd=2),
rnorm(10, mean=25, sd=2),
rnorm(10, mean=23, sd=2))
data1 <- data.frame(Pupuk = pupuk, Tinggi = tinggi)
# Dataset ANOVA 2 Arah
tanah <- rep(c("Lempung", "Pasir"), each = 15)
pupuk2 <- rep(c("A", "B", "C"), times = 10)
tinggi2 <- rnorm(30, mean=22, sd=2) +
ifelse(pupuk2=="B", 3, ifelse(pupuk2=="C", 1, 0)) +
ifelse(tanah=="Lempung", 2, 0)
data2 <- data.frame(Pupuk = pupuk2, Tanah = tanah, Tinggi = tinggi2)
head(data1)
## Pupuk Tinggi
## 1 A 18.87905
## 2 A 19.53965
## 3 A 23.11742
## 4 A 20.14102
## 5 A 20.25858
## 6 A 23.43013
head(data2)
## Pupuk Tanah Tinggi
## 1 A Lempung 24.85293
## 2 B Lempung 26.40986
## 3 C Lempung 26.79025
## 4 A Lempung 25.75627
## 5 B Lempung 28.64316
## 6 C Lempung 26.37728
# Visualisasi ANOVA 1 Arah
ggplot(data1, aes(x=Pupuk, y=Tinggi)) +
geom_boxplot(fill="skyblue") +
labs(title="Pengaruh Pupuk terhadap Tinggi Tanaman (ANOVA 1 Arah)")
# Visualisasi ANOVA 2 Arah
ggplot(data2, aes(x=Pupuk, y=Tinggi, fill=Tanah)) +
geom_boxplot() +
labs(title="Pengaruh Pupuk dan Tanah terhadap Tinggi Tanaman (ANOVA 2 Arah)")
Hipotesis:
anova1 <- aov(Tinggi ~ Pupuk, data = data1)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pupuk 2 141.4 70.71 18.58 8.41e-06 ***
## Residuals 27 102.7 3.80
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Uji lanjut (post-hoc Tukey HSD)
TukeyHSD(anova1)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Tinggi ~ Pupuk, data = data1)
##
## $Pupuk
## diff lwr upr p adj
## B-A 5.267993 3.1050814 7.430904 0.0000056
## C-A 2.001631 -0.1612802 4.164542 0.0737458
## C-B -3.266362 -5.4292729 -1.103450 0.0024194
Interpretasi:
Hipotesis:
anova2 <- aov(Tinggi ~ Pupuk * Tanah, data = data2)
summary(anova2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pupuk 2 64.82 32.41 10.166 0.000634 ***
## Tanah 1 45.68 45.68 14.327 0.000905 ***
## Pupuk:Tanah 2 1.06 0.53 0.167 0.847198
## Residuals 24 76.51 3.19
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Visualisasi interaksi
interaction.plot(data2$Pupuk, data2$Tanah, data2$Tinggi,
col=c("red","blue"), lwd=2,
main="Interaksi Pupuk dan Tanah")
Interpretasi:
Tugas:
Pembahasan:
anova1 <- aov(Tinggi ~ Pupuk, data = data1)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pupuk 2 141.4 70.71 18.58 8.41e-06 ***
## Residuals 27 102.7 3.80
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(anova1)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Tinggi ~ Pupuk, data = data1)
##
## $Pupuk
## diff lwr upr p adj
## B-A 5.267993 3.1050814 7.430904 0.0000056
## C-A 2.001631 -0.1612802 4.164542 0.0737458
## C-B -3.266362 -5.4292729 -1.103450 0.0024194
ggplot(data1, aes(x=Pupuk, y=Tinggi, fill=Pupuk)) +
geom_boxplot() +
labs(title="Pengaruh Jenis Pupuk terhadap Tinggi Tanaman")
Interpretasi:
Tugas:
Pembahasan:
anova2 <- aov(Tinggi ~ Pupuk * Tanah, data = data2)
summary(anova2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pupuk 2 64.82 32.41 10.166 0.000634 ***
## Tanah 1 45.68 45.68 14.327 0.000905 ***
## Pupuk:Tanah 2 1.06 0.53 0.167 0.847198
## Residuals 24 76.51 3.19
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
interaction.plot(data2$Pupuk, data2$Tanah, data2$Tinggi,
col=c("red","blue"), lwd=2,
main="Interaksi Pupuk dan Jenis Tanah")
Interpretasi:
Deskripsi: - Faktor 1: Varietas padi (A, B, C). - Faktor 2: Metode irigasi (Tradisional, Modern). - 8 ulangan per kombinasi (48 observasi).
Tugas:
set.seed(99)
Varietas <- rep(c("A","B","C"), each=16)
Irigasi <- rep(rep(c("Tradisional","Modern"), each=8), times=3)
base_mean <- c(A=6, B=7, C=6.5)
hasil <- numeric(48)
for(i in 1:48){
mean_val <- base_mean[Varietas[i]]
if(Irigasi[i]=="Modern") mean_val <- mean_val + 1
hasil[i] <- rnorm(1, mean=mean_val, sd=0.5)
}
data3 <- data.frame(Varietas, Irigasi, Hasil=hasil)
anova3 <- aov(Hasil ~ Varietas * Irigasi, data=data3)
summary(anova3)
## Df Sum Sq Mean Sq F value Pr(>F)
## Varietas 2 13.843 6.922 32.124 3.43e-09 ***
## Irigasi 1 8.041 8.041 37.317 2.77e-07 ***
## Varietas:Irigasi 2 0.778 0.389 1.805 0.177
## Residuals 42 9.050 0.215
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ggplot(data3, aes(x=Varietas, y=Hasil, fill=Irigasi)) +
geom_boxplot() +
labs(title="Pengaruh Varietas dan Irigasi terhadap Hasil Panen")
Interpretasi: