Bagaimana melakukan anova satu arah di r


ANOVA satu arah digunakan untuk menentukan apakah terdapat perbedaan yang signifikan secara statistik antara rata-rata tiga atau lebih kelompok independen.

Jenis pengujian ini disebut ANOVA satu arah karena kami menganalisis dampak variabel prediktor terhadap variabel respon.

Catatan : Jika kita tertarik pada dampak dua variabel prediktor terhadap variabel respon, kita dapat melakukan ANOVA dua arah .

Bagaimana melakukan ANOVA satu arah di R

Contoh berikut mengilustrasikan cara melakukan ANOVA satu arah di R.

Latar belakang

Misalkan kita ingin menentukan apakah tiga program olahraga yang berbeda mempunyai dampak yang berbeda terhadap penurunan berat badan. Variabel prediktor yang kami pelajari adalah program olahraga dan variabel responnya adalah penurunan berat badan yang diukur dalam pon.

Kita dapat melakukan ANOVA satu arah untuk menentukan apakah terdapat perbedaan yang signifikan secara statistik antara penurunan berat badan yang dihasilkan dari ketiga program.

Kami merekrut 90 orang untuk berpartisipasi dalam eksperimen di mana kami secara acak menugaskan 30 orang untuk mengikuti Program A, Program B, atau Program C selama sebulan.

Kode berikut membuat bingkai data yang akan kita gunakan:

 #make this example reproducible
set.seed(0)

#create data frame
data <- data.frame(program = rep(c("A", "B", "C"), each = 30),
                   weight_loss = c(runif(30, 0, 3),
                                   runif(30, 0, 5),
                                   runif(30, 1, 7)))

#view first six rows of data frame
head(data)

# program weight_loss
#1 A 2.6900916
#2 A 0.7965260
#3 A 1.1163717
#4 A 1.7185601
#5 A 2.7246234
#6 A 0.6050458

Kolom pertama dari bingkai data menunjukkan program yang diikuti orang tersebut selama sebulan dan kolom kedua menunjukkan total penurunan berat badan yang dialami orang tersebut di akhir program, diukur dalam pound.

Jelajahi datanya

Bahkan sebelum memasang model ANOVA satu arah, kita dapat lebih memahami data dengan mencari mean dan deviasi standar penurunan berat badan untuk masing-masing dari tiga program menggunakan paket dplyr :

 #load dplyr package
library (dplyr)

#find mean and standard deviation of weight loss for each treatment group
data %>%
  group_by (program) %>%
  summarize (mean = mean(weight_loss),
            sd = sd(weight_loss))

# A tibble: 3 x 3
# program mean sd
#      
#1 A 1.58 0.905
#2 B 2.56 1.24 
#3 C 4.13 1.57  

Kita juga dapat membuat plot kotak untuk masing-masing dari ketiga program tersebut untuk memvisualisasikan distribusi penurunan berat badan untuk setiap program:

 #create boxplots
boxplot(weight_loss ~ program,
data = data,
main = "Weight Loss Distribution by Program",
xlab = "Program",
ylab = "Weight Loss",
col = "steelblue",
border = "black")

Dari box plot tersebut terlihat bahwa rata-rata penurunan berat badan tertinggi terjadi pada peserta Program C dan rata-rata penurunan berat badan terendah terjadi pada peserta Program A.

Kita juga dapat melihat bahwa standar deviasi (“panjang” plot kotak) untuk penurunan berat badan sedikit lebih tinggi di program C dibandingkan dengan dua program lainnya.

Selanjutnya, kami akan menyesuaikan model ANOVA satu arah dengan data kami untuk melihat apakah perbedaan visual ini benar-benar signifikan secara statistik.

Pemasangan model ANOVA satu arah

Sintaks umum untuk memasang model ANOVA satu arah di R adalah:

aov(variabel respons ~ variabel_prediktor, data = kumpulan data)

Dalam contoh kita, kita dapat menggunakan kode berikut untuk menyesuaikan model ANOVA satu arah, menggunakan bobot_kerugian sebagai variabel respon dan program sebagai variabel prediktor. Kita kemudian dapat menggunakan fungsi ringkasan() untuk menampilkan hasil model kita:

 #fit the one-way ANOVA model
model <- aov(weight_loss ~ program, data = data)

#view the model output
summary(model)

# Df Sum Sq Mean Sq F value Pr(>F)    
#program 2 98.93 49.46 30.83 7.55e-11 ***
#Residuals 87 139.57 1.60                     
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dari hasil model terlihat bahwa program variabel prediktor signifikan secara statistik pada tingkat signifikansi 0,05.

Dengan kata lain, terdapat perbedaan yang signifikan secara statistik antara rata-rata penurunan berat badan yang dihasilkan dari ketiga program tersebut.

Memeriksa asumsi model

Sebelum melangkah lebih jauh, kita perlu memverifikasi bahwa asumsi model kita terpenuhi sehingga hasil model kita dapat diandalkan. Secara khusus, ANOVA satu arah mengasumsikan:

1. Independensi – pengamatan masing-masing kelompok harus independen satu sama lain. Karena kami menggunakan rancangan acak (yaitu, kami menugaskan peserta untuk mengikuti program latihan secara acak), asumsi ini harus dipenuhi sehingga kami tidak perlu terlalu khawatir.

2. Normalitas – variabel terikat harus mempunyai distribusi mendekati normal untuk setiap tingkat variabel prediktor.

3. Varians yang sama – varians untuk setiap kelompok sama atau kurang lebih sama.

Salah satu cara untuk memeriksa asumsi normalitas dan varians yang sama adalah dengan menggunakan fungsi plot() , yang menghasilkan empat plot pengecekan model. Secara khusus, kami sangat tertarik pada dua plot berikut:

  • Residu vs. dipasang – grafik ini menunjukkan hubungan antara residu dan nilai yang dipasang. Kita dapat menggunakan grafik ini untuk menilai secara kasar apakah varians antar kelompok kira-kira sama atau tidak.
  • Plot QQ – plot ini menampilkan residu terstandar terhadap kuantil teoretis. Kita dapat menggunakan grafik ini untuk menilai secara kasar apakah asumsi normalitas terpenuhi atau tidak.

Kode berikut dapat digunakan untuk menghasilkan plot pemeriksaan model ini:

 plot(model)

Grafik QQ di atas memungkinkan kita memverifikasi asumsi normalitas. Idealnya, residu terstandar terletak di sepanjang garis diagonal lurus plot. Namun pada grafik di atas kita dapat melihat bahwa residunya sedikit menyimpang dari garis menuju awal dan akhir. Hal ini menunjukkan bahwa asumsi normalitas kita mungkin dilanggar.

Sisa vs. Grafik yang disesuaikan di atas memungkinkan kami memverifikasi asumsi variansi yang sama. Idealnya, kita ingin residu didistribusikan secara merata untuk setiap tingkat nilai yang dipasang.

Kita dapat melihat bahwa residunya jauh lebih tersebar pada nilai yang lebih tinggi, yang menunjukkan bahwa asumsi kita tentang kesetaraan varians mungkin dilanggar.

Untuk menguji variansi yang sama secara formal, kita dapat melakukan uji Levene menggunakan paket car :

 #load car package
library (car)

#conduct Levene's Test for equality of variances
leveneTest(weight_loss ~ program, data = data)

#Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)  
#group 2 4.1716 0.01862 *
#87                  
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Nilai p dari tes ini adalah 0,01862 . Jika kita menggunakan tingkat signifikansi 0,05, kita akan menolak hipotesis nol yang menyatakan bahwa variansnya sama di ketiga program. Namun, jika kita menggunakan tingkat signifikansi 0,01, kita tidak akan menolak hipotesis nol.

Meskipun kami dapat mencoba mentransformasikan data untuk memastikan asumsi normalitas dan kesetaraan varians terpenuhi, untuk saat ini kami tidak akan terlalu mengkhawatirkan hal tersebut.

Analisis perbedaan perlakuan

Setelah kami memverifikasi bahwa asumsi model terpenuhi (atau terpenuhi secara wajar), kami kemudian dapat melakukan uji post hoc untuk menentukan dengan tepat kelompok perlakuan mana yang berbeda satu sama lain.

Untuk pengujian post hoc, kami akan menggunakan fungsi TukeyHSD() untuk melakukan pengujian Tukey untuk beberapa perbandingan:

 #perform Tukey's Test for multiple comparisons
TukeyHSD(model, conf.level=.95) 

#Tukey multiple comparisons of means
# 95% family-wise confidence level
#
#Fit: aov(formula = weight_loss ~ program, data = data)
#
#$program
# diff lwr upr p adj
#BA 0.9777414 0.1979466 1.757536 0.0100545
#CA 2.5454024 1.7656076 3.325197 0.0000000
#CB 1.5676610 0.7878662 2.347456 0.0000199

Nilai p menunjukkan ada atau tidaknya perbedaan yang signifikan secara statistik antara masing-masing program. Hasilnya menunjukkan bahwa terdapat perbedaan yang signifikan secara statistik antara rata-rata penurunan berat badan setiap program pada tingkat signifikansi 0,05.

Kita juga dapat memvisualisasikan interval kepercayaan 95% yang dihasilkan dari pengujian Tukey menggunakan fungsi plot(TukeyHSD()) di R:

 #create confidence interval for each comparison
plot(TukeyHSD(model, conf.level=.95), las = 2)

Hasil interval kepercayaan konsisten dengan hasil uji hipotesis.

Secara khusus, kita dapat melihat bahwa tidak ada interval kepercayaan untuk rata-rata penurunan berat badan antar program yang mengandung nilai nol , yang menunjukkan bahwa terdapat perbedaan yang signifikan secara statistik dalam rata-rata penurunan berat badan antara ketiga program.

Hal ini konsisten dengan semua nilai p untuk pengujian hipotesis kami yang kurang dari 0,05.

Melaporkan Hasil ANOVA Satu Arah

Terakhir, kami dapat melaporkan hasil ANOVA satu arah dengan cara merangkum hasilnya:

ANOVA satu arah dilakukan untuk menguji efek dari program latihan   pada penurunan berat badan (diukur dalam pound). Terdapat perbedaan yang signifikan secara statistik antara efek ketiga program terhadap penurunan berat badan (F(2, 87) = 30.83, p = 7.55e-11). Tes HSD Post-hoc Tukey dilakukan.

Rata-rata penurunan berat badan peserta program C secara signifikan lebih besar dibandingkan rata-rata penurunan berat badan peserta program B (p <0,0001).

Rata-rata penurunan berat badan peserta program C secara signifikan lebih besar dibandingkan rata-rata penurunan berat badan peserta program A (p <0,0001).

Selain itu, rata-rata penurunan berat badan peserta program B secara signifikan lebih besar dibandingkan rata-rata penurunan berat badan peserta program A (p = 0,01).

Sumber daya tambahan

Tutorial berikut memberikan informasi tambahan tentang ANOVA satu arah:

Pengantar ANOVA Satu Arah
Panduan Menggunakan Pengujian Post-Hoc dengan ANOVA
Panduan Lengkap: Cara Melaporkan Hasil ANOVA

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *