## Loading required package: corpcor
Kasus: Perbandingan Nilai Bahasa Inggris dan Bahasa Jerman Mahasiswa Ekonomi vs Manajemen
set.seed(56)
# Jumlah sampel
n_eko <- 30
n_mnj <- 30
# Parameter mean (asumsi kemampuan rata-rata)
mu_eko <- c(70, 78) # Ekonomi: English = 70, Statistics = 78
mu_mnj <- c(80, 72) # Manajemen: English = 80, Statistics = 72
# Kovarians (hubungan antar mata kuliah)
Sigma <- matrix(c(90, 25,
25, 110), 2)
# Data acak multivariat normal
data_eko <- mvrnorm(n_eko, mu = mu_eko, Sigma = Sigma)
data_mnj <- mvrnorm(n_mnj, mu = mu_mnj, Sigma = Sigma)
# Satukan jadi data frame
data_mahasiswa <- data.frame(
Jurusan = rep(c("Ekonomi", "Manajemen"), each = 30),
English = c(data_eko[,1], data_mnj[,1]),
Jerman = c(data_eko[,2], data_mnj[,2])
)
head(data_mahasiswa)## Jurusan English Jerman
## 1 Ekonomi 70.21338 74.57731
## 2 Ekonomi 70.72808 70.69887
## 3 Ekonomi 76.34225 68.32869
## 4 Ekonomi 58.66391 74.85500
## 5 Ekonomi 79.20792 79.11229
## 6 Ekonomi 77.76880 92.99768
# Pisahkan data per jurusan
group_eko <- subset(data_mahasiswa, Jurusan == "Ekonomi", select = c(English, Jerman))
group_mnj <- subset(data_mahasiswa, Jurusan == "Manajemen", select = c(English, Jerman))
# Uji Hotelling T² (independen, ragam sama)
hasil_hotelling <- hotelling.test(group_eko, group_mnj)
hasil_hotelling## Test stat: 22.953
## Numerator df: 2
## Denominator df: 57
## P-value: 7.466e-05
# Selisih berpasangan (anggap tiap mahasiswa Ekonomi dipasangkan dengan Manajemen)
diff_data <- as.matrix(group_eko - group_mnj)
n <- nrow(diff_data) # banyak pasangan
p <- ncol(diff_data) # banyak variabel (English, Jerman)
# Rata-rata selisih
mean_diff <- colMeans(diff_data)
# Kovarians dari selisih
S <- cov(diff_data)
# Statistik Hotelling T²
T2 <- n * t(mean_diff) %*% solve(S) %*% mean_diff
# Konversi ke F
F_stat <- ((n - p) / (p * (n - 1))) * T2
p_value <- 1 - pf(F_stat, p, n - p)
list(T2 = T2, F_stat = F_stat, df1 = p, df2 = n - p, p_value = p_value)## $T2
## [,1]
## [1,] 21.26094
##
## $F_stat
## [,1]
## [1,] 10.2639
##
## $df1
## [1] 2
##
## $df2
## [1] 28
##
## $p_value
## [,1]
## [1,] 0.0004532562
# Fungsi manual Hotelling T² untuk ragam tidak sama
hotelling_unequal <- function(x, y) {
n1 <- nrow(x)
n2 <- nrow(y)
mean1 <- colMeans(x)
mean2 <- colMeans(y)
S1 <- cov(x)
S2 <- cov(y)
# Perbedaan mean
diff <- mean1 - mean2
# Matriks kovarian gabungan (Welch type)
S_pool <- (S1/n1 + S2/n2)
T2 <- t(diff) %*% solve(S_pool) %*% diff
p <- ncol(x)
list(T2 = T2, diff_mean = diff, cov = S_pool)
}
hasil_unequal <- hotelling_unequal(group_eko, group_mnj)
hasil_unequal## $T2
## [,1]
## [1,] 22.95286
##
## $diff_mean
## English Jerman
## -7.213601 6.660739
##
## $cov
## English Jerman
## English 5.047653 1.553483
## Jerman 1.553483 6.715814
# Fungsi Bonferroni CI
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)
}
n1 <- nrow(group_eko)
n2 <- nrow(group_mnj)
xbar_eko <- colMeans(group_eko)
xbar_mnj <- colMeans(group_mnj)
diff_mean <- xbar_eko - xbar_mnj # selisih rata-rata
S1 <- cov(group_eko)
S2 <- cov(group_mnj)
S_pooled <- ((n1 - 1) * S1 + (n2 - 1) * S2) / (n1 + n2 - 2)
cov_diff <- S_pooled * (1/n1 + 1/n2)
n_total <- n1 + n2
cov_m <- cov_diff
xbar_diff <- diff_mean
bon(xbar_diff, cov_m, n_total, 0.05, 1) # untuk English## lower.English upper.English
## -7.880724 -6.546478
## lower.Jerman upper.Jerman
## 5.891236 7.430242
Interpretasi Hasil
Perbandingan Dua Vektor Nilai Tengah (Saling Bebas, Ragam Sama) Uji Hotelling T² menghasilkan nilai statistik uji yang besar dengan p-value yang jauh lebih kecil dari 0.05 Kesimpulan: terdapat perbedaan signifikan antara vektor rata-rata nilai Bahasa Inggris dan Bahasa Jerman mahasiswa Ekonomi dan Manajemen
Perbandingan Dua Vektor Nilai Tengah (Berpasangan) Hasil perhitungan manual menunjukkan nilai T² dan F yang kembali menghasilkan p-value kecil (< 0.05) Kesimpulan: pada asumsi data berpasangan, rata-rata nilai kedua kelompok tetap berbeda signifikan
Perbandingan Dua Vektor Nilai Tengah (Saling Bebas, Ragam Tidak Sama) Nilai T² kembali besar dengan selisih rata-rata positif untuk Bahasa Jerman (Ekonomi lebih tinggi) dan selisih rata-rata negatif untuk Bahasa English (Manajemen lebih tinggi) Kesimpulan: meskipun ragam antar kelompok berbeda, hasil tetap konsisten yaitu ada perbedaan nyata antar jurusan
Selang Kepercayaan Bonferroni (Ragam Sama) Untuk Bahasa English, interval kepercayaan Bonferroni berada seluruhnya di bawah nol → artinya mahasiswa Manajemen unggul di English. Untuk Bahasa Jerman, interval kepercayaan Bonferroni berada seluruhnya di atas nol → artinya mahasiswa Ekonomi unggul di Statistics.