ANOVA dan Uji Lanjut

Author

Windi Pangesti

Pendahuluan

Dalam analisis data, sering muncul pertanyaan apakah terdapat perbedaan rata-rata antara beberapa kelompok yang diamati. Jika hanya terdapat dua kelompok, perbandingan rata-rata dapat dilakukan menggunakan uji t. Namun, apabila jumlah kelompok lebih dari dua, penggunaan uji t secara berulang tidak dianjurkan karena dapat meningkatkan peluang kesalahan dalam pengambilan keputusan.

Untuk mengatasi hal tersebut digunakan Analisis Varians (Analysis of Variance / ANOVA), yaitu metode statistik yang digunakan untuk menguji apakah terdapat perbedaan rata-rata antara tiga kelompok atau lebih dengan membandingkan variasi antar kelompok dan variasi di dalam kelompok.
Secara umum, analisis ini digunakan untuk menjawab pertanyaan seperti berikut:

Note

“Apakah terdapat perbedaan rata-rata antara beberapa kelompok yang diamati?”

Jika hasil uji ANOVA menunjukkan adanya perbedaan yang signifikan, maka analisis biasanya dilanjutkan dengan uji lanjut (post-hoc test) untuk mengetahui pasangan kelompok mana yang memiliki perbedaan rata-rata secara signifikan.

Contoh 1

Seorang peneliti di bidang pertanian ingin mengetahui apakah metode budidaya yang berbeda menghasilkan rata-rata hasil panen yang berbeda. Untuk itu digunakan tiga metode budidaya, yaitu Metode A, Metode B, dan Metode C. Setiap metode diterapkan pada kelompok lahan percobaan yang berbeda, masing-masing terdiri dari 5 petak lahan. Hasil panen padi yang diperoleh dari setiap petak lahan (dalam kuintal per hektar) untuk masing-masing metode adalah sebagai berikut:

Metode A Metode B Metode C
58 58 48
64 69 57
55 71 59
66 64 47
67 68 49

Dengan menggunakan uji ANOVA satu arah pada taraf nyata α = 0.05, tentukan apakah terdapat perbedaan rata-rata hasil panen antara ketiga metode budidaya tersebut.

library(readxl)
Warning: package 'readxl' was built under R version 4.5.2
library(dplyr)
Warning: package 'dplyr' was built under R version 4.5.1

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)
Warning: package 'ggplot2' was built under R version 4.5.1
library(agricolae)
# Membaca data
data1 <- read_excel("data_anova.xlsx", sheet = "Sheet1")
head(data1)
# A tibble: 6 × 2
  Hasil Metode
  <dbl> <chr> 
1    58 A     
2    64 A     
3    55 A     
4    66 A     
5    67 A     
6    58 B     
# Melihat struktur data
data1$Metode <- factor(data1$Metode)
str(data1)
tibble [15 × 2] (S3: tbl_df/tbl/data.frame)
 $ Hasil : num [1:15] 58 64 55 66 67 58 69 71 64 68 ...
 $ Metode: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 2 2 2 2 2 ...
# Mengubah variabel Metode menjadi faktor
data1 %>%
  group_by(Metode) %>%
  summarise(
    Mean = round(mean(Hasil),2),
    SD = round(sd(Hasil),2)
  )
# A tibble: 3 × 3
  Metode  Mean    SD
  <fct>  <dbl> <dbl>
1 A         62  5.24
2 B         66  5.15
3 C         52  5.57
# Visualisasi
# Dotplot
ggplot(data1, aes(x = Metode, y = Hasil, color = Metode)) +
  geom_point(size = 3) +
  labs(
    x = "Metode",
    y = "Hasil"
  ) +
  theme_minimal()

# Boxplot
boxplot(Hasil ~ Metode,
        data = data1,
        col = c("#A8DADC","#F4A261","#E5989B"),
        main = "Boxplot Nilai Berdasarkan Metode",
        xlab = "Metode",
        ylab = "Hasil")

Berdasarkan scatter plot dan boxplot terlihat bahwa hasil pada setiap metode memiliki pola yang berbeda. Metode B cenderung menghasilkan nilai tertinggi, diikuti oleh Metode A, sedangkan Metode C menghasilkan nilai yang relatif lebih rendah. Secara visual terdapat indikasi perbedaan rata-rata hasil antar metode, namun perlu dilakukan uji ANOVA untuk memastikan apakah perbedaan tersebut signifikan secara statistik.

# model ANOVA
model <- aov(Hasil ~ Metode, data = data1)

summary(model)
            Df Sum Sq Mean Sq F value  Pr(>F)   
Metode       2    520  260.00   9.176 0.00382 **
Residuals   12    340   28.33                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Karena p-value lebih kecil dari taraf nyata α = 0.05, maka H₀ ditolak. Artinya, terdapat perbedaan rata-rata hasil yang signifikan antara metode A, B, dan C. Oleh karena itu, analisis dapat dilanjutkan dengan uji lanjut (post-hoc test) seperti LSD atau Tukey HSD untuk mengetahui pasangan metode mana yang berbeda secara signifikan.

# uji lanjut LSD / BNT
lsd <- LSD.test(model, "Metode", p.adj = "none")
lsd$groups
  Hasil groups
B    66      a
A    62      a
C    52      b
plot(lsd, variation="SE")

Huruf “a” pada Metode B dan Metode A menunjukkan bahwa rata-rata hasil kedua metode tersebut tidak berbeda secara signifikan.

Huruf “b” pada Metode C menunjukkan bahwa metode ini memiliki rata-rata yang berbeda secara signifikan dibandingkan Metode A dan Metode B.

Kesimpulan:

  • Metode A dan Metode B memiliki rata-rata hasil yang mirip dan tidak berbeda secara statistik.

  • Metode C memiliki rata-rata hasil yang berbeda signifikan dibandingkan metode lainnya, dengan nilai rata-rata yang lebih rendah.

# uji lanjut HSD / BNJ
hsd <- HSD.test(model, "Metode")
hsd$groups
  Hasil groups
B    66      a
A    62      a
C    52      b
plot(hsd, variation="SE")

Kesimpulan:

  • Metode A dan Metode B memiliki rata-rata hasil yang tidak berbeda secara signifikan.

  • Metode C memiliki rata-rata hasil yang berbeda signifikan dari kedua metode lainnya. Selain itu, rata-rata hasil Metode C lebih rendah dibandingkan Metode A dan Metode B.

Contoh 2

# Membaca data
data2 <- read_excel("data_anova.xlsx", sheet = "Sheet2")
head(data2)
# A tibble: 6 × 2
  Barisan Nilai
  <chr>   <dbl>
1 depan      82
2 depan      83
3 depan      97
4 depan      93
5 depan      55
6 depan      67
# struktur data
data2$Barisan <- factor(data2$Barisan)
str(data2)
tibble [24 × 2] (S3: tbl_df/tbl/data.frame)
 $ Barisan: Factor w/ 3 levels "belakang","depan",..: 2 2 2 2 2 2 2 3 3 3 ...
 $ Nilai  : num [1:24] 82 83 97 93 55 67 53 83 78 68 ...
anova = aov(Nilai~Barisan, data=data2)
summary(anova)
            Df Sum Sq Mean Sq F value  Pr(>F)   
Barisan      2   1902   950.8   5.896 0.00928 **
Residuals   21   3386   161.3                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Karena p-value = 0.00928 < 0.05, sehingga kita tolak H₀.

Kesimpulan: Terdapat perbedaan signifikan dalam rata-rata nilai antar kelompok Barisan.

lsd <- LSD.test(anova,"Barisan", p.adj="none")
plot(lsd, variation="SE")

  • Huruf “a” pada kelompok “depan” dan “tengah” Artinya, rata-rata kedua kelompok ini tidak berbeda secara signifikan.
  • Huruf “b” pada kelompok “belakang” Berarti kelompok ini memiliki rata-rata yang berbeda secara signifikan dari kelompok “depan” dan “tengah”.

Kesimpulan : Kelompok “depan” dan “tengah” memiliki nilai rata-rata yang mirip dan tidak berbeda secara statistik. Kelompok “belakang” memiliki perbedaan signifikan dibandingkan kelompok lainnya (lebih rendah rata-ratanya).

hsd <- HSD.test(anova,"Barisan")
plot(hsd, variation="SE")

Huruf “a” pada barisan depan menunjukkan bahwa barisan ini memiliki rata-rata nilai tertinggi.

Huruf “b” pada barisan belakang menunjukkan bahwa barisan ini memiliki rata-rata nilai yang berbeda secara signifikan dibandingkan barisan depan.

Huruf “ab” pada barisan tengah menunjukkan bahwa rata-rata nilai barisan tengah tidak berbeda signifikan baik dengan barisan depan maupun dengan barisan belakang.

Kesimpulan:

  • Barisan depan dan belakang memiliki rata-rata nilai yang berbeda signifikan.

  • Barisan tengah tidak berbeda signifikan dengan barisan depan maupun barisan belakang.

  • Secara umum, barisan depan memiliki rata-rata nilai tertinggi, sedangkan barisan belakang memiliki rata-rata nilai terendah.