Latihan Praktikum

Input Data

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

1. Perbandingan Dua Vektor Nilai Tengah Berpasangan

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

Uji T2 Hotelling Dua Populasi Sampel Berpasangan

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.

Selang Kepercayaan Simultan

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.

2. Perbandingan Dua Vektor Nilai Tengah Sampel Saling Bebas Ragam Sama

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

Uji T2 Hotelling Dua Populasi Sampel Saling Bebas Ragam Sama

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)
}

Selang Kepercayaan Simultan

# 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.

3. Perbandingan Dua Vektor Nilai Tengah Sampel Saling Bebas Ragam Tidak Sama

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

Uji T2 Hotelling Dua Populasi Sampel Saling Bebas Ragam Tidak Sama

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.

Selang Kepercayaan Simultan

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