Load Library

library(rstatix)
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
library(car)          # Untuk MANCOVA dan uji Levene
## Loading required package: carData
library(biotools)     # Untuk uji Box's M
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:rstatix':
## 
##     select
## ---
## biotools version 4.3

Load Dataset

data_student <- read.csv("student-mat.csv", sep=",")

# Seleksi Variabel (Y=2, X=3)
df <- data_student[, c("G1", "G2", "sex", "address", "studytime")]

Ubah tipe data

df$sex <- as.factor(df$sex)
df$address <- as.factor(df$address)
df$studytime <- as.numeric(df$studytime)

Uji Normalitas per Variabel (Univariate sebagai pendekatan)

# H0: Data berdistribusi normal
df %>% group_by(sex, address) %>% shapiro_test(G1, G2)
## # A tibble: 8 × 5
##   sex   address variable statistic        p
##   <fct> <fct>   <chr>        <dbl>    <dbl>
## 1 F     R       G1           0.937 0.0188  
## 2 F     R       G2           0.954 0.0749  
## 3 F     U       G1           0.964 0.000328
## 4 F     U       G2           0.964 0.000313
## 5 M     R       G1           0.965 0.195   
## 6 M     R       G2           0.975 0.465   
## 7 M     U       G1           0.978 0.0216  
## 8 M     U       G2           0.964 0.000908

Beberapa kelompok menunjukkan p-value < 0.05, sehingga asumsi normalitas univariat tidak sepenuhnya terpenuhi. Namun, karena ukuran sampel cukup besar (>30 per grup), maka MANOVA dianggap cukup robust terhadap pelanggaran ini.

Visualisasi Q-Q Plot untuk melihat distribusi secara visual

par(mfrow=c(1,2))
qqnorm(df$G1, main="Q-Q Plot G1")
qqline(df$G1)

qqnorm(df$G2, main="Q-Q Plot G2")
qqline(df$G2)

Titik-titik pada Q-Q plot sebagian besar mengikuti garis diagonal, meskipun terdapat sedikit penyimpangan di bagian ekor. Hal ini menunjukkan bahwa data mendekati distribusi normal.

Uji Homogenitas Lereng Regresi (Asumsi MANCOVA)

asumsi_slope <- lm(cbind(G1, G2) ~ sex * studytime + address * studytime, data = df)
Anova(asumsi_slope, test = "Wilks")
## 
## Type II MANOVA Tests: Wilks test statistic
##                   Df test stat approx F num Df den Df    Pr(>F)    
## sex                1   0.97471   5.0342      2    388 0.0069432 ** 
## studytime          1   0.95896   8.3032      2    388 0.0002944 ***
## address            1   0.97797   4.3709      2    388 0.0132679 *  
## sex:studytime      1   0.99660   0.6616      2    388 0.5166212    
## studytime:address  1   0.99629   0.7222      2    388 0.4863112    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interaksi antara faktor dan kovariat harus TIDAK signifikan (p > 0.05)

Uji Homogenitas Matriks Varians-Kovarians (Box’s M Test)

# Tetap menggunakan biotools karena ini standar multivariat
box_m_hasil <- boxM(df[, c("G1", "G2")], interaction(df$sex, df$address))
print(box_m_hasil)
## 
##  Box's M-test for Homogeneity of Covariance Matrices
## 
## data:  df[, c("G1", "G2")]
## Chi-Sq (approx.) = 27.344, df = 9, p-value = 0.001227

Hasil Box’s M Test menunjukkan p-value < 0.05, sehingga asumsi homogenitas matriks kovarians tidak terpenuhi. Oleh karena itu, analisis MANOVA akan menggunakan statistik uji yang lebih robust yaitu Pillai’s Trace.

Uji Homogenitas Lereng Regresi (Asumsi MANCOVA)

asumsi_slope <- lm(cbind(G1, G2) ~ sex * studytime + address * studytime, data = df)
Anova(asumsi_slope, test = "Wilks")
## 
## Type II MANOVA Tests: Wilks test statistic
##                   Df test stat approx F num Df den Df    Pr(>F)    
## sex                1   0.97471   5.0342      2    388 0.0069432 ** 
## studytime          1   0.95896   8.3032      2    388 0.0002944 ***
## address            1   0.97797   4.3709      2    388 0.0132679 *  
## sex:studytime      1   0.99660   0.6616      2    388 0.5166212    
## studytime:address  1   0.99629   0.7222      2    388 0.4863112    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interaksi antara faktor dan kovariat harus TIDAK signifikan (p > 0.05)

Uji Homogenitas Varians (LEVENE)

leveneTest(G1 ~ sex * address, data = df)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value Pr(>F)
## group   3  0.4782 0.6977
##       391
leveneTest(G2 ~ sex * address, data = df)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value Pr(>F)
## group   3  0.5256 0.6649
##       391

Jika p-value > 0.05, maka varians antar kelompok homogen. Jika p-value < 0.05, maka asumsi homogenitas varians tidak terpenuhi.

Model MANOVA

model_manova <- manova(cbind(G1, G2) ~ sex * address, data = df)

# Hasil Utama
summary(model_manova, test = "Pillai")
##              Df    Pillai approx F num Df den Df  Pr(>F)  
## sex           1 0.0091393   1.7986      2    390 0.16690  
## address       1 0.0217459   4.3347      2    390 0.01374 *
## sex:address   1 0.0005605   0.1093      2    390 0.89644  
## Residuals   391                                           
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hasil menunjukkan bahwa variabel address berpengaruh signifikan terhadap kombinasi nilai G1 dan G2 (p < 0.05), sedangkan variabel sex tidak berpengaruh signifikan. Tidak terdapat interaksi signifikan antara sex dan address.

Artinya, lokasi tempat tinggal siswa (urban/rural) mempengaruhi performa akademik, sementara gender tidak memberikan perbedaan yang signifikan.

Analisis Univariat (melihat pengaruh ke masing-masing G1 dan G2)

summary.aov(model_manova)
##  Response G1 :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## sex           1   36.6  36.611  3.3451 0.06817 .
## address       1   22.7  22.723  2.0761 0.15042  
## sex:address   1    1.9   1.913  0.1748 0.67614  
## Residuals   391 4279.5  10.945                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response G2 :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## sex           1   46.3  46.265  3.3295 0.06881 .
## address       1   92.3  92.318  6.6438 0.01032 *
## sex:address   1    3.0   3.024  0.2176 0.64110  
## Residuals   391 5433.1  13.895                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Untuk variabel G2, address berpengaruh signifikan (p < 0.05), sedangkan pada G1 tidak ditemukan pengaruh signifikan. Hal ini menunjukkan bahwa lokasi lebih berpengaruh pada nilai periode kedua.

Model MANCOVA

# Aturannya: masukkan kovariat (studytime) terlebih dahulu
model_mancova <- manova(cbind(G1, G2) ~ studytime + sex * address, data = df)

# Hasil MANCOVA
summary(model_mancova, test = "Pillai")
##              Df    Pillai approx F num Df den Df   Pr(>F)   
## studytime     1 0.0265431   5.3034      2    389 0.005341 **
## sex           1 0.0233968   4.6597      2    389 0.010004 * 
## address       1 0.0230375   4.5864      2    389 0.010746 * 
## sex:address   1 0.0001072   0.0209      2    389 0.979357   
## Residuals   390                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Melihat apakah setelah dikontrol studytime, sex dan address tetap berpengaruh
summary.aov(model_mancova)
##  Response G1 :
##              Df Sum Sq Mean Sq F value   Pr(>F)   
## studytime     1  112.0 111.974 10.6340 0.001208 **
## sex           1   95.3  95.270  9.0477 0.002801 **
## address       1   26.8  26.793  2.5445 0.111486   
## sex:address   1    0.1   0.059  0.0056 0.940496   
## Residuals   390 4106.6  10.530                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response G2 :
##              Df Sum Sq Mean Sq F value   Pr(>F)   
## studytime     1  102.9 102.927  7.6275 0.006020 **
## sex           1  108.4 108.352  8.0295 0.004841 **
## address       1  100.3 100.265  7.4302 0.006703 **
## sex:address   1    0.4   0.367  0.0272 0.869178   
## Residuals   390 5262.8  13.494                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Alasan penggunaan Pillai Karena asumsi homogenitas matriks kovarians tidak terpenuhi, maka digunakan Pillai’s Trace yang lebih robust terhadap pelanggaran asumsi.

Setelah mengontrol variabel studytime, ditemukan bahwa studytime berpengaruh signifikan terhadap nilai G1 dan G2. Selain itu, variabel sex dan address juga menjadi signifikan.

Artinya, waktu belajar memiliki pengaruh penting terhadap performa akademik. Setelah efek waktu belajar dikontrol, perbedaan berdasarkan gender dan lokasi menjadi lebih terlihat.

Melihat rata-rata nilai berdasarkan kelompok

aggregate(cbind(G1, G2) ~ sex + address, data = df, mean)
##   sex address       G1        G2
## 1   F       R 10.29545  9.636364
## 2   M       R 10.65909 10.022727
## 3   F       U 10.70732 10.591463
## 4   M       U 11.40559 11.398601

Siswa laki-laki di daerah urban memiliki rata-rata nilai tertinggi, sedangkan siswa perempuan di daerah rural memiliki rata-rata terendah. Hal ini memperkuat hasil MANOVA bahwa lokasi berpengaruh terhadap nilai.

Uji lanjut Tukey jika diperlukan (Contoh pada G1)

tukey_g1 <- aov(G1 ~ sex * address, data = df)
TukeyHSD(tukey_g1)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = G1 ~ sex * address, data = df)
## 
## $sex
##          diff         lwr      upr     p adj
## M-F 0.6097542 -0.04570744 1.265216 0.0681685
## 
## $address
##          diff        lwr      upr     p adj
## U-R 0.5761553 -0.2103275 1.362638 0.1505904
## 
## $`sex:address`
##               diff        lwr      upr     p adj
## M:R-F:R 0.36363636 -1.4562074 2.183480 0.9553505
## F:U-F:R 0.41186253 -1.0373393 1.861064 0.8836780
## M:U-F:R 1.11013986 -0.3613996 2.581679 0.2104797
## F:U-M:R 0.04822616 -1.4009756 1.497428 0.9997729
## M:U-M:R 0.74650350 -0.7250359 2.218043 0.5578015
## M:U-F:U 0.69827733 -0.2783406 1.674895 0.2540118

Visualisasi Group Means untuk G1 dan G2

par(mfrow=c(1,2))
plot(G1 ~ sex, data=df, main="G1 berdasarkan Sex", col="lightblue")
plot(G2 ~ address, data=df, main="G2 berdasarkan Address", col="lightgreen")

Pada G1, siswa laki-laki cenderung memiliki median nilai sedikit lebih tinggi dibanding perempuan. Pada G2, siswa yang tinggal di daerah urban (U) memiliki nilai yang lebih tinggi dibanding rural (R). Hal ini konsisten dengan hasil MANOVA yang menunjukkan bahwa address berpengaruh signifikan.

2. Interaction Plot (Melihat apakah ada interaksi sex dan address terhadap G1)

par(mfrow=c(1,1))
interaction.plot(df$sex, df$address, df$G1, 
                 main="Interaksi Sex & Address terhadap G1",
                 xlab="Sex", ylab="Mean G1", trace.label="Address")

Garis pada plot tidak saling berpotongan secara signifikan, yang menunjukkan bahwa tidak terdapat interaksi yang kuat antara variabel sex dan address terhadap nilai G1. Hal ini sesuai dengan hasil MANOVA yang menunjukkan bahwa interaksi sex:address tidak signifikan.

plot(df$studytime, df$G1,
     main="Hubungan Studytime dan G1",
     xlab="Studytime", ylab="G1")

plot(df$studytime, df$G2,
     main="Hubungan Studytime dan G2",
     xlab="Studytime", ylab="G2")

Terdapat kecenderungan hubungan positif antara studytime dan nilai (G1 dan G2), yang menunjukkan bahwa semakin lama waktu belajar, maka nilai siswa cenderung meningkat. Hal ini mendukung hasil MANCOVA bahwa studytime signifikan.