Bagaimana melakukan ancova di r


Tutorial ini memberikan contoh cara melakukan ANCOVA di R.

Contoh: ANCOVA di R

Kami akan melakukan ANCOVA untuk menguji apakah teknik belajar berdampak pada hasil ujian atau tidak dengan menggunakan variabel berikut:

  • Kajian teknis : Variabel independen yang ingin kami analisis
  • Nilai siswa saat ini : Kovariat yang ingin kami perhitungkan
  • Skor Tinjauan : Variabel respon yang ingin kita analisis

Dataset berikut berisi informasi tentang 90 siswa yang dibagi secara acak menjadi tiga kelompok yang terdiri dari 30 orang.

Kumpulan data menunjukkan teknik belajar yang digunakan setiap siswa (A, B , atau C) , nilai mereka saat ini di kelas ketika mereka mulai menggunakan teknik belajar, dan nilai yang mereka terima pada ujian setelah menggunakan teknik belajar selama satu bulan untuk persiapan. untuk ujian. ujian:

 #make this example reproducible
set.seed(10)

#create dataset
data <- data.frame(technique = rep(c("A", "B", "C"), each = 30),
                   current_grade = runif(90, 65, 95),
                   exam = c(runif(30, 80, 95), runif(30, 70, 95), runif(30, 70, 90)))

#view first six lines of dataset
head(data)

# technical current_grade exam
#1 A 80.22435 87.32759
#2 A 74.20306 90.67114
#3 A 77.80723 88.87902
#4 A 85.79306 87.75735
#5 A 67.55408 85.72442
#6 A 71.76310 92.52167

Langkah 1: Jelajahi datanya

Sebelum menerapkan model ANCOVA, pertama-tama kita perlu mengeksplorasi data untuk lebih memahaminya dan memverifikasi bahwa tidak ada outlier ekstrim yang dapat mengganggu hasil.

Pertama, kita dapat menampilkan ringkasan setiap variabel dalam dataset:

 summary(data)

# technical current_grade exam      
#A:30 Min. :65.43 Min. :71.17  
# B:30 1st Qu.:71.79 1st Qu.:77.27  
# C:30 Median:77.84 Median:84.69  
# Mean:78.15 Mean:83.38  
# 3rd Qu.:83.65 3rd Qu.:89.22  
# Max. :93.84 Max. :94.76  

Kita dapat melihat bahwa setiap nilai teknik belajar ( A, B dan C) muncul sebanyak 30 kali dalam data.

Kita juga dapat melihat bagaimana nilai siswa saat ini didistribusikan pada awal penelitian. Nilai minimal kelas adalah 65,43, nilai maksimal 93,84, dan rata-rata 78,15.

Demikian pula terlihat bahwa nilai minimal yang diperoleh dalam ujian adalah 71,17, nilai maksimal 94,76, dan rata-rata 83,38.

Kemudian kita dapat menggunakan paket dplyr untuk dengan mudah menemukan mean dan deviasi standar nilai saat ini dan hasil ujian untuk setiap teknik belajar:

 #load dplyr
library(dplyr)

data %>%
  group_by (technical) %>%
  summarize (mean_grade = mean(current_grade),
            sd_grade = sd(current_grade),
            mean_exam = mean(exam),
            sd_exam = sd(exam))

# A tibble: 3 x 5
# technique mean_grade sd_grade mean_exam sd_exam                      
#1 A 79.0 7.00 88.5 3.88
#2 B 78.5 8.33 81.8 7.62
#3 C 76.9 8.24 79.9 5.71

Kita dapat melihat bahwa rata-rata dan deviasi standar nilai siswa saat ini yang menggunakan setiap teknik pembelajaran kira-kira sama.

Kita juga dapat melihat bahwa rata-rata nilai ujian jauh lebih tinggi pada siswa yang menggunakan teknik belajar A dibandingkan dengan teknik B dan C.

Kita juga dapat memvisualisasikan sebaran hasil ujian berdasarkan teknik belajar menggunakan boxplot :

 boxplot(exam ~ technique,
data = data,
main = "Exam Score by Studying Technique",
xlab = "Studying Technique",
ylab = "Exam Score",
col = "steelblue",
border = "black"
)

Demikian pula, kita juga dapat menggunakan plot kotak untuk memvisualisasikan distribusi nilai saat ini berdasarkan teknik belajar:

 boxplot(current_grade ~ technical,
data = data,
main = "Current Grade by Studying Technique",
xlab = "Studying Technique",
ylab = "Current Grade",
col = "steelblue",
border = "black"
)

Langkah 2: Periksa asumsi model

Setelah kami melakukan eksplorasi data dasar dan memahami data tersebut, kami perlu memverifikasi bahwa asumsi ANCOVA berikut terpenuhi:

  • Kovariat dan perlakuan bersifat independen – perlu diverifikasi bahwa kovariat ( kelas saat ini) dan perlakuan (teknik penelitian) tidak bergantung satu sama lain, karena menambahkan istilah kovariat ke dalam model hanya bermakna jika kovariat dan pengobatan bertindak secara independen pada variabel respon ( ujian ).
  • Homogenitas varians – kita perlu memeriksa apakah varians antar kelompok adalah sama

Untuk memverifikasi bahwa kovariat dan perlakuan bersifat independen, kita dapat melakukan ANOVA menggunakan nilai saat ini sebagai variabel respon dan teknik belajar sebagai variabel prediktor:

 #fit anova model
anova_model <- aov(current_grade ~ technique, data = data)
#view summary of anova model
summary(anova_model)

# Df Sum Sq Mean Sq F value Pr(>F)
#technical 2 74 37.21 0.599 0.552
#Residuals 87 5406 62.14    

Nilai p lebih besar dari 0,05, sehingga kovariat ( kelas saat ini) dan perlakuan ( teknik belajar ) tampak independen.

Kemudian untuk memeriksa adanya homogenitas varians antar kelompok, kita dapat melakukan uji Levene:

 #load car library to conduct Levene's Test
libary(car)

#conduct Levene's Test
leveneTest(technical exam, data = data)

#Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)    
#group 2 9.4324 0.0001961 ***
#87   

Nilai p dari uji tersebut adalah sebesar 0,0001961 yang menunjukkan bahwa varians antar kelompok tidak sama. Meskipun kami dapat mencoba melakukan transformasi pada data untuk memperbaiki masalah ini, kami tidak akan terlalu mengkhawatirkan perbedaan varian saat ini.

Langkah 3: Sesuaikan model ANCOVA

Selanjutnya, kami akan menyesuaikan model ANCOVA dengan menggunakan nilai ujian sebagai variabel respons, teknik belajar sebagai variabel prediktor (atau “pengobatan”), dan nilai saat ini sebagai kovariat.

Kita akan menggunakan fungsi Anova() dalam paket karena untuk melakukan ini, cukup tentukan bahwa kita ingin menggunakan jumlah kuadrat tipe III untuk modelnya, karena jumlah kuadrat tipe I bergantung pada urutan di mana Prediktor dimasukkan ke dalam model:

 #load car library
library(car)

#fit ANCOVA model
ancova_model <- aov(exam ~ technique + current_grade, data = data)

#view summary of model
Anova(ancova_model, type="III") 

#Answer: exam
# Sum Sq Df F value Pr(>F)    
#(Intercept) 7161.2 1 201.4621 < 2.2e-16 ***
#technical 1242.9 2 17.4830 4.255e-07 ***
#current_grade 12.3 1 0.3467 0.5576    
#Residuals 3057.0 86         

Kita dapat melihat bahwa nilai p untuk teknik sangat rendah, yang menunjukkan bahwa teknik belajar mempunyai pengaruh yang signifikan secara statistik terhadap nilai ujian, bahkan setelah mengontrol nilai saat ini.

Langkah 4: Pengujian post-hoc

Meskipun hasil ANCOVA memberi tahu kita bahwa teknik belajar memiliki pengaruh yang signifikan secara statistik terhadap nilai ujian, kita perlu melakukan pengujian post hoc untuk menentukan teknik belajar mana yang berbeda satu sama lain.

Untuk melakukan ini, kita dapat menggunakan fungsi glht() dalam paket multcomp di R untuk melakukan pengujian Tukey untuk beberapa perbandingan:

 #load the multcomp library
library(multicomp)

#fit the ANCOVA model
ancova_model <- aov(exam ~ technique + current_grade, data = data)

#define the post hoc comparisons to make
postHocs <- glht(ancova_model, linfct = mcp(technique = "Tukey"))

#view a summary of the post hoc comparisons
summary(postHocs)

#Multiple Comparisons of Means: Tukey Contrasts
#
#Fit: aov(formula = exam ~ technique + current_grade, data = data)
#
#Linear Assumptions:
#Estimate Std. Error t value Pr(>|t|)    
#B - A == 0 -6.711 1.540 -4.358 0.000109 ***
#C - A == 0 -8.736 1.549 -5.640 < 1e-04 ***
#C - B == 0 -2.025 1.545 -1.311 0.393089    

#view the confidence intervals associated with the multiple comparisons
confint(postHocs)

# Simultaneous Confidence Intervals
#
#Multiple Comparisons of Means: Tukey Contrasts
#
#Fit: aov(formula = exam ~ technique + current_grade, data = data)
#
#Quantile = 2.3845
#95% family-wise confidence level
#
#Linear Assumptions:
# Estimate lwr upr     
#B - A == 0 -6.7112 -10.3832 -3.0392
#C - A == 0 -8.7364 -12.4302 -5.0426
#C - B == 0 -2.0252 -5.7091 1.6588

Dari hasil tersebut terlihat terdapat perbedaan yang signifikan secara statistik (pada α = 0,05) hasil ujian antara teknik belajar A dan teknik belajar B (p-value: 0,000109) serta antara teknik A dan teknik C. (nilai p: <1e-04).

Kita juga dapat melihat bahwa tidak ada perbedaan yang signifikan secara statistik (pada α = 0,05) antara teknik B dan C. Interval kepercayaan antar teknik juga mendukung temuan ini.

Dengan demikian, kita dapat menyimpulkan bahwa menggunakan teknik belajar A menghasilkan nilai ujian siswa yang secara statistik jauh lebih tinggi dibandingkan dengan teknik B dan C , bahkan setelah mengontrol nilai siswa saat ini di kelas.

Tambahkan komentar

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