ANOVA di R: Uji Satu Arah & Dua Arah dengan Contoh
โก Ringkasan Cerdas
ANOVA di R membandingkan rata-rata dari tiga kelompok atau lebih dengan membagi total variasi menjadi komponen antar kelompok dan dalam kelompok. Panduan ini menjalankan uji satu arah dan dua arah pada dataset racun, memeriksa asumsi, dan mengisolasi pasangan yang berbeda dengan uji Tukey HSD.

Apa itu ANOVA?
Analisis Varians (ANOVA) adalah teknik statistik yang digunakan untuk membandingkan rata-rata dua kelompok atau lebih. Tes ini bekerja dengan membagi total variasi dalam pengukuran menjadi bagian yang dijelaskan oleh keanggotaan kelompok dan bagian yang tersisa sebagai noise acak. Oleh karena itu, ANOVA di R memberi tahu Anda apakah setidaknya satu rata-rata kelompok berbeda dari yang lain, bukan yang mana. Ini adalah perluasan langsung dari uji-t untuk situasi di mana variabel faktor memiliki lebih dari dua level.
Sebelum menjalankan pengujian, ada baiknya mengetahui anggota keluarga ANOVA mana yang sesuai dengan desain Anda.
Jenis-jenis Tes ANOVA di R
โANOVAโ adalah serangkaian uji statistik, bukan prosedur tunggal. Memilih anggota yang tepat bergantung pada berapa banyak faktor yang Anda miliki dan bagaimana data dikumpulkan.
| uji | Kapan menggunakannya? | Panggilan R |
|---|---|---|
| ANOVA satu arah | Satu faktor dengan tiga tingkatan atau lebih | aov(y ~ x, data = df) |
| ANOVA dua arah | Dua faktor independen | aov(y ~ x1 + x2, data = df) |
| Dua arah dengan interaksi | Pengaruh suatu faktor bergantung pada faktor lainnya. | aov(y ~ x1 * x2, data = df) |
| ANOVA pengukuran berulang | Subjek yang sama diukur lebih dari sekali. | aov(y ~ x + Error(subjek/x)) |
| ANCOVA | Variabel kovariat kontinu harus dikendalikan. | aov(y ~ x + kovariat, data = df) |
| MANOVA | Dua atau lebih variabel respons sekaligus | manova(cbind(y1, y2) ~ x) |
Tutorial ini membahas tiga varian pertama. Varian lainnya menggunakan antarmuka aov() yang sama, jadi setelah Anda dapat membaca satu tabel keluaran, Anda dapat membaca semuanya.
ANOVA vs Uji T di R: Perbedaan Utama
Kedua tes tersebut membandingkan nilai rata-rata, jadi penting untuk bersikap tepat mengenai di mana satu tes menggantikan tes lainnya.
| Kriteria | Uji-T | ANOVA |
|---|---|---|
| Jumlah grup | Tepat dua | Dua atau lebih |
| Uji statistik | t | F, sama dengan t kuadrat ketika ada dua kelompok |
| Hasil | Menyebutkan arah perbedaan tersebut | Hanya laporan yang menunjukkan adanya perbedaan |
| Perlu dilakukan tindak lanjut. | None | Uji post hoc seperti Tukey HSD |
| fungsi R | t.uji() | aov() |
Godaan untuk melakukan tiga uji t terpisah dengan tiga kelompok adalah melakukan tiga uji t terpisah. Hindari godaan itu. Setiap uji memiliki tingkat kesalahan 5 persen, sehingga tiga perbandingan meningkatkan kemungkinan positif palsu menjadi sekitar 14 persen. ANOVA menjawab pertanyaan yang sama dengan satu uji tunggal, dan Tukey HSD kemudian menangani detail pasangan dengan tingkat kesalahan yang terkendali. Untuk kasus dua kelompok, lihat tutorial uji-t.
ANOVA satu arah
Ada banyak situasi di mana Anda perlu membandingkan mean antara beberapa kelompok. Misalnya, departemen pemasaran ingin mengetahui apakah tiga tim memiliki kinerja penjualan yang sama.
- Tim: 3 faktor level: A, B, dan C
- Penjualan: Ukuran kinerja
Uji ANOVA dapat mengetahui apakah ketiga kelompok memiliki kinerja yang serupa.
Untuk memperjelas apakah data tersebut berasal dari populasi yang sama, Anda dapat melakukan a analisis varians satu arah (ANOVA satu arah selanjutnya). Seperti uji statistik lainnya, uji ini memberikan bukti tentang apakah hipotesis H0 dapat ditolak. Perlu dicatat bahwa gagal menolak H0 tidak sama dengan membuktikan kebenarannya.
Hipotesis dalam uji ANOVA satu arah
- H0: Rata-rata antar kelompok adalah sama
- H1 : Paling tidak mean satu kelompok berbeda-beda
Dengan kata lain, gagal menolak H0 berarti tidak ada cukup bukti untuk menyimpulkan bahwa rata-rata kelompok mana pun berbeda dari yang lain.
Uji ini mirip dengan uji t, tetapi ANOVA adalah pilihan yang tepat ketika terdapat lebih dari dua kelompok. Dengan tepat dua kelompok, kedua uji tersebut setara dan statistik F sama dengan kuadrat dari statistik t.
Asumsi
ANOVA satu arah didasarkan pada tiga kondisi: observasi diambil secara acak dan independen satu sama lain, residual dalam setiap kelompok kira-kira terdistribusi normal, dan variansnya sama di setiap kelompok (homogenitas varians). Bagian tentang pengecekan asumsi di bawah ini menunjukkan cara menguji masing-masing asumsi di R.
Interpretasi uji ANOVA
Statistik F digunakan untuk menguji apakah data berasal dari populasi yang berbeda secara signifikan, yaitu mean sampel yang berbeda.
Untuk menghitung statistik F, Anda perlu membaginya variabilitas antar kelompok atas variabilitas dalam kelompok.
The antar kelompok Variabilitas mencerminkan seberapa jauh rata-rata setiap kelompok dari rata-rata keseluruhan. Bandingkan kedua grafik di bawah ini untuk memahami idenya.
Grafik sebelah kiri menunjukkan sedikit sekali variasi antara ketiga kelompok, sehingga rata-rata ketiga kelompok tersebut berada berdekatan. secara keseluruhan berarti.
Grafik sebelah kanan memplot tiga distribusi yang berjauhan tanpa tumpang tindih, sehingga selisih antara rata-rata keseluruhan dan rata-rata setiap kelompok sangat besar.
The dalam kelompok Variabilitas mengukur seberapa jauh pengamatan individu menyimpang dari rata-rata kelompoknya sendiri. Beberapa titik berada jauh dari rata-rata kelompoknya, dan istilah dalam kelompok menangkap persis penyebaran tersebut, yang merupakan kesalahan pengambilan sampel.
Untuk memahami secara visual konsep variabilitas dalam kelompok, lihat grafik di bawah ini.
Bagian kiri grafik menunjukkan distribusi dari tiga kelompok berbeda. Anda memperbesar sebaran setiap sampel dan terlihat jelas bahwa varians individunya besar. Statistik F menurun, sehingga Anda gagal menolak hipotesis nol.
Bagian kanan menunjukkan sampel dengan nilai rata-rata yang sama tetapi sebaran yang jauh lebih rendah. Hal itu meningkatkan statistik F dan mendukung hipotesis alternatif.
Anda dapat menggunakan kedua ukuran tersebut untuk membangun statistik-F. Sangat intuitif untuk memahami F-statistik. Jika pembilangnya bertambah, berarti variabilitas antar kelompok tinggi, dan kemungkinan besar kelompok-kelompok dalam sampel diambil dari distribusi yang sama sekali berbeda.
Dengan kata lain, nilai F-statistik yang rendah menunjukkan sedikit atau tidak ada perbedaan yang berarti antara rata-rata kelompok.
Contoh Uji ANOVA Satu Arah
Anda akan menggunakan kumpulan data racun untuk menerapkan uji ANOVA satu arah. Kumpulan data tersebut berisi 48 baris dan 3 variabel:
- Waktu: Waktu kelangsungan hidup hewan
- racun: Jenis racun yang digunakan: tingkat faktor: 1,2 dan 3
- perlakuan: Jenis pengobatan yang digunakan: tingkat faktor: 1,2 dan 3
Sebelum Anda mulai menghitung uji ANOVA, Anda perlu menyiapkan data sebagai berikut:
- Langkah 1: Impor data
- Langkah 2: Hapus variabel yang tidak perlu
- Langkah 3: Ubah variabel racun menjadi level yang dipesan
library(dplyr) PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv" df <- read.csv(PATH) %>% select(-X) %>% mutate(poison = factor(poison, ordered = TRUE)) glimpse(df)
Keluaran:
## Observations: 48 ## Variables: 3 ## $ time <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0... ## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2... ## $ treat <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...
Tujuan kami adalah untuk menguji asumsi berikut:
- H0: Tidak ada perbedaan rata-rata waktu bertahan hidup antar kelompok
- H1: Rata-rata waktu bertahan hidup berbeda untuk setidaknya satu kelompok.
Dengan kata lain, Anda ingin mengetahui apakah ada perbedaan statistik antara rata-rata waktu bertahan hidup menurut jenis racun yang diberikan kepada kelinci percobaan.
Anda akan melanjutkan sebagai berikut:
- Langkah 1: Periksa format racun variabel
- Langkah 2: Cetak ringkasan statistik: hitungan, mean, dan deviasi standar
- Langkah 3: Buat diagram kotak
- Langkah 4: Hitung uji ANOVA satu arah
- Langkah 5: Lakukan perbandingan berpasangan dengan Tukey HSD
Langkah 1) Periksa tingkat racun dengan kode di bawah ini. Anda akan melihat tiga nilai karakter, karena kata kerja mutate mengubah kolom menjadi faktor terurut.
levels(df$poison)
Keluaran:
## [1] "1" "2" "3"
Langkah 2) Anda menghitung mean dan deviasi standar.
df %>% group_by(poison) %>% summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
Keluaran:
## # A tibble: 3 x 4 ## poison count_poison mean_time sd_time ## <ord> <int> <dbl> <dbl> ## 1 1 16 0.617500 0.20942779 ## 2 2 16 0.544375 0.28936641 ## 3 3 16 0.276250 0.06227627
Langkah 3) Pada langkah ketiga, Anda dapat memeriksa secara grafis apakah ada perbedaan antara distribusi. Perhatikan bahwa Anda menyertakan titik yang gelisah.
ggplot(df, aes(x = poison, y = time, fill = poison)) + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(0.21)) + theme_classic()
Keluaran:
Langkah 4) Anda dapat menjalankan uji ANOVA satu arah dengan perintah aov. Sintaks dasar untuk uji ANOVA adalah:
aov(formula, data)
Arguments:
- formula: The equation you want to estimate
- data: The dataset used
Sintaks rumusnya adalah:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Sekarang Anda dapat menjawab pertanyaan: apakah ada perbedaan waktu bertahan hidup antara kelinci percobaan, berdasarkan jenis racun yang diberikan?
Simpan model dalam sebuah objek dan teruskan ke fungsi summary() untuk mendapatkan hasil cetak yang mudah dibaca.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Code Penjelasan
- aov(waktu ~ racun, data = df): Jalankan uji ANOVA dengan rumus berikut
- ringkasan(anova_one_way): Cetak ringkasan pengujian
Keluaran:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.033 0.5165 11.79 7.66e-05 *** ## Residuals 45 1.972 0.0438 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Nilai p adalah 7.66e-05, jauh di bawah ambang batas umum 0.05, dan tiga bintang menandai kode signifikansi terkuat. Anda dapat menolak H0 dan menyimpulkan bahwa setidaknya satu kelompok racun memiliki waktu bertahan hidup rata-rata yang berbeda.
Cara Memeriksa Asumsi ANOVA di R
Nilai p ANOVA hanya dapat dipercaya jika ketiga kondisi yang disebutkan sebelumnya terpenuhi. Masing-masing kondisi tersebut diperiksa langsung di R, dan semuanya dijalankan pada objek model yang telah disesuaikan.
1. Independensi pengamatan. Ini adalah karakteristik dari desain penelitian, bukan dari data, jadi tidak ada pengujian yang dapat memperbaikinya. Setiap kelinci percobaan harus diukur sekali dan ditugaskan ke kelompoknya secara acak. Jika subjek yang sama muncul di beberapa baris, Anda memerlukan model pengukuran berulang sebagai gantinya.
2. Normalitas residual. ANOVA mengasumsikan bahwa residual, bukan data mentah, mendekati distribusi normal. Periksa plot QQ dan konfirmasikan dengan uji Shapiro-Wilk:
par(mfrow = c(2, 2)) plot(anova_one_way) # four diagnostic plots shapiro.test(residuals(anova_one_way))
Titik-titik yang menempel pada diagonal plot Normal QQ menunjukkan residual normal. Nilai p Shapiro-Wilk di atas 0.05 berarti Anda tidak dapat menolak normalitas.
3. Homogenitas varians. Setiap kelompok harus menunjukkan sebaran yang serupa. Plot Residual vs Fitted seharusnya terlihat seperti pita datar, bukan corong. Konfirmasikan dengan uji Levene, yang lebih kuat terhadap non-normalitas daripada uji Bartlett:
library(car)
leveneTest(time ~ poison, data = df)
bartlett.test(time ~ poison, data = df)
Nilai p di atas 0.05 mendukung kesamaan varians.
Apa yang harus dilakukan ketika sebuah asumsi gagal. Jika varians tidak sama, jalankan oneway.test(time ~ poison, data = df, var.equal = FALSE), koreksi Welch. Jika residual jelas tidak normal dan sampel kecil, beralihlah ke uji peringkat Kruskal-Wallis, kruskal.test(time ~ poison, data = df). Dengan sampel seimbang yang besar, ANOVA cukup kuat terhadap penyimpangan moderat dari normalitas, sehingga hasil Shapiro-Wilk yang mendekati batas jarang berakibat fatal.
Perbandingan berpasangan
Uji F yang signifikan memberi tahu Anda bahwa rata-rata kelompok tidak semuanya sama, tetapi tidak menunjukkan pasangan mana yang berbeda. Uji Tukey Honest Significant Difference menjawab pertanyaan itu dengan membandingkan setiap pasangan sambil mengendalikan tingkat kesalahan keseluruhan.
TukeyHSD(anova_one_way)
Keluaran:
Baca outputnya satu baris per pasangan. The diff Kolom ini memuat selisih antara rata-rata kedua kelompok, lwr ke lisensi batasi interval kepercayaan 95 persen untuk perbedaan tersebut, dan p adj adalah nilai p yang disesuaikan untuk perbandingan berganda. Sepasang data berbeda secara signifikan ketika intervalnya tidak mencakup nol, atau dengan kata lain ketika p adj di bawah 0.05. Dalam dataset ini, perbandingan yang melibatkan racun 3 adalah yang signifikan, yang sesuai dengan box plot: kelompok 3 memiliki waktu bertahan hidup rata-rata yang jelas lebih rendah daripada kelompok 1 dan 2, sedangkan kelompok 1 dan 2 secara statistik tidak dapat dibedakan satu sama lain.
ANOVA dua arah
ANOVA dua arah menambahkan faktor kedua ke dalam rumus. Cara kerjanya persis seperti uji satu arah, hanya rumusnya yang berubah:
y ~ x1 + x2
Di sini y adalah variabel respons kuantitatif, sedangkan x1 dan x2 adalah faktor kategorikal.
Hipotesis dalam uji ANOVA dua arah
- H0: Rata-rata kelompok sama untuk kedua variabel faktor
- H1: Setidaknya satu rata-rata kelompok berbeda, untuk setidaknya satu dari dua faktor
Anda menambahkan variabel perlakuan ke dalam model. Variabel ini mencatat perlakuan yang diberikan kepada kelinci percobaan. Rumus aditif di bawah ini menguji apakah setiap faktor memengaruhi waktu bertahan hidup secara terpisah, setelah memperhitungkan faktor lainnya.
Sesuaikan kode dengan menambahkan "treat" di samping variabel independen pertama.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
Keluaran:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.0330 0.5165 20.64 5.7e-07 *** ## treat 3 0.9212 0.3071 12.27 6.7e-06 *** ## Residuals 42 1.0509 0.0250 ## ---
Kedua nilai p (5.7e-07 untuk racun dan 6.7e-06 untuk pengobatan) berada jauh di bawah 0.05, sehingga Anda menolak H0 untuk kedua faktor dan menyimpulkan bahwa perubahan racun atau pengobatan memengaruhi waktu bertahan hidup.
Menambahkan istilah interaksi
Model aditif di atas mengasumsikan efek racun adalah sama terlepas dari perlakuan yang diberikan. Untuk menguji asumsi tersebut, ganti tanda plus dengan tanda bintang, yang sesuai dengan efek utama dan interaksinya:
anova_interaction <- aov(time~poison * treat, data = df) summary(anova_interaction)
Jika perbandingan antara racun dan perlakuan tidak signifikan, model aditif adalah pilihan yang lebih baik karena menggunakan lebih sedikit derajat kebebasan.
ANOVA di R: Referensi Tes Cepat
Tabel di bawah ini mencantumkan setiap pengujian yang digunakan di atas, perintah R yang menjalankannya, dan hipotesis yang dievaluasi:
| uji | Code | Hipotesa | Nilai p |
|---|---|---|---|
| ANOVA satu arah |
aov(y ~ X, data = df)
|
H1: Rata-rata berbeda untuk setidaknya satu kelompok | 0.05 |
| Berpasangan |
TukeyHSD(ANOVA summary) |
0.05 | |
| ANOVA dua arah |
aov(y ~ X1 + X2, data = df)
|
H1: Setidaknya satu rata-rata kelompok berbeda untuk salah satu faktor | 0.05 |




