Kapan menggunakan aov() versus anova() di r
Fungsi aov() dan anova() di R tampak serupa, namun sebenarnya kami menggunakannya dalam dua skenario berbeda.
Kami menggunakan aov() ketika kami ingin menyesuaikan model ANOVA dan menampilkan hasilnya dalam tabel ringkasan ANOVA.
Kami menggunakan anova() ketika kami ingin membandingkan kesesuaian model regresi bertingkat untuk menentukan apakah model regresi dengan sekumpulan koefisien tertentu memberikan kesesuaian yang jauh lebih baik daripada model yang hanya memiliki sebagian koefisien.
Contoh berikut menunjukkan cara menggunakan setiap fungsi dalam praktik.
Contoh 1: Cara menggunakan aov() di R
Katakanlah kita ingin melakukan ANOVA satu arah untuk menentukan apakah tiga program olahraga berbeda memiliki dampak berbeda terhadap penurunan berat badan.
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 menunjukkan cara menggunakan fungsi aov() di R untuk melakukan ANOVA satu arah ini:
#make this example reproducible set. seeds (0) #create data frame df <- 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))) #fit one-way anova using aov() fit <- aov(weight_loss ~ program, data=df) #view results summary(fit) 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 p-value program (0,0000000000755) kurang dari 0,05 yang berarti terdapat perbedaan rata-rata penurunan berat badan yang signifikan secara statistik antara ketiga program.
Contoh 2: Cara menggunakan anova() di R
Misalkan kita ingin menggunakan jumlah jam belajar untuk memprediksi nilai ujian siswa di perguruan tinggi tertentu. Kita dapat memutuskan untuk mengadaptasi dua model regresi berikut:
Model lengkap: skor = β 0 + B 1 (jam) + B 2 (jam) 2
Model tereduksi: skor = β 0 + B 1 (jam)
Kode berikut menunjukkan cara menggunakan fungsi anova() di R untuk melakukan uji kekurangan kecocokan guna menentukan apakah model lengkap memberikan kesesuaian yang jauh lebih baik daripada model tereduksi:
#make this example reproducible
set. seeds (1)
#create dataset
df <- data.frame(hours = runif(50, 5, 15), score=50)
df$score = df$score + df$hours^3/150 + df$hours*runif(50, 1, 2)
#view head of data
head(df)
hours score
1 7.655087 64.30191
2 8.721239 70.65430
3 10.728534 73.66114
4 14.082078 86.14630
5 7.016819 59.81595
6 13.983897 83.60510
#fit full model
full <- lm(score ~ poly(hours,2), data=df)
#fit reduced model
reduced <- lm(score ~ hours, data=df)
#perform lack of fit test using anova()
anova(full, reduced)
Analysis of Variance Table
Model 1: score ~ poly(hours, 2)
Model 2: score ~ hours
Res.Df RSS Df Sum of Sq F Pr(>F)
1 47 368.48
2 48 451.22 -1 -82.744 10.554 0.002144 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Karena nilai p pada tabel keluaran (0,002144) kurang dari 0,05, kita dapat menolak hipotesis nol dari pengujian tersebut dan menyimpulkan bahwa model lengkap secara statistik memberikan kesesuaian yang jauh lebih baik daripada model tereduksi.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:
Bagaimana melakukan ANOVA satu arah di R
Cara melakukan ANOVA dua arah di R
Bagaimana melakukan pengukuran berulang ANOVA di R