Latihan Uji Vektor Rataan 2 Populasi

Input Data

  1. Jumlah sampel: 40 peserta (20 soal mudah, 20 soal sulit)
  2. Variabel: skor statistika dan psikologi
library(MASS)
## Warning: package 'MASS' was built under R version 4.4.3
set.seed(55)

n_easy <- 20
n_hard <- 20

# Skor peserta dengan Soal Mudah: rata-rata lebih tinggi
mu_easy <- c(85, 78)
Sigma <- matrix(c(120, 35, 35, 140), 2) # Matriks kovariansi diasumsikan sama
data_easy <- mvrnorm(n_easy, mu = mu_easy, Sigma = Sigma)

# Skor peserta dengan Soal Sulit: rata-rata lebih rendah
mu_hard <- c(72, 68)
data_hard <- mvrnorm(n_hard, mu = mu_hard, Sigma = Sigma)

# Gabungkan menjadi satu data frame untuk analisis
data_psikologi <- data.frame(
  Tingkat_Kesulitan = rep(c("Mudah", "Sulit"), each = 20),
  Statistika = c(data_easy[,1], data_hard[,1]),
  Psikologi = c(data_easy[,2], data_hard[,2])
)

print("Data Tes Statistika dan Psikologi:")
## [1] "Data Tes Statistika dan Psikologi:"
print(data_psikologi)
##    Tingkat_Kesulitan Statistika Psikologi
## 1              Mudah   97.66776  70.38589
## 2              Mudah   59.35788  68.05769
## 3              Mudah   79.84699  84.33618
## 4              Mudah   68.07185  72.68467
## 5              Mudah   79.34746  82.29455
## 6              Mudah   86.81506  95.83486
## 7              Mudah   86.42068  68.76308
## 8              Mudah   73.36953  85.16946
## 9              Mudah   99.98909  71.62757
## 10             Mudah   84.51894  81.56874
## 11             Mudah   72.53425  86.61263
## 12             Mudah   76.01986  71.14885
## 13             Mudah   76.09838  51.18250
## 14             Mudah   83.16408  73.55566
## 15             Mudah   84.11458  68.36415
## 16             Mudah   83.44258  73.25648
## 17             Mudah  105.68456 100.45533
## 18             Mudah   93.91396  88.94286
## 19             Mudah   83.43033  83.80259
## 20             Mudah   87.78303  91.95618
## 21             Sulit   68.84964  88.97279
## 22             Sulit   69.36481  65.35646
## 23             Sulit   55.10047  68.70304
## 24             Sulit   75.23835  80.42948
## 25             Sulit   83.74046  71.76961
## 26             Sulit   77.22954  74.19018
## 27             Sulit   71.04969  75.60913
## 28             Sulit   60.73786  55.27884
## 29             Sulit   82.42591  57.42222
## 30             Sulit   57.25972  54.58963
## 31             Sulit   65.15272  54.36741
## 32             Sulit   86.55334  62.29882
## 33             Sulit   69.98745  52.89261
## 34             Sulit   66.42993  61.17193
## 35             Sulit   69.13014  67.57873
## 36             Sulit   70.54818  72.69181
## 37             Sulit   81.67256  69.23070
## 38             Sulit   54.05428  58.72997
## 39             Sulit   53.87893  55.28152
## 40             Sulit   72.70178  59.58587

Pemisahan Data Berdasarkan Kelompok

group_easy <- as.matrix(data_easy)
colnames(group_easy) <- c("Statistika", "Psikologi")
print("\nData Kelompok Soal Mudah:")
## [1] "\nData Kelompok Soal Mudah:"
print(group_easy)
##       Statistika Psikologi
##  [1,]   97.66776  70.38589
##  [2,]   59.35788  68.05769
##  [3,]   79.84699  84.33618
##  [4,]   68.07185  72.68467
##  [5,]   79.34746  82.29455
##  [6,]   86.81506  95.83486
##  [7,]   86.42068  68.76308
##  [8,]   73.36953  85.16946
##  [9,]   99.98909  71.62757
## [10,]   84.51894  81.56874
## [11,]   72.53425  86.61263
## [12,]   76.01986  71.14885
## [13,]   76.09838  51.18250
## [14,]   83.16408  73.55566
## [15,]   84.11458  68.36415
## [16,]   83.44258  73.25648
## [17,]  105.68456 100.45533
## [18,]   93.91396  88.94286
## [19,]   83.43033  83.80259
## [20,]   87.78303  91.95618
group_hard <- as.matrix(data_hard)
colnames(group_hard) <- c("Statistika", "Psikologi")
print("\nData Kelompok Soal Sulit:")
## [1] "\nData Kelompok Soal Sulit:"
print(group_hard)
##       Statistika Psikologi
##  [1,]   68.84964  88.97279
##  [2,]   69.36481  65.35646
##  [3,]   55.10047  68.70304
##  [4,]   75.23835  80.42948
##  [5,]   83.74046  71.76961
##  [6,]   77.22954  74.19018
##  [7,]   71.04969  75.60913
##  [8,]   60.73786  55.27884
##  [9,]   82.42591  57.42222
## [10,]   57.25972  54.58963
## [11,]   65.15272  54.36741
## [12,]   86.55334  62.29882
## [13,]   69.98745  52.89261
## [14,]   66.42993  61.17193
## [15,]   69.13014  67.57873
## [16,]   70.54818  72.69181
## [17,]   81.67256  69.23070
## [18,]   54.05428  58.72997
## [19,]   53.87893  55.28152
## [20,]   72.70178  59.58587

Statistika Deskriptif

# Menghitung vektor rataan
xbar1 <- apply(group_easy, 2, mean)
print("\nRata-rata Kelompok Soal Mudah:")
## [1] "\nRata-rata Kelompok Soal Mudah:"
print(xbar1)
## Statistika  Psikologi 
##   83.07954   78.50000
xbar2 <- apply(group_hard, 2, mean)
print("\nRata-rata Kelompok Soal Sulit:")
## [1] "\nRata-rata Kelompok Soal Sulit:"
print(xbar2)
## Statistika  Psikologi 
##   69.55529   65.30754
# Menghitung matriks kovarians
cov_m1 <- cov(group_easy)
print("\nMatriks Kovarians Soal Mudah:")
## [1] "\nMatriks Kovarians Soal Mudah:"
print(cov_m1)
##            Statistika Psikologi
## Statistika  120.74498  45.16269
## Psikologi    45.16269 135.50761
cov_m2 <- cov(group_hard)
print("\nMatriks Kovarians Soal Sulit:")
## [1] "\nMatriks Kovarians Soal Sulit:"
print(cov_m2)
##            Statistika Psikologi
## Statistika    97.9419  32.30060
## Psikologi     32.3006  97.69633
# Ukuran sampel
n1 <- nrow(group_easy)
n2 <- nrow(group_hard)
print(paste("\nUkuran Sampel Soal Mudah:", n1))
## [1] "\nUkuran Sampel Soal Mudah: 20"
print(paste("Ukuran Sampel Soal Sulit:", n2))
## [1] "Ukuran Sampel Soal Sulit: 20"

Kelompok yang mengerjakan soal mudah memiliki skor rata-rata lebih tinggi sekitar 13-14 poin pada kedua mata pelajaran dibandingkan kelompok soal sulit. Ini menunjukkan pola yang konsisten bahwa tingkat kesulitan soal mempengaruhi performa peserta.

Analisis dengan Asumsi Ragam Sama

Matriks Kovarians Gabungan

# S Gabungan (Pooled Covariance Matrix)
s_gab <- ((n1-1)*cov_m1 + (n2-1)*cov_m2) / (n1+n2-2)
print("\nMatriks Kovarians Gabungan:")
## [1] "\nMatriks Kovarians Gabungan:"
print(s_gab)
##            Statistika Psikologi
## Statistika  109.34344  38.73165
## Psikologi    38.73165 116.60197
  1. Kedua kelompok menunjukkan kovarians positif antara Statistika dan Psikologi (45.16 dan 32.30), artinya peserta yang skor Statistikanya tinggi cenderung juga memiliki skor Psikologi yang tinggi
  2. Variansi kelompok soal mudah (120.74 dan 135.51) sedikit lebih besar dari kelompok soal sulit (97.94 dan 97.70), menunjukkan sebaran skor yang lebih heterogen pada soal mudah
  3. Matriks kovarians gabungan merepresentasikan estimasi pooled dari kedua kelompok

Uji T2 Hotelling (Ragam Sama)

Hipotesis: 1. H₀: μ₁ = μ₂ (Tidak ada perbedaan vektor rata-rata antara kelompok soal mudah dan sulit) 2. H₁: μ₁ ≠ μ₂ (Ada perbedaan vektor rata-rata)

library(Hotelling)
## Loading required package: corpcor
t2_homogen <- hotelling.test(group_easy, group_hard, var.equal=TRUE)
print("\nHasil Uji T² Hotelling (Ragam Sama):")
## [1] "\nHasil Uji T² Hotelling (Ragam Sama):"
print(t2_homogen)
## Test stat:  23.589 
## Numerator df:  2 
## Denominator df:  37 
## P-value:  0.0001319

Interpretasi: 1. Keputusan: Tolak H₀ pada α = 0.05 2. Interpretasi: Dengan p-value = 0.0001319 (< 0.05), terdapat bukti statistik yang sangat kuat bahwa ada perbedaan signifikan dalam vektor rata-rata skor Statistika dan Psikologi antara kelompok yang mengerjakan soal mudah dan soal sulit. Perbedaan ini signifikan secara statistik pada tingkat kepercayaan 95%.

Selang Kepercayaan Simultan (Ragam Sama)

T.ci <- function(mu1, mu2, S_gab, n1, n2, avec=rep(1,length(mu1)), 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)
}

print("\nSELANG KEPERCAYAAN SIMULTAN (95%)")
## [1] "\nSELANG KEPERCAYAAN SIMULTAN (95%)"
print("\nUntuk Statistika:")
## [1] "\nUntuk Statistika:"
ci_stat_sim <- T.ci(xbar1, xbar2, s_gab, n1, n2, avec=c(1,0), level=0.95)
print(ci_stat_sim)
##     lower     upper 
##  4.978066 22.070443
print("\nUntuk Psikologi:")
## [1] "\nUntuk Psikologi:"
ci_psik_sim <- T.ci(xbar1, xbar2, s_gab, n1, n2, avec=c(0,1), level=0.95)
print(ci_psik_sim)
##     lower     upper 
##  4.367168 22.017751

Interpretasi: 1. Dengan tingkat kepercayaan 95%, perbedaan rata-rata skor Statistika antara kelompok soal mudah dan sulit berada antara 4.98 hingga 22.07 poin 2. Untuk Psikologi, perbedaannya berada antara 4.37 hingga 22.02 poin 3.Kelompok soal mudah konsisten mendapat skor lebih tinggi minimal sekitar 4-5 poin pada kedua mata pelajaran

Selang Kepercayaan Bonferroni (Ragam Sama)

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
}

print("\n=== SELANG KEPERCAYAAN BONFERRONI (95%) ===")
## [1] "\n=== SELANG KEPERCAYAAN BONFERRONI (95%) ==="
print("\nUntuk Statistika:")
## [1] "\nUntuk Statistika:"
bon_stat <- bon(xbar1, xbar2, s_gab, n1, n2, 0.05, 1)
print(bon_stat)
##     lower     upper 
##  5.807311 21.241198
print("\nUntuk Psikologi:")
## [1] "\nUntuk Psikologi:"
bon_psik <- bon(xbar1, xbar2, s_gab, n1, n2, 0.05, 2)
print(bon_psik)
##     lower     upper 
##  5.223495 21.161424

Interpretasi Selang Kepercayaan: 1. Metode Bonferroni lebih konservatif, menghasilkan selang yang sedikit lebih sempit dibanding simultan 2. Bonferroni mengontrol tingkat kesalahan familywise dengan membagi alpha untuk multiple comparisons 3. Kedua variabel tetap menunjukkan perbedaan signifikan (selang tidak mengandung 0)

Analisis dengan Asumsi Ragam Tidak Sama

Uji T2 Hotelling (Ragam Tidak Sama)

Hipotesis: 1. H₀: μ₁ = μ₂ (Tidak ada perbedaan vektor rata-rata antara kelompok) 2. H₁: μ₁ ≠ μ₂ (Ada perbedaan vektor rata-rata) Di mana: - μ₁ = vektor rata-rata kelompok Soal Mudah [Statistika, Psikologi] - μ₂ = vektor rata-rata kelompok Soal Sulit [Statistika, Psikologi]

print("\nANALISIS DENGAN ASUMSI RAGAM TIDAK SAMA")
## [1] "\nANALISIS DENGAN ASUMSI RAGAM TIDAK SAMA"
t2_not_homogen <- hotelling.test(group_easy, group_hard, var.equal=FALSE)
print("\nHasil Uji T² Hotelling (Ragam Tidak Sama):")
## [1] "\nHasil Uji T² Hotelling (Ragam Tidak Sama):"
print(t2_not_homogen)
## Test stat:  23.589 
## Numerator df:  2 
## Denominator df:  37.3024107700876 
## P-value:  0.0001299

Interpretasi: Terdapat bukti statistik yang sangat kuat (p < 0.001) bahwa ada perbedaan signifikan dalam vektor rata-rata skor Statistika dan Psikologi antara kelompok yang mengerjakan soal mudah dan soal sulit, bahkan ketika kita tidak mengasumsikan kesamaan variansi antar kelompok.

Selang Kepercayaan Simultan (Ragam Tidak Sama)

T.ci_unequal <- function(mu1, mu2, S1, S2, n1, n2, avec=rep(1,length(mu1)), 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)
}

print("\nSELANG KEPERCAYAAN SIMULTAN - RAGAM TIDAK SAMA (95%)")
## [1] "\nSELANG KEPERCAYAAN SIMULTAN - RAGAM TIDAK SAMA (95%)"
print("\nUntuk Statistika:")
## [1] "\nUntuk Statistika:"
ci_stat_uneq <- T.ci_unequal(xbar1, xbar2, cov_m1, cov_m2, n1, n2, avec=c(1,0), level=0.95)
print(ci_stat_uneq)
##     lower     upper 
##  5.430261 21.618248
print("\nUntuk Psikologi:")
## [1] "\nUntuk Psikologi:"
ci_psik_uneq <- T.ci_unequal(xbar1, xbar2, cov_m1, cov_m2, n1, n2, avec=c(0,1), level=0.95)
print(ci_psik_uneq)
##     lower     upper 
##  4.834131 21.550788

Interpetasi: 1. Dengan tingkat kepercayaan 95%, perbedaan rata-rata skor Statistika antara kelompok soal mudah dan soal sulit berada antara 5.43 hingga 21.62 poin. 2. Dengan tingkat kepercayaan 95%, perbedaan rata-rata skor Psikologi antara kelompok soal mudah dan soal sulit berada antara 4.83 hingga 21.55 poin.