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.

  • ๐Ÿ“ Statistik Inti: Rasio F membagi variabilitas antar kelompok dengan variabilitas dalam kelompok, sehingga nilai yang lebih besar menunjukkan bahwa rata-rata tidak sama.
  • ๐Ÿงช Sintaks Satu Arah: aov(time~poison, data = df) diikuti dengan summary() mengembalikan derajat kebebasan, nilai F, dan nilai p.
  • โœ… Pemeriksaan Asumsi: Uji independensi, normalitas residual dengan shapiro.test(), dan kesamaan varians dengan leveneTest() sebelum mempercayai nilai p.
  • ๐Ÿ”Ž Analisis Post Hoc: TukeyHSD() membandingkan setiap pasangan kelompok sambil mempertahankan tingkat kesalahan keluarga pada tingkat yang ditentukan.
  • ๐Ÿงฎ Ekstensi Dua Arah: aov(time~poison + treat, data = df) menambahkan faktor kedua, dan poison:treat menambahkan istilah interaksi.
  • ๐Ÿ“Š Hasil Pembacaan: Nilai p di bawah 0.05 menolak hipotesis nol tentang kesamaan rata-rata tetapi tidak pernah mengidentifikasi kelompok mana yang berbeda.

ANOVA di R Satu Arah Dua Arah

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.

Interpretasi uji ANOVA

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.

Interpretasi uji ANOVA

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:

Contoh Uji ANOVA Satu Arah

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:

Perbandingan berpasangan

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

Pertanyaan Umum Demo Slot

Nilai F adalah rasio varians antar kelompok terhadap varians dalam kelompok. Nilai mendekati 1 menunjukkan bahwa rata-rata kelompok serupa. Nilai yang besar menunjukkan bahwa kelompok-kelompok tersebut diambil dari populasi dengan rata-rata yang berbeda.

Gunakan oneway.test() dengan var.equal = FALSE ketika varians tidak sama, dan kruskal.test() ketika residual jelas tidak berdistribusi normal. Transformasi respons yang miring dengan log() sering kali mengembalikan normalitas dan kesamaan varians.

Setiap uji t memiliki risiko positif palsu sebesar 5 persen. Tiga uji berpasangan meningkatkan tingkat kesalahan keseluruhan menjadi sekitar 14 persen. ANOVA mempertahankan satu uji keseluruhan pada 5 persen, dan Tukey HSD menyesuaikan perbandingan berpasangan.

ANOVA adalah filter pemilihan fitur standar: ia memberi peringkat prediktor kategorikal berdasarkan seberapa kuat prediktor tersebut memisahkan target numerik. Tim AI juga menggunakannya untuk membandingkan varian model di seluruh lipatan validasi silang.

Ya. Asisten AI dapat menjelaskan derajat kebebasan, menerjemahkan nilai p ke dalam bahasa yang mudah dipahami, dan menandai pelanggaran asumsi dalam plot diagnostik. Selalu konfirmasikan pembacaan tersebut dengan hasil leveneTest() dan shapiro.test() Anda sendiri.

Ringkaslah postingan ini dengan: