Load Library dan Data
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.3
## Warning: package 'ggplot2' was built under R version 4.5.3
## Warning: package 'forcats' was built under R version 4.5.3
## Warning: package 'lubridate' was built under R version 4.5.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(MVN)
## Warning: package 'MVN' was built under R version 4.5.3
## Registered S3 method overwritten by 'lme4':
## method from
## na.action.merMod car
library(biotools)
## Warning: package 'biotools' was built under R version 4.5.3
## Loading required package: MASS
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
##
## ---
## biotools version 4.3
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.3
##
## Attaching package: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
library(rstatix)
## Warning: package 'rstatix' was built under R version 4.5.3
##
## Attaching package: 'rstatix'
##
## The following object is masked from 'package:MASS':
##
## select
##
## The following object is masked from 'package:stats':
##
## filter
data <- read.csv("student-mat.csv", sep = ";")
Pemilihan Variabel
data <- data %>%
select(G1, G3, schoolsup, higher, studytime)
data$schoolsup <- as.factor(data$schoolsup)
data$higher <- as.factor(data$higher)
Deskripsi Data
summary(data)
## G1 G3 schoolsup higher studytime
## Min. : 3.00 Min. : 0.00 no :344 no : 20 Min. :1.000
## 1st Qu.: 8.00 1st Qu.: 8.00 yes: 51 yes:375 1st Qu.:1.000
## Median :11.00 Median :11.00 Median :2.000
## Mean :10.91 Mean :10.42 Mean :2.035
## 3rd Qu.:13.00 3rd Qu.:14.00 3rd Qu.:2.000
## Max. :19.00 Max. :20.00 Max. :4.000
pairs(data[, c("G1","G3","studytime")])

Preprocessing Data
sum(is.na(data))
## [1] 0
data$studytime <- scale(data$studytime)
Uji Asumsi
Normalitas Multivariat (Mardia)
MVN::mvn(data[, c("G1","G3")], mvn_test = "mardia")
## $multivariate_normality
## Test Statistic p.value Method MVN
## 1 Mardia Skewness 208.530 <0.001 asymptotic ✗ Not normal
## 2 Mardia Kurtosis 4.917 <0.001 asymptotic ✗ Not normal
##
## $univariate_normality
## Test Variable Statistic p.value Normality
## 1 Anderson-Darling G1 3.227 <0.001 ✗ Not normal
## 2 Anderson-Darling G3 8.303 <0.001 ✗ Not normal
##
## $descriptives
## Variable n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## 1 G1 395 10.909 3.319 11 3 19 8 13 0.24 2.300
## 2 G3 395 10.415 4.581 11 0 20 8 14 -0.73 3.383
##
## $data
## G1 G3
## 1 5 6
## 2 5 6
## 3 7 10
## 4 15 15
## 5 6 10
## 6 15 15
## 7 12 11
## 8 6 6
## 9 16 19
## 10 14 15
## 11 10 9
## 12 10 12
## 13 14 14
## 14 10 11
## 15 14 16
## 16 14 14
## 17 13 14
## 18 8 10
## 19 6 5
## 20 8 10
## 21 13 15
## 22 12 15
## 23 15 16
## 24 13 12
## 25 10 8
## 26 6 8
## 27 12 11
## 28 15 15
## 29 11 11
## 30 10 11
## 31 9 12
## 32 17 17
## 33 17 16
## 34 8 12
## 35 12 15
## 36 8 6
## 37 15 18
## 38 15 15
## 39 12 11
## 40 14 13
## 41 7 11
## 42 12 12
## 43 19 18
## 44 8 11
## 45 10 9
## 46 8 6
## 47 11 11
## 48 19 20
## 49 15 14
## 50 7 7
## 51 12 13
## 52 11 13
## 53 11 10
## 54 8 11
## 55 10 13
## 56 8 10
## 57 14 15
## 58 14 15
## 59 9 9
## 60 15 16
## 61 10 11
## 62 10 11
## 63 8 9
## 64 10 9
## 65 10 10
## 66 16 15
## 67 13 12
## 68 7 6
## 69 8 8
## 70 16 16
## 71 13 15
## 72 10 10
## 73 8 5
## 74 12 14
## 75 11 11
## 76 9 10
## 77 11 10
## 78 11 11
## 79 8 10
## 80 5 5
## 81 10 12
## 82 11 11
## 83 7 6
## 84 15 15
## 85 9 10
## 86 7 8
## 87 8 6
## 88 13 14
## 89 11 10
## 90 8 7
## 91 7 8
## 92 16 18
## 93 7 6
## 94 11 10
## 95 11 14
## 96 7 10
## 97 11 15
## 98 8 10
## 99 11 14
## 100 7 8
## 101 7 5
## 102 16 17
## 103 10 14
## 104 7 6
## 105 16 18
## 106 10 11
## 107 7 8
## 108 16 18
## 109 10 13
## 110 14 16
## 111 18 19
## 112 7 10
## 113 10 13
## 114 18 19
## 115 9 9
## 116 15 16
## 117 11 14
## 118 13 13
## 119 9 8
## 120 14 13
## 121 16 15
## 122 16 15
## 123 13 13
## 124 14 13
## 125 8 8
## 126 13 12
## 127 7 11
## 128 7 9
## 129 7 0
## 130 18 18
## 131 12 0
## 132 8 0
## 133 10 12
## 134 12 11
## 135 9 0
## 136 11 0
## 137 10 0
## 138 4 0
## 139 14 12
## 140 16 15
## 141 7 0
## 142 9 9
## 143 9 11
## 144 14 13
## 145 5 0
## 146 8 11
## 147 6 0
## 148 10 11
## 149 7 0
## 150 8 10
## 151 6 0
## 152 12 14
## 153 10 10
## 154 5 0
## 155 11 12
## 156 11 8
## 157 16 13
## 158 9 10
## 159 17 15
## 160 10 12
## 161 7 0
## 162 5 7
## 163 7 0
## 164 10 10
## 165 5 7
## 166 12 12
## 167 10 10
## 168 14 16
## 169 6 0
## 170 14 14
## 171 6 0
## 172 13 16
## 173 13 10
## 174 8 0
## 175 10 9
## 176 10 9
## 177 13 11
## 178 6 6
## 179 10 9
## 180 10 11
## 181 9 8
## 182 12 12
## 183 16 17
## 184 9 8
## 185 12 12
## 186 12 11
## 187 11 11
## 188 15 15
## 189 8 9
## 190 8 10
## 191 11 13
## 192 8 9
## 193 7 8
## 194 8 10
## 195 13 14
## 196 14 15
## 197 17 16
## 198 9 10
## 199 18 18
## 200 9 10
## 201 16 16
## 202 8 10
## 203 9 10
## 204 7 6
## 205 10 11
## 206 10 9
## 207 7 7
## 208 11 13
## 209 9 10
## 210 7 7
## 211 8 8
## 212 12 13
## 213 12 14
## 214 6 8
## 215 8 10
## 216 14 15
## 217 6 4
## 218 6 8
## 219 7 8
## 220 9 10
## 221 6 6
## 222 6 0
## 223 16 17
## 224 12 13
## 225 13 14
## 226 9 7
## 227 16 15
## 228 12 12
## 229 10 9
## 230 12 12
## 231 13 14
## 232 11 11
## 233 11 9
## 234 14 13
## 235 9 6
## 236 11 10
## 237 14 13
## 238 13 12
## 239 13 11
## 240 7 0
## 241 12 12
## 242 10 12
## 243 6 0
## 244 13 12
## 245 7 0
## 246 18 18
## 247 12 13
## 248 6 8
## 249 3 5
## 250 13 15
## 251 6 8
## 252 7 10
## 253 6 8
## 254 8 8
## 255 8 12
## 256 7 8
## 257 14 13
## 258 11 11
## 259 15 14
## 260 10 0
## 261 17 18
## 262 8 8
## 263 13 12
## 264 10 9
## 265 9 0
## 266 17 17
## 267 9 10
## 268 12 11
## 269 10 10
## 270 6 0
## 271 9 9
## 272 15 14
## 273 11 11
## 274 15 14
## 275 10 10
## 276 12 12
## 277 10 9
## 278 9 9
## 279 9 8
## 280 10 10
## 281 8 8
## 282 11 10
## 283 12 12
## 284 8 10
## 285 10 11
## 286 12 11
## 287 18 19
## 288 13 12
## 289 15 14
## 290 15 15
## 291 12 11
## 292 15 15
## 293 12 13
## 294 18 18
## 295 14 14
## 296 14 11
## 297 10 0
## 298 10 8
## 299 14 14
## 300 16 16
## 301 12 11
## 302 11 10
## 303 15 14
## 304 17 18
## 305 15 13
## 306 14 12
## 307 17 18
## 308 8 8
## 309 15 12
## 310 12 10
## 311 9 0
## 312 14 13
## 313 13 11
## 314 13 11
## 315 15 13
## 316 13 11
## 317 8 0
## 318 9 9
## 319 11 10
## 320 11 11
## 321 13 13
## 322 11 9
## 323 11 11
## 324 12 15
## 325 16 15
## 326 9 11
## 327 14 16
## 328 11 10
## 329 10 9
## 330 14 14
## 331 9 8
## 332 12 14
## 333 7 0
## 334 8 0
## 335 10 0
## 336 16 15
## 337 14 13
## 338 7 0
## 339 16 17
## 340 9 10
## 341 11 11
## 342 10 0
## 343 16 15
## 344 9 0
## 345 11 10
## 346 13 14
## 347 16 16
## 348 10 9
## 349 13 15
## 350 11 13
## 351 8 8
## 352 13 13
## 353 8 8
## 354 8 8
## 355 13 11
## 356 10 9
## 357 12 13
## 358 12 11
## 359 10 10
## 360 18 16
## 361 13 13
## 362 13 12
## 363 11 10
## 364 16 15
## 365 12 12
## 366 10 10
## 367 13 13
## 368 7 0
## 369 11 10
## 370 14 11
## 371 7 9
## 372 14 12
## 373 13 11
## 374 6 5
## 375 19 19
## 376 8 10
## 377 15 15
## 378 8 10
## 379 15 15
## 380 10 10
## 381 15 14
## 382 7 7
## 383 11 10
## 384 6 0
## 385 6 5
## 386 10 10
## 387 6 6
## 388 7 0
## 389 7 8
## 390 6 0
## 391 9 9
## 392 14 16
## 393 10 7
## 394 11 10
## 395 8 9
##
## $subset
## NULL
##
## $outlierMethod
## [1] "none"
##
## attr(,"class")
## [1] "mvn"
Homogenitas Kovarians (Box’s M)
boxM(data[, c("G1","G3")], data$schoolsup)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: data[, c("G1", "G3")]
## Chi-Sq (approx.) = 19.418, df = 3, p-value = 0.0002241
boxM(data[, c("G1","G3")], data$higher)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: data[, c("G1", "G3")]
## Chi-Sq (approx.) = 2.7773, df = 3, p-value = 0.4272
Dependensi Antar Variabel Dependen (Korelasi)
cor.test(data$G1, data$G3)
##
## Pearson's product-moment correlation
##
## data: data$G1 and data$G3
## t = 26.568, df = 393, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7631479 0.8341713
## sample estimates:
## cor
## 0.8014679
Homogeneity of Regression Slope
model_slope <- lm(G3 ~ studytime * schoolsup * higher, data = data)
anova(model_slope)
## Analysis of Variance Table
##
## Response: G3
## Df Sum Sq Mean Sq F value Pr(>F)
## studytime 1 79.1 79.132 3.9579 0.0473533 *
## schoolsup 1 61.9 61.940 3.0980 0.0791749 .
## higher 1 245.6 245.647 12.2864 0.0005096 ***
## studytime:schoolsup 1 114.2 114.232 5.7135 0.0173112 *
## studytime:higher 1 1.8 1.776 0.0888 0.7658045
## schoolsup:higher 1 9.7 9.725 0.4864 0.4859585
## Residuals 388 7757.5 19.993
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
MANOVA
manova_model <- manova(cbind(G1, G3) ~ schoolsup * higher, data = data)
summary(manova_model, test = "Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## schoolsup 1 0.067721 14.1649 2 390 1.152e-06 ***
## higher 1 0.040702 8.2736 2 390 0.0003027 ***
## schoolsup:higher 1 0.003051 0.5967 2 390 0.5511180
## Residuals 391
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
MANCOVA
mancova_model <- manova(cbind(G1, G3) ~ schoolsup * higher + studytime, data = data)
summary(mancova_model, test = "Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## schoolsup 1 0.069366 14.4973 2 389 8.462e-07 ***
## higher 1 0.041284 8.3755 2 389 0.0002746 ***
## studytime 1 0.025928 5.1773 2 389 0.0060387 **
## schoolsup:higher 1 0.003120 0.6087 2 389 0.5445488
## Residuals 390
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ANOVA
summary.aov(manova_model)
## Response G1 :
## Df Sum Sq Mean Sq F value Pr(>F)
## schoolsup 1 196.2 196.207 19.2547 1.473e-05 ***
## higher 1 156.9 156.915 15.3988 0.0001028 ***
## schoolsup:higher 1 3.3 3.272 0.3211 0.5712535
## Residuals 391 3984.3 10.190
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response G3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## schoolsup 1 56.7 56.681 2.8045 0.0947992 .
## higher 1 290.0 289.975 14.3476 0.0001759 ***
## schoolsup:higher 1 20.9 20.879 1.0331 0.3100655
## Residuals 391 7902.4 20.211
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ANCOVA
ancova_model <- aov(G3 ~ schoolsup * higher + studytime, data = data)
summary(ancova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## schoolsup 1 57 56.68 2.812 0.094350 .
## higher 1 290 289.98 14.387 0.000172 ***
## studytime 1 40 40.06 1.988 0.159377
## schoolsup:higher 1 23 22.64 1.123 0.289830
## Residuals 390 7861 20.16
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Post-Hoc Tukey
TukeyHSD(aov(G3 ~ schoolsup, data = data))
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = G3 ~ schoolsup, data = data)
##
## $schoolsup
## diff lwr upr p adj
## yes-no -1.129674 -2.478272 0.2189241 0.100385
TukeyHSD(aov(G3 ~ higher, data = data))
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = G3 ~ higher, data = data)
##
## $higher
## diff lwr upr p adj
## yes-no 3.808 1.773035 5.842965 0.0002668