Data di bawah ini merupakan data nilai ujian Matematika dan Bahasa Inggris siswa SMA dengan dua kelompok metode belajar: Online vs Tatap Muka.
library(MASS)
## Warning: package 'MASS' was built under R version 4.4.3
set.seed(60)
n_online <- 30
n_tatapmuka <- 30
# Nilai siswa dengan metode Online: rata-rata agak lebih rendah
mu_online <- c(70, 65)
Sigma <- matrix(c(150, 40, 40, 160), 2) # Matriks kovariansi sama
data_online <- mvrnorm(n_online, mu = mu_online, Sigma = Sigma)
# Nilai siswa dengan metode Tatap Muka: rata-rata lebih tinggi
mu_tatapmuka <- c(75, 70)
data_tatapmuka <- mvrnorm(n_tatapmuka, mu = mu_tatapmuka, Sigma = Sigma)
# Gabungkan menjadi satu data frame
data_siswa <- data.frame(
Metode = rep(c("Online", "TatapMuka"), each = 30),
Matematika = c(data_online[,1], data_tatapmuka[,1]),
Inggris = c(data_online[,2], data_tatapmuka[,2])
)
data_siswa
## Metode Matematika Inggris
## 1 Online 78.88446 70.59110
## 2 Online 61.54510 81.78300
## 3 Online 65.65985 58.11069
## 4 Online 72.90863 59.56902
## 5 Online 50.99217 49.46989
## 6 Online 66.08174 36.36235
## 7 Online 86.20075 70.77560
## 8 Online 80.41880 61.83868
## 9 Online 58.47256 58.29186
## 10 Online 75.49486 68.34482
## 11 Online 53.45992 75.83464
## 12 Online 60.25680 73.35233
## 13 Online 79.36314 82.17310
## 14 Online 61.34217 61.61093
## 15 Online 61.81627 64.87956
## 16 Online 75.91563 88.44731
## 17 Online 85.47215 47.65922
## 18 Online 74.91870 71.72031
## 19 Online 49.59112 76.88768
## 20 Online 66.86453 76.01683
## 21 Online 53.58168 74.06280
## 22 Online 52.45271 71.35611
## 23 Online 67.62678 79.73782
## 24 Online 76.85782 71.87500
## 25 Online 69.03664 71.53135
## 26 Online 85.30064 59.76883
## 27 Online 70.27287 60.48750
## 28 Online 54.06540 46.56407
## 29 Online 94.90530 83.55612
## 30 Online 84.56154 82.50089
## 31 TatapMuka 76.52003 68.43004
## 32 TatapMuka 61.30234 58.14307
## 33 TatapMuka 53.79773 70.47836
## 34 TatapMuka 57.80635 53.26513
## 35 TatapMuka 82.63769 85.07951
## 36 TatapMuka 79.11308 74.98825
## 37 TatapMuka 55.96402 77.79058
## 38 TatapMuka 67.82188 65.97665
## 39 TatapMuka 85.48343 75.72703
## 40 TatapMuka 93.45902 70.34425
## 41 TatapMuka 73.89913 85.49127
## 42 TatapMuka 70.66736 85.95686
## 43 TatapMuka 87.20447 58.17596
## 44 TatapMuka 84.57367 71.09544
## 45 TatapMuka 62.58471 83.83622
## 46 TatapMuka 90.42409 66.56922
## 47 TatapMuka 84.27680 65.40855
## 48 TatapMuka 78.89036 45.61479
## 49 TatapMuka 78.73704 57.38408
## 50 TatapMuka 72.91988 53.59099
## 51 TatapMuka 71.87496 76.99352
## 52 TatapMuka 107.53999 73.13802
## 53 TatapMuka 103.15287 84.22007
## 54 TatapMuka 89.43702 82.27705
## 55 TatapMuka 76.73202 63.49353
## 56 TatapMuka 94.41625 61.97247
## 57 TatapMuka 79.14487 52.56102
## 58 TatapMuka 62.50638 60.44645
## 59 TatapMuka 76.55088 68.87825
## 60 TatapMuka 70.22168 61.75245
Hipotesis
H0: Tidak ada perbedaan rata-rata nilai Matematika dan Inggris antara metode Online dan Tatap Muka (vektor mean = (0,0)).
H1: Ada perbedaan rata-rata nilai Matematika dan/atau Inggris antara metode Online dan Tatap Muka.
# Pisahkan data berdasarkan kelompok
group_online <- subset(data_siswa, Metode == "Online", select = c(Matematika, Inggris))
group_online
## Matematika Inggris
## 1 78.88446 70.59110
## 2 61.54510 81.78300
## 3 65.65985 58.11069
## 4 72.90863 59.56902
## 5 50.99217 49.46989
## 6 66.08174 36.36235
## 7 86.20075 70.77560
## 8 80.41880 61.83868
## 9 58.47256 58.29186
## 10 75.49486 68.34482
## 11 53.45992 75.83464
## 12 60.25680 73.35233
## 13 79.36314 82.17310
## 14 61.34217 61.61093
## 15 61.81627 64.87956
## 16 75.91563 88.44731
## 17 85.47215 47.65922
## 18 74.91870 71.72031
## 19 49.59112 76.88768
## 20 66.86453 76.01683
## 21 53.58168 74.06280
## 22 52.45271 71.35611
## 23 67.62678 79.73782
## 24 76.85782 71.87500
## 25 69.03664 71.53135
## 26 85.30064 59.76883
## 27 70.27287 60.48750
## 28 54.06540 46.56407
## 29 94.90530 83.55612
## 30 84.56154 82.50089
group_tatapmuka <- subset(data_siswa, Metode == "TatapMuka", select = c(Matematika, Inggris))
group_tatapmuka
## Matematika Inggris
## 31 76.52003 68.43004
## 32 61.30234 58.14307
## 33 53.79773 70.47836
## 34 57.80635 53.26513
## 35 82.63769 85.07951
## 36 79.11308 74.98825
## 37 55.96402 77.79058
## 38 67.82188 65.97665
## 39 85.48343 75.72703
## 40 93.45902 70.34425
## 41 73.89913 85.49127
## 42 70.66736 85.95686
## 43 87.20447 58.17596
## 44 84.57367 71.09544
## 45 62.58471 83.83622
## 46 90.42409 66.56922
## 47 84.27680 65.40855
## 48 78.89036 45.61479
## 49 78.73704 57.38408
## 50 72.91988 53.59099
## 51 71.87496 76.99352
## 52 107.53999 73.13802
## 53 103.15287 84.22007
## 54 89.43702 82.27705
## 55 76.73202 63.49353
## 56 94.41625 61.97247
## 57 79.14487 52.56102
## 58 62.50638 60.44645
## 59 76.55088 68.87825
## 60 70.22168 61.75245
# Hitung selisih nilai antara Tatap Muka dan Online
d_matematika = group_tatapmuka$Matematika - group_online$Matematika
d_inggris = group_tatapmuka$Inggris - group_online$Inggris
# Gabungkan ke dalam data frame
X = data.frame(d_matematika, d_inggris)
X
## d_matematika d_inggris
## 1 -2.3644374 -2.161063
## 2 -0.2427584 -23.639931
## 3 -11.8621266 12.367669
## 4 -15.1022783 -6.303891
## 5 31.6455117 35.609626
## 6 13.0313351 38.625904
## 7 -30.2367252 7.014983
## 8 -12.5969196 4.137971
## 9 27.0108667 17.435169
## 10 17.9641675 1.999429
## 11 20.4392070 9.656631
## 12 10.4105609 12.604527
## 13 7.8413317 -23.997134
## 14 23.2315051 9.484514
## 15 0.7684371 18.956661
## 16 14.5084585 -21.878098
## 17 -1.1953501 17.749330
## 18 3.9716604 -26.105529
## 19 29.1459191 -19.503601
## 20 6.0553513 -22.425834
## 21 18.2932842 2.930727
## 22 55.0872812 1.781912
## 23 35.5260846 4.482255
## 24 12.5792042 10.402054
## 25 7.6953793 -8.037820
## 26 9.1156087 2.203642
## 27 8.8719932 -7.926474
## 28 8.4409767 13.882380
## 29 -18.3544188 -14.677873
## 30 -14.3398630 -20.748440
# Vektor rataan (mean untuk setiap kolom di X)
xbar = apply(X, 2, mean)
xbar
## d_matematika d_inggris
## 8.5113082 0.7973232
cov_m = cov(X)
cov_m
## d_matematika d_inggris
## d_matematika 322.89022 64.52628
## d_inggris 64.52628 297.18162
library(MVTests)
## Warning: package 'MVTests' was built under R version 4.4.3
##
## Attaching package: 'MVTests'
## The following object is masked from 'package:datasets':
##
## iris
# H0 : Tidak ada perbedaan rata-rata (vektor mean = (0,0))
mean0 = c(0,0)
# Uji Hotelling T²
result = OneSampleHT2(X, mu0 = mean0, alpha = 0.05)
# Ringkasan hasil uji
summary(result)
## One Sample Hotelling T Square Test
##
## Hotelling T Sqaure Statistic = 6.816838
## F value = 3.291 , df1 = 2 , df2 = 28 , p-value: 0.052
##
## Descriptive Statistics
##
## d_matematika d_inggris
## N 30.000000 30.0000000
## Means 8.511308 0.7973232
## Sd 17.969146 17.2389566
##
##
## Detection important variable(s)
##
## Lower Upper Mu0 Important Variables?
## d_matematika -0.1184792 17.141096 0 FALSE
## d_inggris -7.4817863 9.076433 0 FALSE
Interpretasi : Karena p-value (0.052) > α (0.05), maka gagal menolak H0. yang berarti tidak ada bukti signifikan bahwa rata-rata nilai Matematika dan Inggris berbeda antara Online dan Tatap Muka jika dianggap berpasangan.
result$CI
## Lower Upper Mu0 Important Variables?
## d_matematika -0.1184792 17.141096 0 FALSE
## d_inggris -7.4817863 9.076433 0 FALSE
Interpretasi:
Selang kepercayaan Matematika mencakup nol → perbedaan rata-rata tidak signifikan.
Selang kepercayaan Inggris juga mencakup nol → perbedaan rata-rata tidak signifikan.
##. Selang Kepercayaan Bonferroni
bon = function(mu,S,n,alpha,k){
p = length(mu)
lower = mu[k] - sqrt(S[k,k]/n) * abs(qt(alpha/(2*p), df=n-1))
upper = mu[k] + sqrt(S[k,k]/n) * abs(qt(alpha/(2*p), df=n-1))
c(lower = lower,upper = upper)
}
n = nrow(X)
#Kata
bon(xbar, cov_m,n,0.05,1)
## lower.d_matematika upper.d_matematika
## 0.7562331 16.2663834
bon(xbar, cov_m,n,0.05,2)
## lower.d_inggris upper.d_inggris
## -6.642619 8.237265
Interpretasi:
Untuk Matematika, selang tidak mencakup nol → ada indikasi perbedaan signifikan.
Untuk Inggris, selang masih mencakup nol → tidak signifikan.
Hipotesis
H0: Rataan Matematika dan Inggris sama untuk metode Online dan Tatap Muka.
H1: Ada minimal satu perbedaan rataan.
# Memisahkan Data dari Populasi 1 (Online) dan Populasi 2 (Tatap Muka)
data_online = subset(data_siswa, Metode == "Online", select = c(Matematika, Inggris))
data_tatapmuka = subset(data_siswa, Metode == "TatapMuka", select = c(Matematika, Inggris))
## Menghitung vektor rataan dan matriks kovarians
xbar_online = apply(data_online, 2, mean)
xbar_online
## Matematika Inggris
## 69.14402 67.83865
xbar_tatapmuka = apply(data_tatapmuka, 2, mean)
xbar_tatapmuka
## Matematika Inggris
## 77.65533 68.63597
cov_online = cov(data_online)
cov_online
## Matematika Inggris
## Matematika 149.68886 27.25491
## Inggris 27.25491 152.71612
cov_tatapmuka = cov(data_tatapmuka)
cov_tatapmuka
## Matematika Inggris
## Matematika 175.29645 21.00708
## Inggris 21.00708 123.98915
n1 = nrow(data_online)
n2 = nrow(data_tatapmuka)
# S Gabungan
s_gab = ((n1-1)*cov_online + (n2-1)*cov_tatapmuka) / (n1+n2-2)
s_gab
## Matematika Inggris
## Matematika 162.49266 24.13099
## Inggris 24.13099 138.35264
library(Hotelling)
## Loading required package: corpcor
t2_homogen = hotelling.test(data_online, data_tatapmuka, var.equal = TRUE)
t2_homogen
## Test stat: 6.7115
## Numerator df: 2
## Denominator df: 57
## P-value: 0.04413
Interpretasi:
Karena p-value < 0.05, maka tolak H0. Artinya, terdapat perbedaan signifikan nilai rata-rata antara metode Online dan Tatap Muka bila diasumsikan ragam sama dan sampel independen.
T.ci = function(mu1, mu2, S_gab, n1, n2, avec=rep(1,length(mu)), level=0.95){
p = length(mu1)
mu = mu1 - mu2
cval = qf(level, p, n1+n2-p-1) * p * (n1+n2-2) / (n1+n2-p-1)
zhat = crossprod(avec, mu)
zvar = crossprod(avec, S_gab %*% avec) * (1/n1 + 1/n2)
const = sqrt(cval * zvar)
c(lower = zhat - const, upper = zhat + const)
}
# Matematika
T.ci(xbar_online, xbar_tatapmuka, s_gab, n1, n2, avec=c(1,0), level=0.95)
## lower upper
## -16.8563172 -0.1662993
# Inggris
T.ci(xbar_online, xbar_tatapmuka, s_gab, n1, n2, avec=c(0,1), level=0.95)
## lower upper
## -8.497552 6.902906
Matematika: (-16.856, -0.166) → tidak mencakup nol → signifikan.
Inggris: (-8.498, 6.903) → mencakup nol → tidak signifikan.
Interpretasi:
Ada perbedaan rata-rata signifikan pada Matematika.
Tidak ada perbedaan signifikan pada Inggris.
##. Selang Kepercayaan Bonferroni
bon = function(mu1, mu2, S, n1, n2, alpha, k){
p = length(mu1)
mu = mu1 - mu2
lower = mu[k] - sqrt((S[k,k])*(1/n1+1/n2)) * abs(qt(alpha/(2*p), df=n1+n2-2))
upper = mu[k] + sqrt((S[k,k])*(1/n1+1/n2)) * abs(qt(alpha/(2*p), df=n1+n2-2))
ci = c(lower = lower, upper = upper)
names(ci) = c("lower","upper")
ci
}
# Matematika
bon(xbar_online, xbar_tatapmuka, s_gab, n1, n2, 0.05, 1)
## lower upper
## -16.084930 -0.937686
# Inggris
bon(xbar_online, xbar_tatapmuka, s_gab, n1, n2, 0.05, 2)
## lower upper
## -7.785767 6.191121
Matematika: (-16.085, -0.938) → signifikan.
Inggris: (-7.786, 6.191) → tidak signifikan.
Interpretasi konsisten dengan CI simultan: hanya Matematika berbeda signifikan.
Hipotesis
H0: Tidak ada perbedaan rata-rata nilai Matematika dan Inggris antara metode Online dan Tatap Muka (μ₁ = μ₂).
H1: Ada minimal satu perbedaan rata-rata nilai Matematika dan Inggris antara metode Online dan Tatap Muka (μ₁ ≠ μ₂).
# Memisahkan Data dari Populasi 1 (Online) dan Populasi 2 (Tatap Muka)
data_online = subset(data_siswa, Metode == "Online", select = c(Matematika, Inggris))
data_tatapmuka = subset(data_siswa, Metode == "TatapMuka", select = c(Matematika, Inggris))
## Menghitung vektor rataan dan matriks kovarians
xbar_online = apply(data_online, 2, mean)
xbar_online
## Matematika Inggris
## 69.14402 67.83865
xbar_tatapmuka = apply(data_tatapmuka, 2, mean)
xbar_tatapmuka
## Matematika Inggris
## 77.65533 68.63597
cov_online = cov(data_online)
cov_online
## Matematika Inggris
## Matematika 149.68886 27.25491
## Inggris 27.25491 152.71612
cov_tatapmuka = cov(data_tatapmuka)
cov_tatapmuka
## Matematika Inggris
## Matematika 175.29645 21.00708
## Inggris 21.00708 123.98915
n1 = nrow(data_online)
n2 = nrow(data_tatapmuka)
library(Hotelling)
t2_not_homogen = hotelling.test(data_online, data_tatapmuka, var.equal = FALSE)
t2_not_homogen
## Test stat: 6.7115
## Numerator df: 2
## Denominator df: 57.8346962983773
## P-value: 0.04402
Interpretasi :
Karena p-value (0.044) < α (0.05), maka tolak H0. Artinya, terdapat perbedaan signifikan nilai rata-rata antara metode Online dan Tatap Muka pada minimal satu mata pelajaran bila ragam diasumsikan tidak sama.
T.ci = function(mu1, mu2, S1, S2, n1, n2, avec=rep(1,length(mu)), level=0.95){
p = length(mu1)
mu = mu1 - mu2
cval = qchisq(level, p)
zhat = crossprod(avec, mu)
zvar = crossprod(avec, S1 %*% avec)/n1 + crossprod(avec, S2 %*% avec)/n2
const = sqrt(cval * zvar)
c(lower = zhat - const, upper = zhat + const)
}
# Matematika
T.ci(xbar_online, xbar_tatapmuka, cov_online, cov_tatapmuka, n1, n2, avec=c(1,0), level=0.95)
## lower upper
## -16.5676473 -0.4549692
# Inggris
T.ci(xbar_online, xbar_tatapmuka, cov_online, cov_tatapmuka, n1, n2, avec=c(0,1), level=0.95)
## lower upper
## -8.231187 6.636540
Interpretasi:
Untuk Matematika, CI tidak mencakup nol → ada perbedaan signifikan.
Untuk Inggris, CI mencakup nol → tidak ada perbedaan signifikan.
##. Selang Kepercayaan Bonferroni
# Fungsi Bonferroni untuk dua populasi independen ragam TIDAK sama
bon_not_equal = function(mu1, mu2, S1, S2, n1, n2, alpha, k){
p = length(mu1)
mu = mu1 - mu2
# varians untuk variabel ke-k
s1 = S1[k,k]
s2 = S2[k,k]
# standard error
se = sqrt(s1/n1 + s2/n2)
# df Welch–Satterthwaite
num = (s1/n1 + s2/n2)^2
den = ( (s1^2)/(n1^2*(n1-1)) ) + ( (s2^2)/(n2^2*(n2-1)) )
df = num/den
# t-kritis dengan koreksi Bonferroni
tcrit = abs(qt(alpha/(2*p), df = df))
lower = mu[k] - tcrit * se
upper = mu[k] + tcrit * se
ci = c(lower = lower, upper = upper)
names(ci) = c("lower","upper")
ci
}
# Matematika
bon_not_equal(xbar_online, xbar_tatapmuka, cov_online, cov_tatapmuka, n1, n2, 0.05, 1)
## lower upper
## -16.0861811 -0.9364353
# Inggris
bon_not_equal(xbar_online, xbar_tatapmuka, cov_online, cov_tatapmuka, n1, n2, 0.05, 2)
## lower upper
## -7.787771 6.193124
Interpretasi :
Selang kepercayaan 95%: (-16.09 , -0.94) (matematika)
Karena selang ini tidak mencakup 0, maka ada perbedaan signifikan rata-rata nilai Matematika antara metode Online dan Tatap Muka.
Selang kepercayaan 95%: (-7.79 , 6.19) (b.inggris)
Karena selang ini mencakup 0, maka tidak ada perbedaan signifikan rata-rata