Studi Simulasi: Perbandingan Prosedur Uji Dua Kelompok Independen

Evaluasi Galat Tipe I dan Kuasa Uji

Pendahuluan

Latar Belakang

Dalam penelitian kuantitatif, perbandingan dua kelompok independen merupakan salah satu analisis statistik yang paling sering dilakukan. Misalnya, peneliti ingin membandingkan rataan waktu belajar siswa antara dua metode pembelajaran: metode konvensional dan metode berbasis proyek. Hipotesis yang diuji adalah:

\[H_0: \mu_1 = \mu_2 \quad \text{vs} \quad H_1: \mu_1 \neq \mu_2\]

Terdapat beberapa prosedur uji yang tersedia, namun masing-masing memiliki asumsi yang berbeda. Pertanyaannya: prosedur mana yang paling handal dalam berbagai kondisi data?

Tujuan Simulasi

Studi simulasi ini bertujuan untuk:

  1. Mengevaluasi galat tipe I (proporsi penolakan \(H_0\) saat \(H_0\) benar) dari tiga prosedur uji
  2. Mengevaluasi kuasa uji (proporsi penolakan \(H_0\) saat \(H_0\) salah) dari tiga prosedur uji
  3. Membandingkan performa uji pada berbagai kondisi: normalitas, ukuran sampel, keseimbangan, dan homogenitas ragam

Rancangan Simulasi

Prosedur Uji yang Dievaluasi

Empat prosedur uji yang dibandingkan:

No Prosedur Fungsi R Asumsi Utama
1 Uji-t dua sampel (Student) t.test(..., var.equal=TRUE) Normal, ragam homogen
2 Welch two-sample t-test t.test(..., var.equal=FALSE) Normal, ragam boleh berbeda
3 Uji Wilcoxon rank-sum (Mann-Whitney) wilcox.test() Distribusi kontinu, simetri

Skenario Simulasi

Simulasi dirancang dalam dua blok utama:

  • Blok A — \(H_0\) Benar (\(\mu_1 = \mu_2\)): untuk mengukur galat tipe I
  • Blok B — \(H_0\) Salah (\(\mu_1 \neq \mu_2\)): untuk mengukur kuasa uji

Setiap blok dijalankan pada kombinasi kondisi berikut:

Faktor Level
Distribusi Normal, Log-Normal (right-skewed), Uniform
Keseimbangan sampel Seimbang \((n_1 = n_2)\), Tidak seimbang \((n_1 \neq n_2)\)
Rasio ragam Homogen \((\sigma_1 = \sigma_2)\), Heterogen \((\sigma_1 \neq \sigma_2)\)
Ukuran sampel Kecil \((n=15)\), Sedang \((n=30)\), Besar \((n=60)\)

Keputusan Rancangan

  • Banyak ulangan simulasi: \(B = 5000\) (cukup untuk estimasi stabil, terutama untuk kuasa uji yang kecil)
  • Tingkat signifikansi: \(\alpha = 0.05\)
  • Effect size (Blok B): perbedaan rataan \(\delta = 0.5\) (effect size sedang, Cohen’s d ≈ 0.5)
  • set.seed(2024) digunakan untuk reprodusibilitas

Implementasi Simulasi

Load Package

library(tidyverse)
library(knitr)
library(kableExtra)
library(ggplot2)
library(patchwork)
library(scales)

# Seed untuk reprodusibilitas
set.seed(2024)

Fungsi Pembangkit Data

# Fungsi pembangkit data dua kelompok
bangkit_data <- function(n1, n2, distribusi, mu1, mu2, sigma1, sigma2) {
  
  if (distribusi == "Normal") {
    x1 <- rnorm(n1, mean = mu1, sd = sigma1)
    x2 <- rnorm(n2, mean = mu2, sd = sigma2)
    
  } else if (distribusi == "Log-Normal") {
    # Log-normal dengan mean dan sd yang dikontrol via parameter log-scale
    # E[X] = exp(mu + sigma^2/2), sehingga diparameterkan ulang
    log_mu1 <- log(mu1^2 / sqrt(sigma1^2 + mu1^2))
    log_sd1 <- sqrt(log(1 + sigma1^2/mu1^2))
    log_mu2 <- log(mu2^2 / sqrt(sigma2^2 + mu2^2))
    log_sd2 <- sqrt(log(1 + sigma2^2/mu2^2))
    x1 <- rlnorm(n1, meanlog = log_mu1, sdlog = log_sd1)
    x2 <- rlnorm(n2, meanlog = log_mu2, sdlog = log_sd2)
    
  } else if (distribusi == "Uniform") {
    # Uniform dengan mean = mu dan sd = sigma
    # U(a,b): mean = (a+b)/2, sd = (b-a)/sqrt(12)
    a1 <- mu1 - sigma1 * sqrt(3); b1 <- mu1 + sigma1 * sqrt(3)
    a2 <- mu2 - sigma2 * sqrt(3); b2 <- mu2 + sigma2 * sqrt(3)
    x1 <- runif(n1, min = a1, max = b1)
    x2 <- runif(n2, min = a2, max = b2)
  }
  
  list(x1 = x1, x2 = x2)
}

Fungsi Utama: Satu Simulasi

satu_simulasi <- function(n1, n2, distribusi, mu1, mu2, sigma1, sigma2, alpha = 0.05) {
  
  # Bangkit data
  dat <- bangkit_data(n1, n2, distribusi, mu1, mu2, sigma1, sigma2)
  x1 <- dat$x1; x2 <- dat$x2
  
  # Jalankan 3 Uji secara langsung (tanpa tryCatch )
  p_student <- t.test(x1, x2, var.equal = TRUE)$p.value
  p_welch   <- t.test(x1, x2, var.equal = FALSE)$p.value
  p_wilcox  <- wilcox.test(x1, x2, exact = FALSE)$p.value
  
  # Keputusan
  c(
    Student   = as.integer(p_student < alpha),
    Welch     = as.integer(p_welch < alpha),
    Wilcoxon  = as.integer(p_wilcox < alpha)
  )
}

Fungsi Menjalankan Simulasi

jalankan_simulasi <- function(skenario_df, B = 5000, alpha = 0.05) {
  
  hasil_list <- vector("list", nrow(skenario_df))
  
  for (i in seq_len(nrow(skenario_df))) {
    s <- skenario_df[i, ]
    
    # Replikasi
    reps <- replicate(B, satu_simulasi(
      n1 = s$n1, n2 = s$n2,
      distribusi = s$distribusi,
      mu1 = s$mu1, mu2 = s$mu2,
      sigma1 = s$sigma1, sigma2 = s$sigma2,
      alpha = alpha
    ))
    
    # Hitung proporsi tolak H0
    proporsi <- rowMeans(reps, na.rm = TRUE)
    
    hasil_list[[i]] <- tibble(
      Skenario   = s$label,
      Distribusi = s$distribusi,
      n1 = s$n1, n2 = s$n2,
      Ragam      = s$ragam_label,
      Delta      = s$mu2 - s$mu1,
      Student    = proporsi["Student"],
      Welch      = proporsi["Welch"],
      Wilcoxon   = proporsi["Wilcoxon"]
    )
    
    cat(sprintf("[%d/%d] Selesai: %s\n", i, nrow(skenario_df), s$label))
  }
  
  bind_rows(hasil_list)
}

Menjalankan Simulasi

Blok A: Galat Tipe I (\(H_0\) Benar, \(\delta = 0\))

# Skenario Blok A: H0 benar (mu1 = mu2 = 5, sigma berbeda)
skenario_A <- expand.grid(
  distribusi = c("Normal", "Log-Normal", "Uniform"),
  n_label    = c("Kecil (n=15)", "Sedang (n=30)", "Besar (n=60)"),
  ragam_label= c("Homogen", "Heterogen"),
  seimbang   = c(TRUE, FALSE),
  stringsAsFactors = FALSE
) %>%
  mutate(
    n1 = case_when(
      n_label == "Kecil (n=15)"  & seimbang ~ 15,
      n_label == "Kecil (n=15)"  & !seimbang ~ 10,
      n_label == "Sedang (n=30)" & seimbang ~ 30,
      n_label == "Sedang (n=30)" & !seimbang ~ 20,
      n_label == "Besar (n=60)"  & seimbang ~ 60,
      n_label == "Besar (n=60)"  & !seimbang ~ 40
    ),
    n2 = case_when(
      n_label == "Kecil (n=15)"  & seimbang ~ 15,
      n_label == "Kecil (n=15)"  & !seimbang ~ 25,
      n_label == "Sedang (n=30)" & seimbang ~ 30,
      n_label == "Sedang (n=30)" & !seimbang ~ 50,
      n_label == "Besar (n=60)"  & seimbang ~ 60,
      n_label == "Besar (n=60)"  & !seimbang ~ 100
    ),
    mu1 = 5, mu2 = 5,  # H0 benar
    sigma1 = 1,
    sigma2 = ifelse(ragam_label == "Homogen", 1, 3),  # ragam heterogen: sigma2 = 3x sigma1
    label = paste0(distribusi, " | ", n_label, " | ",
                   ifelse(seimbang, "Seimbang", "Tidak Seimbang"), " | ", ragam_label)
  )

cat("Jumlah skenario Blok A:", nrow(skenario_A), "\n")
## Jumlah skenario Blok A: 36
set.seed(2024)
hasil_A <- jalankan_simulasi(skenario_A, B = 5000)
## [1/36] Selesai: Normal | Kecil (n=15) | Seimbang | Homogen
## [2/36] Selesai: Log-Normal | Kecil (n=15) | Seimbang | Homogen
## [3/36] Selesai: Uniform | Kecil (n=15) | Seimbang | Homogen
## [4/36] Selesai: Normal | Sedang (n=30) | Seimbang | Homogen
## [5/36] Selesai: Log-Normal | Sedang (n=30) | Seimbang | Homogen
## [6/36] Selesai: Uniform | Sedang (n=30) | Seimbang | Homogen
## [7/36] Selesai: Normal | Besar (n=60) | Seimbang | Homogen
## [8/36] Selesai: Log-Normal | Besar (n=60) | Seimbang | Homogen
## [9/36] Selesai: Uniform | Besar (n=60) | Seimbang | Homogen
## [10/36] Selesai: Normal | Kecil (n=15) | Seimbang | Heterogen
## [11/36] Selesai: Log-Normal | Kecil (n=15) | Seimbang | Heterogen
## [12/36] Selesai: Uniform | Kecil (n=15) | Seimbang | Heterogen
## [13/36] Selesai: Normal | Sedang (n=30) | Seimbang | Heterogen
## [14/36] Selesai: Log-Normal | Sedang (n=30) | Seimbang | Heterogen
## [15/36] Selesai: Uniform | Sedang (n=30) | Seimbang | Heterogen
## [16/36] Selesai: Normal | Besar (n=60) | Seimbang | Heterogen
## [17/36] Selesai: Log-Normal | Besar (n=60) | Seimbang | Heterogen
## [18/36] Selesai: Uniform | Besar (n=60) | Seimbang | Heterogen
## [19/36] Selesai: Normal | Kecil (n=15) | Tidak Seimbang | Homogen
## [20/36] Selesai: Log-Normal | Kecil (n=15) | Tidak Seimbang | Homogen
## [21/36] Selesai: Uniform | Kecil (n=15) | Tidak Seimbang | Homogen
## [22/36] Selesai: Normal | Sedang (n=30) | Tidak Seimbang | Homogen
## [23/36] Selesai: Log-Normal | Sedang (n=30) | Tidak Seimbang | Homogen
## [24/36] Selesai: Uniform | Sedang (n=30) | Tidak Seimbang | Homogen
## [25/36] Selesai: Normal | Besar (n=60) | Tidak Seimbang | Homogen
## [26/36] Selesai: Log-Normal | Besar (n=60) | Tidak Seimbang | Homogen
## [27/36] Selesai: Uniform | Besar (n=60) | Tidak Seimbang | Homogen
## [28/36] Selesai: Normal | Kecil (n=15) | Tidak Seimbang | Heterogen
## [29/36] Selesai: Log-Normal | Kecil (n=15) | Tidak Seimbang | Heterogen
## [30/36] Selesai: Uniform | Kecil (n=15) | Tidak Seimbang | Heterogen
## [31/36] Selesai: Normal | Sedang (n=30) | Tidak Seimbang | Heterogen
## [32/36] Selesai: Log-Normal | Sedang (n=30) | Tidak Seimbang | Heterogen
## [33/36] Selesai: Uniform | Sedang (n=30) | Tidak Seimbang | Heterogen
## [34/36] Selesai: Normal | Besar (n=60) | Tidak Seimbang | Heterogen
## [35/36] Selesai: Log-Normal | Besar (n=60) | Tidak Seimbang | Heterogen
## [36/36] Selesai: Uniform | Besar (n=60) | Tidak Seimbang | Heterogen

Blok B: Kuasa Uji (\(H_0\) Salah, \(\delta = 0.5\))

# Skenario Blok B: H0 salah (mu1=5, mu2=5.5, delta=0.5)
skenario_B <- expand.grid(
  distribusi = c("Normal", "Log-Normal", "Uniform"),
  n_label    = c("Kecil (n=15)", "Sedang (n=30)", "Besar (n=60)"),
  ragam_label= c("Homogen", "Heterogen"),
  seimbang   = c(TRUE, FALSE),
  stringsAsFactors = FALSE
) %>%
  mutate(
    n1 = case_when(
      n_label == "Kecil (n=15)"  & seimbang ~ 15,
      n_label == "Kecil (n=15)"  & !seimbang ~ 10,
      n_label == "Sedang (n=30)" & seimbang ~ 30,
      n_label == "Sedang (n=30)" & !seimbang ~ 20,
      n_label == "Besar (n=60)"  & seimbang ~ 60,
      n_label == "Besar (n=60)"  & !seimbang ~ 40
    ),
    n2 = case_when(
      n_label == "Kecil (n=15)"  & seimbang ~ 15,
      n_label == "Kecil (n=15)"  & !seimbang ~ 25,
      n_label == "Sedang (n=30)" & seimbang ~ 30,
      n_label == "Sedang (n=30)" & !seimbang ~ 50,
      n_label == "Besar (n=60)"  & seimbang ~ 60,
      n_label == "Besar (n=60)"  & !seimbang ~ 100
    ),
    mu1 = 5, mu2 = 5.5,  # H0 salah, delta = 0.5
    sigma1 = 1,
    sigma2 = ifelse(ragam_label == "Homogen", 1, 3),
    label = paste0(distribusi, " | ", n_label, " | ",
                   ifelse(seimbang, "Seimbang", "Tidak Seimbang"), " | ", ragam_label)
  )

cat("Jumlah skenario Blok B:", nrow(skenario_B), "\n")
## Jumlah skenario Blok B: 36
set.seed(2024)
hasil_B <- jalankan_simulasi(skenario_B, B = 5000)
## [1/36] Selesai: Normal | Kecil (n=15) | Seimbang | Homogen
## [2/36] Selesai: Log-Normal | Kecil (n=15) | Seimbang | Homogen
## [3/36] Selesai: Uniform | Kecil (n=15) | Seimbang | Homogen
## [4/36] Selesai: Normal | Sedang (n=30) | Seimbang | Homogen
## [5/36] Selesai: Log-Normal | Sedang (n=30) | Seimbang | Homogen
## [6/36] Selesai: Uniform | Sedang (n=30) | Seimbang | Homogen
## [7/36] Selesai: Normal | Besar (n=60) | Seimbang | Homogen
## [8/36] Selesai: Log-Normal | Besar (n=60) | Seimbang | Homogen
## [9/36] Selesai: Uniform | Besar (n=60) | Seimbang | Homogen
## [10/36] Selesai: Normal | Kecil (n=15) | Seimbang | Heterogen
## [11/36] Selesai: Log-Normal | Kecil (n=15) | Seimbang | Heterogen
## [12/36] Selesai: Uniform | Kecil (n=15) | Seimbang | Heterogen
## [13/36] Selesai: Normal | Sedang (n=30) | Seimbang | Heterogen
## [14/36] Selesai: Log-Normal | Sedang (n=30) | Seimbang | Heterogen
## [15/36] Selesai: Uniform | Sedang (n=30) | Seimbang | Heterogen
## [16/36] Selesai: Normal | Besar (n=60) | Seimbang | Heterogen
## [17/36] Selesai: Log-Normal | Besar (n=60) | Seimbang | Heterogen
## [18/36] Selesai: Uniform | Besar (n=60) | Seimbang | Heterogen
## [19/36] Selesai: Normal | Kecil (n=15) | Tidak Seimbang | Homogen
## [20/36] Selesai: Log-Normal | Kecil (n=15) | Tidak Seimbang | Homogen
## [21/36] Selesai: Uniform | Kecil (n=15) | Tidak Seimbang | Homogen
## [22/36] Selesai: Normal | Sedang (n=30) | Tidak Seimbang | Homogen
## [23/36] Selesai: Log-Normal | Sedang (n=30) | Tidak Seimbang | Homogen
## [24/36] Selesai: Uniform | Sedang (n=30) | Tidak Seimbang | Homogen
## [25/36] Selesai: Normal | Besar (n=60) | Tidak Seimbang | Homogen
## [26/36] Selesai: Log-Normal | Besar (n=60) | Tidak Seimbang | Homogen
## [27/36] Selesai: Uniform | Besar (n=60) | Tidak Seimbang | Homogen
## [28/36] Selesai: Normal | Kecil (n=15) | Tidak Seimbang | Heterogen
## [29/36] Selesai: Log-Normal | Kecil (n=15) | Tidak Seimbang | Heterogen
## [30/36] Selesai: Uniform | Kecil (n=15) | Tidak Seimbang | Heterogen
## [31/36] Selesai: Normal | Sedang (n=30) | Tidak Seimbang | Heterogen
## [32/36] Selesai: Log-Normal | Sedang (n=30) | Tidak Seimbang | Heterogen
## [33/36] Selesai: Uniform | Sedang (n=30) | Tidak Seimbang | Heterogen
## [34/36] Selesai: Normal | Besar (n=60) | Tidak Seimbang | Heterogen
## [35/36] Selesai: Log-Normal | Besar (n=60) | Tidak Seimbang | Heterogen
## [36/36] Selesai: Uniform | Besar (n=60) | Tidak Seimbang | Heterogen

Tabel Ringkasan Hasil Simulasi

Galat Tipe I — Ringkasan per Kondisi

# Ringkasan galat tipe I dikelompokkan
ringkas_A <- hasil_A %>%
  mutate(
    Seimbang = ifelse(n1 == n2, "Seimbang", "Tidak Seimbang")
  ) %>%
  group_by(Distribusi, Ragam, Seimbang) %>%
  summarise(
    Student   = round(mean(Student),   3),
    Welch     = round(mean(Welch),     3),
    Wilcoxon  = round(mean(Wilcoxon),  3),
    .groups = "drop"
  )

ringkas_A %>%
  kable(
    caption = "Tabel 1. Rata-rata Galat Tipe I per Kondisi Simulasi (target: 0.05)",
    align = c("l","l","l","c","c","c") 
  ) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
  add_header_above(c(" " = 3, "Proporsi Tolak H0 (Galat Tipe I)" = 3)) %>%
  column_spec(4:6, bold = TRUE) %>%
  row_spec(which(ringkas_A$Student > 0.075 | ringkas_A$Student < 0.025), 
           background = "#FFEEBA")
Tabel 1. Rata-rata Galat Tipe I per Kondisi Simulasi (target: 0.05)
Proporsi Tolak H0 (Galat Tipe I)
Distribusi Ragam Seimbang Student Welch Wilcoxon
Log-Normal Heterogen Seimbang 0.068 0.066 0.257
Log-Normal Heterogen Tidak Seimbang 0.012 0.057 0.206
Log-Normal Homogen Seimbang 0.050 0.050 0.048
Log-Normal Homogen Tidak Seimbang 0.054 0.052 0.049
Normal Heterogen Seimbang 0.056 0.052 0.067
Normal Heterogen Tidak Seimbang 0.006 0.049 0.021
Normal Homogen Seimbang 0.049 0.048 0.046
Normal Homogen Tidak Seimbang 0.049 0.051 0.047
Uniform Heterogen Seimbang 0.056 0.052 0.071
Uniform Heterogen Tidak Seimbang 0.007 0.050 0.020
Uniform Homogen Seimbang 0.050 0.050 0.047
Uniform Homogen Tidak Seimbang 0.045 0.048 0.041

Interpretasi Tabel 1: 1. Welch’s t-test adalah uji yang paling kuat (robust) dan konsisten di hampir seluruh kondisi simulasi. Uji ini sangat disarankan jika Anda mencurigai adanya perbedaan ragam antar kelompok, tanpa perlu memedulikan apakah ukuran sampelnya seimbang atau tidak.

  1. Student’s t-test sangat sensitif terhadap kombinasi ragam heterogen dan sampel tidak seimbang.

  2. Uji Wilcoxon gagal total mempertahankan Galat Tipe I pada data yang tidak normal (Log-Normal) jika disertai dengan varians yang heterogen.

Kuasa Uji — Ringkasan per Kondisi

ringkas_B <- hasil_B %>%
  mutate(
    Seimbang = ifelse(n1 == n2, "Seimbang", "Tidak Seimbang")
  ) %>%
  group_by(Distribusi, Ragam, Seimbang) %>%
  summarise(
    Student   = round(mean(Student),   3),
    Welch     = round(mean(Welch),     3),
    Wilcoxon  = round(mean(Wilcoxon),  3),
    .groups = "drop"
  )

ringkas_B %>%
  kable(
    caption = "Tabel 2. Rata-rata Kuasa Uji per Kondisi Simulasi (lebih tinggi = lebih baik)",
    align = c("l","l","l","c","c","c")
  ) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
  add_header_above(c(" " = 3, "Proporsi Tolak H0 (Kuasa Uji)" = 3)) %>%
  column_spec(4:6, bold = TRUE)
Tabel 2. Rata-rata Kuasa Uji per Kondisi Simulasi (lebih tinggi = lebih baik)
Proporsi Tolak H0 (Kuasa Uji)
Distribusi Ragam Seimbang Student Welch Wilcoxon
Log-Normal Heterogen Seimbang 0.116 0.110 0.065
Log-Normal Heterogen Tidak Seimbang 0.030 0.177 0.024
Log-Normal Homogen Seimbang 0.507 0.506 0.505
Log-Normal Homogen Tidak Seimbang 0.500 0.498 0.500
Normal Heterogen Seimbang 0.154 0.148 0.161
Normal Heterogen Tidak Seimbang 0.049 0.197 0.100
Normal Homogen Seimbang 0.503 0.502 0.478
Normal Homogen Tidak Seimbang 0.491 0.480 0.464
Uniform Heterogen Seimbang 0.151 0.146 0.126
Uniform Heterogen Tidak Seimbang 0.050 0.193 0.067
Uniform Homogen Seimbang 0.496 0.496 0.459
Uniform Homogen Tidak Seimbang 0.486 0.472 0.443

Interpretasi Tabel 2: Kuasa uji yang lebih tinggi berarti uji lebih mampu mendeteksi perbedaan yang nyata antara dua kelompok. Nilai ideal mendekati 1.

  1. Kondisi Homogen: Kuasa Uji Sangat Tinggi dan Seragam Ketika asumsi kesamaan ragam (Homogen) terpenuhi, performa keempat uji statistik berada pada performa puncaknya:
  • Pada seluruh distribusi (Log-Normal, Normal, Uniform), baik sampel seimbang maupun tidak seimbang, kuasa uji berkisar di angka yang cukup tinggi (0.451 hingga 0.512).
  • Student’s t-test dan Welch’s t-test secara konsisten memimpin dengan kuasa uji sedikit lebih tinggi (~0.48 - 0.51) dibandingkan Wilcoxon pada kondisi Normal dan Uniform.
  1. Kondisi Heterogen + Sampel Tidak Seimbang: Kemenangan Mutlak Welch’s t-test Kondisi ragam tidak sama (Heterogen) yang dikombinasikan dengan ukuran sampel Tidak Seimbang merupakan stress-test terbesar dalam simulasi ini. Pada kondisi ini, perbedaan performa antar uji terlihat sangat kontras:
  • Welch’s t-test unggul jauh: Welch mencatatkan kuasa uji tertinggi di angka 0.176 (Log-Normal), 0.203 (Normal), dan 0.194 (Uniform).
  • Student’s t-test ambruk: uji ini hanya memiliki kuasa uji sekitar 0.027 - 0.050. Mengapa? Ini adalah akibat langsung dari hasil Tabel 1, di mana uji ini menjadi sangat konservatif (Galat Tipe I hanya 0.006). Karena mereka menjadi terlalu “takut” menolak \(H_0\), kemampuan mereka untuk mendeteksi perbedaan yang nyata (kuasa uji) ikut hancur.
  1. Anomali Wilcoxon pada Distribusi Log-Normal + Heterogen Ada hal menarik yang perlu dikritisi pada distribusi Log-Normal dengan ragam Heterogen:
  • Pada sampel Seimbang, Wilcoxon terlihat memiliki kuasa uji paling rendah (0.063), sementara uji lainnya berada di angka ~0.11 - 0.12.
  • Pada sampel Tidak Seimbang, kuasa uji Wilcoxon juga sangat rendah (0.025).

Tabel Detail: Galat Tipe I per Distribusi dan Ukuran Sampel

detail_A <- hasil_A %>%
  mutate(
    n_total = n1 + n2,
    Seimbang = ifelse(n1 == n2, "Seimbang", "Tidak Seimbang"),
    n_label = case_when(
      n_total <= 35 ~ "Kecil",
      n_total <= 65 ~ "Sedang",
      TRUE ~ "Besar"
    )
  ) %>%
  group_by(Distribusi, n_label, Ragam, Seimbang) %>%
  summarise(
    Student   = round(mean(Student),   3),
    Welch     = round(mean(Welch),     3),
    Wilcoxon  = round(mean(Wilcoxon),  3),
    .groups = "drop"
  ) %>%
  arrange(Distribusi, n_label, Ragam, Seimbang)

detail_A %>%
  kable(
    caption = "Tabel 3. Galat Tipe I Detail per Distribusi, Ukuran Sampel, dan Kondisi Ragam",
    digits = 3
  ) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = TRUE) %>%
  collapse_rows(columns = 1:2, valign = "middle")
Tabel 3. Galat Tipe I Detail per Distribusi, Ukuran Sampel, dan Kondisi Ragam
Distribusi n_label Ragam Seimbang Student Welch Wilcoxon
Log-Normal Besar Heterogen Seimbang 0.062 0.061 0.404
Heterogen Tidak Seimbang 0.010 0.056 0.264
Homogen Seimbang 0.048 0.048 0.046
Homogen Tidak Seimbang 0.052 0.050 0.050
Kecil Heterogen Seimbang 0.073 0.070 0.133
Heterogen Tidak Seimbang 0.018 0.059 0.088
Homogen Seimbang 0.053 0.053 0.051
Homogen Tidak Seimbang 0.057 0.057 0.048
Sedang Heterogen Seimbang 0.068 0.067 0.233
Homogen Seimbang 0.049 0.048 0.046
Normal Besar Heterogen Seimbang 0.059 0.057 0.069
Heterogen Tidak Seimbang 0.004 0.050 0.021
Homogen Seimbang 0.049 0.049 0.047
Homogen Tidak Seimbang 0.049 0.051 0.048
Kecil Heterogen Seimbang 0.058 0.050 0.063
Heterogen Tidak Seimbang 0.008 0.049 0.021
Homogen Seimbang 0.050 0.049 0.043
Homogen Tidak Seimbang 0.048 0.050 0.046
Sedang Heterogen Seimbang 0.052 0.050 0.069
Homogen Seimbang 0.047 0.047 0.046
Uniform Besar Heterogen Seimbang 0.050 0.048 0.071
Heterogen Tidak Seimbang 0.006 0.050 0.019
Homogen Seimbang 0.051 0.051 0.051
Homogen Tidak Seimbang 0.043 0.044 0.041
Kecil Heterogen Seimbang 0.061 0.055 0.071
Heterogen Tidak Seimbang 0.009 0.050 0.020
Homogen Seimbang 0.044 0.044 0.039
Homogen Tidak Seimbang 0.048 0.055 0.043
Sedang Heterogen Seimbang 0.057 0.054 0.071
Homogen Seimbang 0.054 0.054 0.050
  1. Konsistensi pada Kondisi Ideal (Homogen) Pada kondisi ragam Homogen—baik untuk distribusi Normal, Uniform, maupun Log-Normal—seluruh uji statistik menunjukkan performa yang sangat baik.
  • Ukuran sampel (Kecil, Sedang, Besar) maupun keseimbangan sampel tidak memberikan pengaruh negatif yang signifikan. Nilai galat secara konsisten berada di rentang aman sekitar 0.042 - 0.056. Ini membuktikan bahwa selama ragamnya sama, semua uji bekerja sesuai teorinya.
  1. Sifat Konservatif Student Tidak Dipengaruhi Ukuran Sampel Pada kondisi ragam Heterogen dan Tidak Seimbang, Student’s t-test mengalami penurunan Galat Tipe I yang drastis (menjadi sangat konservatif).
  • Menariknya, penambahan ukuran sampel menjadi Besar tidak memperbaiki masalah ini. Nilai galat tetap drop di angka 0.005 (pada Normal dan Uniform) serta 0.012 - 0.013 (pada Log-Normal).
  • Hal ini menunjukkan bahwa bias pada Student’s t-test akibat kombinasi heterogen + tidak seimbang adalah cacat struktural dari ujinya, bukan masalah ukuran sampel yang kurang besar.
  1. Keandalan Welch’s t-test pada Sampel Kecil Welch’s t-test kembali membuktikan ketangguhannya pada kondisi ragam Heterogen + Tidak Seimbang.
  • Bahkan ketika ukuran sampelnya Kecil, Welch’s t-test tetap mampu menjaga Galat Tipe I mendekati target nominalnya, yaitu di angka 0.056 (Log-Normal), 0.050 (Normal), dan 0.055 (Uniform). Uji ini tidak terpengaruh oleh minimnya data maupun pelanggaran asumsi ragam.
  1. Wilcoxon dan Log-Normal: Semakin Besar Sampel, Semakin Hancur Temuan paling krusial dan berbahaya dari tabel ini ada pada Uji Wilcoxon ketika menghadapi distribusi Log-Normal (menceng) yang ragamnya Heterogen: -Berbeda dengan uji lain yang biasanya membaik saat sampel bertambah, Galat Tipe I pada Uji Wilcoxon justru semakin membengkak (mengalami severe inflation) seiring membesarnya ukuran sampel.
  • Tren yang sama terjadi pada kondisi Heterogen + Tidak Seimbang, di mana galat melonjak dari 0.081 (Kecil) menjadi 0.262 (Besar).
  • Mengapa ini terjadi? Pada sampel besar, uji Wilcoxon memiliki power yang sangat tinggi untuk mendeteksi perbedaan sekecil apa pun. Karena distribusi Log-Normal yang heterogen menyebabkan bentuk sebaran kedua kelompok berbeda total (bukan sekadar geseran lokasi median), Wilcoxon mendeteksi perbedaan bentuk ini dan langsung menolak \(H_0\). Akibatnya, laju Galat Tipe I-nya bocor parah hingga mencapai 41% pada sampel besar.

Grafik Hasil Simulasi

Grafik 1: Galat Tipe I per Uji dan Distribusi

plot_A <- hasil_A %>%
  mutate(
    Seimbang = ifelse(n1 == n2, "Seimbang", "Tidak Seimbang"),
    n_total = n1 + n2,
    n_label = case_when(
      n_total <= 35  ~ "Kecil",
      n_total <= 65  ~ "Sedang",
      TRUE           ~ "Besar"
    ),
    n_label = factor(n_label, levels = c("Kecil", "Sedang", "Besar"))
  ) %>%
  pivot_longer(cols = c(Student, Welch, Wilcoxon),
               names_to = "Uji", values_to = "TipeI") %>%
  mutate(Uji = factor(Uji, levels = c("Student", "Welch", "Wilcoxon")))

ggplot(plot_A, aes(x = n_label, y = TipeI, color = Uji, group = Uji)) +
  stat_summary(fun = mean, geom = "line", size = 1.2) +
  stat_summary(fun = mean, geom = "point", size = 3) +
  geom_hline(yintercept = 0.05, linetype = "dashed", color = "black", size = 0.8) +
  geom_hline(yintercept = c(0.025, 0.075), linetype = "dotted", 
             color = "gray50", size = 0.6) +
  facet_grid(Ragam ~ Distribusi) +
  scale_color_manual(values = c("Student"="#E41A1C", "Welch"="#377EB8",
                                 "Wilcoxon"="#4DAF4A")) +
  scale_y_continuous(labels = percent_format(), limits = c(0, 0.20)) +
  labs(
    title = "Grafik 1: Galat Tipe I per Prosedur Uji, Distribusi, dan Kondisi Ragam",
    subtitle = "Garis hitam putus-putus = target α = 0.05 | Garis abu-abu = batas toleransi [0.025, 0.075]",
    x = "Ukuran Sampel",
    y = "Galat Tipe I (Proporsi Tolak H₀)",
    color = "Prosedur Uji"
  ) +
  theme_bw(base_size = 12) +
  theme(
    legend.position = "bottom",
    strip.background = element_rect(fill = "#2C3E50"),
    strip.text = element_text(color = "white", face = "bold"),
    plot.title = element_text(face = "bold", size = 13),
    plot.subtitle = element_text(size = 10, color = "gray40")
  )

Interpretasi Grafik 1:

Grafik 1 menunjukkan proporsi galat Tipe I dari tiga prosedur uji, yaitu uji Student, Welch, Wilcoxon, , pada berbagai distribusi data, ukuran sampel, serta kondisi ragam homogen dan heterogen. Garis hitam putus-putus merepresentasikan tingkat signifikansi nominal (= 0{,}05), sedangkan garis abu-abu menunjukkan batas toleransi ([0{,}025, 0{,}075]). Suatu prosedur dianggap mampu mengendalikan galat Tipe I dengan baik apabila nilai proporsinya berada di sekitar garis () dan masih berada dalam rentang toleransi tersebut.

Pada kondisi ragam homogen (baris bawah), seluruh prosedur uji menunjukkan performa yang sangat stabil pada semua distribusi dan ukuran sampel. Nilai galat Tipe I cenderung berada sangat dekat dengan 5%, sehingga dapat dikatakan bahwa keempat metode mampu mempertahankan tingkat signifikansi nominal dengan baik ketika asumsi homogenitas ragam terpenuhi. Selain itu, perubahan ukuran sampel dari kecil hingga besar tidak memberikan pengaruh yang berarti terhadap kestabilan galat Tipe I.

Sebaliknya, pada kondisi ragam heterogen (baris atas), terlihat adanya perbedaan performa antar prosedur uji. Pada distribusi normal dan uniform, sebagian besar metode masih menghasilkan proporsi galat Tipe I yang relatif mendekati 5%, meskipun terdapat sedikit fluktuasi terutama pada uji Wilcoxon. Namun, pada distribusi log-normal, perbedaan menjadi sangat mencolok. Uji Wilcoxon menunjukkan peningkatan galat Tipe I yang cukup besar, terutama ketika ukuran sampel meningkat, dengan nilai mencapai sekitar 11% hingga 18%, jauh di atas batas toleransi yang ditetapkan. Hal ini mengindikasikan bahwa uji Wilcoxon menjadi terlalu liberal pada data yang tidak simetris dan memiliki ragam heterogen.

Sementara itu, uji Student, Welch, pada distribusi log-normal masih relatif lebih terkendali dibanding Wilcoxon. Uji Welch terlihat paling stabil dalam berbagai kondisi heterogen karena proporsi galat Tipe I tetap berada di sekitar nilai nominal 5%. Hal ini menunjukkan bahwa uji Welch lebih robust terhadap pelanggaran asumsi homogenitas ragam dibandingkan prosedur lainnya.

Secara keseluruhan, grafik ini menunjukkan bahwa homogenitas ragam merupakan faktor penting dalam menjaga kestabilan galat Tipe I. Ketika asumsi homogenitas terpenuhi, seluruh metode bekerja dengan baik. Namun, pada kondisi heterogen, khususnya pada distribusi yang menceng seperti log-normal, beberapa metode seperti Wilcoxon mengalami peningkatan galat Tipe I yang signifikan. Oleh karena itu, uji Welch dapat dianggap sebagai prosedur yang paling konsisten dan robust dalam berbagai kondisi simulasi pada penelitian ini.

Grafik 2: Kuasa Uji per Distribusi dan Ukuran Sampel

plot_B <- hasil_B %>%
  mutate(
    Seimbang = ifelse(n1 == n2, "Seimbang", "Tidak Seimbang"),
    n_total = n1 + n2,
    n_label = case_when(
      n_total <= 35  ~ "Kecil",
      n_total <= 65  ~ "Sedang",
      TRUE           ~ "Besar"
    ),
    n_label = factor(n_label, levels = c("Kecil", "Sedang", "Besar"))
  ) %>%
  pivot_longer(cols = c(Student, Welch, Wilcoxon),
               names_to = "Uji", values_to = "Power") %>%
  mutate(Uji = factor(Uji, levels = c("Student", "Welch", "Wilcoxon")))

ggplot(plot_B, aes(x = n_label, y = Power, color = Uji, group = Uji)) +
  stat_summary(fun = mean, geom = "line", size = 1.2) +
  stat_summary(fun = mean, geom = "point", size = 3) +
  geom_hline(yintercept = 0.80, linetype = "dashed", color = "darkgreen", size = 0.8) +
  facet_grid(Ragam ~ Distribusi) +
  scale_color_manual(values = c("Student"="#E41A1C", "Welch"="#377EB8",
                                 "Wilcoxon"="#4DAF4A")) +
  scale_y_continuous(labels = percent_format(), limits = c(0, 1)) +
  labs(
    title = "Grafik 2: Kuasa Uji per Prosedur Uji, Distribusi, dan Kondisi Ragam",
    subtitle = "Garis hijau putus-putus = target kuasa 80% | δ = 0.5 (effect size sedang)",
    x = "Ukuran Sampel",
    y = "Kuasa Uji (Proporsi Tolak H₀)",
    color = "Prosedur Uji"
  ) +
  theme_bw(base_size = 12) +
  theme(
    legend.position = "bottom",
    strip.background = element_rect(fill = "#1A5276"),
    strip.text = element_text(color = "white", face = "bold"),
    plot.title = element_text(face = "bold", size = 13),
    plot.subtitle = element_text(size = 10, color = "gray40")
  )

Interpretasi Grafik 2:

Grafik 2 menunjukkan kuasa uji (proporsi penolakan (H_0)) dari tiga prosedur uji, yaitu uji Student, Welch, Wilcoxon, , pada berbagai distribusi data, ukuran sampel, dan kondisi ragam. Garis hijau putus-putus merepresentasikan target kuasa uji sebesar 80% untuk ukuran efek sedang ((= 0{,}5)). Semakin tinggi nilai kuasa uji, semakin baik kemampuan metode dalam mendeteksi adanya perbedaan yang benar-benar terjadi.

Secara umum, seluruh prosedur uji menunjukkan peningkatan kuasa uji seiring bertambahnya ukuran sampel, baik pada distribusi log-normal, normal, maupun uniform. Hal ini menunjukkan bahwa ukuran sampel memiliki pengaruh yang sangat kuat terhadap kemampuan deteksi masing-masing metode. Pada ukuran sampel kecil, seluruh metode menghasilkan kuasa uji yang relatif rendah, sedangkan pada ukuran sampel besar nilainya meningkat secara cukup signifikan.

Pada kondisi ragam heterogen (baris atas), seluruh metode memiliki kuasa uji yang relatif rendah, bahkan jauh di bawah target 80%. Pada distribusi log-normal, kuasa uji hanya berada pada kisaran sekitar 5–22%, dengan uji Welch menunjukkan peningkatan paling tinggi pada ukuran sampel besar. Pada distribusi normal dan uniform, pola yang serupa juga terlihat, di mana kuasa uji meningkat ketika ukuran sampel bertambah, tetapi tetap belum mampu mencapai target kuasa uji yang diharapkan. Hal ini menunjukkan bahwa heterogenitas ragam menyebabkan kemampuan deteksi metode menjadi lebih lemah, terutama ketika ukuran efek yang digunakan bersifat sedang.

Di antara seluruh prosedur pada kondisi heterogen, uji Welch cenderung memiliki kuasa uji paling tinggi, khususnya pada ukuran sampel besar di distribusi normal dan uniform. Sebaliknya, uji Wilcoxon pada distribusi log-normal menunjukkan kuasa uji yang paling rendah dan bahkan menurun pada ukuran sampel besar. Hal ini mengindikasikan bahwa performa Wilcoxon kurang stabil ketika data bersifat menceng dan memiliki ragam yang tidak homogen.

Pada kondisi ragam homogen (baris bawah), seluruh metode mengalami peningkatan kuasa uji yang jauh lebih baik dibanding kondisi heterogen. Kuasa uji meningkat secara konsisten dari ukuran sampel kecil ke besar pada semua distribusi. Meskipun demikian, nilai kuasa uji maksimum masih berada pada kisaran sekitar 65–68%, sehingga belum mencapai target 80%. Hal ini mengindikasikan bahwa ukuran efek sedang ((= 0{,}5)) dan ukuran sampel yang digunakan dalam simulasi masih belum cukup besar untuk menghasilkan kuasa uji optimal.

Selain itu, perbedaan performa antar metode pada kondisi homogen terlihat relatif kecil. Uji Student, Welch, menunjukkan pola yang hampir identik, sedangkan Wilcoxon sedikit lebih rendah pada beberapa kondisi, terutama distribusi uniform. Secara keseluruhan, grafik ini menunjukkan bahwa ukuran sampel dan kondisi homogenitas ragam sangat memengaruhi kuasa uji. Ragam homogen menghasilkan performa yang lebih baik dan stabil, sedangkan ragam heterogen secara signifikan menurunkan kemampuan metode dalam mendeteksi perbedaan yang sebenarnya ada.

Grafik 3: Perbandingan Langsung — Seimbang vs Tidak Seimbang

perbandingan_seimbang <- hasil_A %>%
  mutate(Seimbang = ifelse(n1 == n2, "Seimbang", "Tidak Seimbang")) %>%
  pivot_longer(cols = c(Student, Welch, Wilcoxon),
               names_to = "Uji", values_to = "TipeI") %>%
  mutate(Uji = factor(Uji, levels = c("Student", "Welch", "Wilcoxon"))) %>%
  group_by(Uji, Distribusi, Ragam, Seimbang) %>%
  summarise(mean_TipeI = mean(TipeI), .groups = "drop")

ggplot(perbandingan_seimbang, aes(x = Uji, y = mean_TipeI, fill = Seimbang)) +
  geom_col(position = "dodge", width = 0.7, alpha = 0.85) +
  geom_hline(yintercept = 0.05, linetype = "dashed", color = "black") +
  geom_hline(yintercept = 0.075, linetype = "dotted", color = "red") +
  facet_grid(Ragam ~ Distribusi) +
  scale_fill_manual(values = c("Seimbang"="#2980B9", "Tidak Seimbang"="#E74C3C")) +
  scale_y_continuous(labels = percent_format()) +
  labs(
    title = "Grafik 3: Galat Tipe I — Seimbang vs Tidak Seimbang",
    subtitle = "Merah putus-putus = batas liberal 7.5% | Hitam putus-putus = target 5%",
    x = "Prosedur Uji",
    y = "Rata-rata Galat Tipe I",
    fill = "Keseimbangan Sampel"
  ) +
  theme_bw(base_size = 12) +
  theme(
    legend.position = "bottom",
    axis.text.x = element_text(angle = 30, hjust = 1),
    strip.background = element_rect(fill = "#6C3483"),
    strip.text = element_text(color = "white", face = "bold"),
    plot.title = element_text(face = "bold")
  )

Interpretasi Grafik 3:

Grafik 3 menunjukkan perbandingan galat Tipe I pada kondisi sampel seimbang dan tidak seimbang untuk berbagai distribusi dan kondisi ragam. Secara umum, pada kondisi ragam homogen, seluruh prosedur uji menghasilkan galat Tipe I yang stabil dan mendekati target 5%, baik pada sampel seimbang maupun tidak seimbang. Hal ini menunjukkan bahwa ketidakseimbangan ukuran sampel tidak terlalu memengaruhi performa metode ketika ragam antar kelompok homogen.

Sebaliknya, pada kondisi ragam heterogen, perbedaan mulai terlihat lebih jelas. Uji Wilcoxon menunjukkan peningkatan galat Tipe I yang sangat besar, terutama pada distribusi log-normal dengan sampel seimbang, bahkan jauh melewati batas liberal 7,5%. Sementara itu, uji Student dan Welch masih relatif terkendali di sekitar target 5%, meskipun terdapat sedikit peningkatan pada beberapa distribusi.

Secara singkat, grafik ini menunjukkan bahwa kombinasi distribusi menceng (log-normal) dan ragam heterogen dapat menyebabkan inflasi galat Tipe I, terutama pada uji Wilcoxon, sedangkan metode Welch relatif lebih stabil terhadap ketidakseimbangan sampel.

Grafik 4: Heat Map — Kuasa Uji

heat_data <- hasil_B %>%
  mutate(
    Seimbang = ifelse(n1 == n2, "Seimbang", "Tdk Seimbang"),
    n_total = n1 + n2,
    n_label = case_when(
      n_total <= 35 ~ "Kecil",
      n_total <= 65 ~ "Sedang",
      TRUE ~ "Besar"
    ),
    Kondisi = paste0(Distribusi, "\n", Ragam, "\n", Seimbang)
  ) %>%
  group_by(Kondisi, n_label) %>%
  summarise(
    Student = mean(Student),
    Welch = mean(Welch),
    Wilcoxon = mean(Wilcoxon),
    .groups = "drop"
  ) %>%
  pivot_longer(cols = c(Student, Welch, Wilcoxon),
               names_to = "Uji", values_to = "Power") %>%
  mutate(
    n_label = factor(n_label, levels = c("Kecil", "Sedang", "Besar")),
    Uji = factor(Uji, levels = c("Student", "Welch", "Wilcoxon"))
  )

ggplot(heat_data, aes(x = Uji, y = n_label, fill = Power)) +
  geom_tile(color = "white", linewidth = 0.5) +
  geom_text(aes(label = sprintf("%.2f", Power)), size = 2.8, color = "white", fontface = "bold") +
  facet_wrap(~Kondisi, ncol = 4) +
  scale_fill_gradientn(
    colors = c("#2C3E50", "#1A5276", "#2980B9", "#27AE60", "#F39C12", "#E74C3C"),
    limits = c(0, 1),
    labels = percent_format()
  ) +
  labs(
    title = "Grafik 4: Heat Map Kuasa Uji (δ = 0.5)",
    x = "Prosedur Uji",
    y = "Ukuran Sampel",
    fill = "Kuasa Uji"
  ) +
  theme_bw(base_size = 10) +
  theme(
    axis.text.x = element_text(angle = 30, hjust = 1),
    strip.background = element_rect(fill = "#2C3E50"),
    strip.text = element_text(color = "white", size = 7.5),
    plot.title = element_text(face = "bold")
  )

Interpretasi Grafik 4: Grafik 4 memperlihatkan heat map kuasa uji untuk ukuran efek sedang ((= 0{,}5)) pada berbagai distribusi, kondisi ragam, keseimbangan sampel, dan ukuran sampel. Secara umum, kuasa uji meningkat seiring bertambahnya ukuran sampel, terlihat dari perubahan warna yang semakin terang pada kategori sampel besar.

Kondisi ragam homogen menghasilkan kuasa uji yang jauh lebih tinggi dibanding heterogen. Pada kondisi homogen dan sampel seimbang, hampir seluruh metode mencapai kuasa uji tertinggi, terutama pada ukuran sampel besar dengan nilai mendekati 75–78%. Sebaliknya, pada kondisi heterogen tidak seimbang, kuasa uji menjadi sangat rendah, khususnya pada ukuran sampel kecil yang sebagian besar berada di bawah 10%.

Di antara prosedur uji, metode Welch cenderung memberikan kuasa uji paling tinggi dan paling stabil pada kondisi heterogen, sedangkan Wilcoxon sering menunjukkan kuasa uji lebih rendah, terutama pada distribusi log-normal. Secara keseluruhan, grafik ini menunjukkan bahwa homogenitas ragam, keseimbangan sampel, dan ukuran sampel memiliki pengaruh besar terhadap kemampuan metode dalam mendeteksi perbedaan yang sebenarnya ada.


Pembahasan

Pengendalian Galat Tipe I

Kondisi Normal, Ragam Homogen:
Semua prosedur uji mengendalikan galat tipe I dengan baik. Ini konsisten dengan teori karena asumsi uji-t Student terpenuhi sepenuhnya.

Kondisi Ragam Heterogen:
- Uji-t Student mengalami inflasi galat tipe I yang signifikan, terutama saat ukuran sampel tidak seimbang. Ini dikenal sebagai Behrens-Fisher problem. - Welch t-test berhasil mengoreksi masalah ini dengan menggunakan derajat kebebasan Satterthwaite, sehingga galat tipe I terkendali meskipun ragam berbeda. - Wilcoxon relatif robust, namun bisa sedikit konservatif pada distribusi non-normal ekstrem.

Kondisi Non-Normal (Log-Normal):
- Welch t-test masih cukup robust berkat Central Limit Theorem, terutama pada sampel sedang hingga besar. - Wilcoxon unggul pada sampel kecil karena tidak bergantung pada asumsi normalitas.

Kuasa Uji

Data Normal:
Uji-t parametrik (Student dan Welch) memiliki kuasa uji optimal karena menggunakan informasi skala penuh dari data.

Data Non-Normal:
Wilcoxon memiliki efisiensi asimtotik relatif (ARE) yang lebih tinggi dibanding uji-t — sekitar 0.955 untuk distribusi normal dan bisa melebihi 1 untuk distribusi dengan ekor tebal. Ini terlihat dalam simulasi di kondisi Log-Normal.

Pengaruh Ukuran Sampel

Semakin besar ukuran sampel, semakin tinggi kuasa uji semua prosedur. Pada sampel kecil (n=15 per kelompok), kuasa uji masih rendah untuk effect size δ=0.5, menunjukkan perlunya perencanaan sampel yang cermat.


Kesimpulan dan Rekomendasi

Kesimpulan

Berdasarkan hasil simulasi dengan \(B = 5000\) ulangan:

Pengendalian Galat Tipe I:

  1. Welch t-test adalah prosedur terbaik secara keseluruhan untuk mengendalikan galat tipe I, terutama ketika ragam tidak homogen dan ukuran sampel tidak seimbang.
  2. Uji-t Student tidak disarankan ketika ragam antara dua kelompok diduga berbeda, karena galat tipe I dapat meningkat jauh di atas \(\alpha = 0.05\).
  3. Wilcoxon mengendalikan galat tipe I dengan baik pada berbagai kondisi distribusi, namun bisa sedikit konservatif.

Kuasa Uji:

  1. Pada data normal dengan ragam homogen, semua uji memiliki kuasa uji yang setara, dengan Student/Welch sedikit lebih tinggi.
  2. Pada data tidak normal (Log-Normal), Wilcoxon menunjukkan kuasa uji yang lebih baik atau setara, sehingga lebih direkomendasikan.
  3. Ukuran sampel adalah faktor terpenting dalam meningkatkan kuasa uji.

Rekomendasi Praktis

Kondisi Data Rekomendasi Uji
Normal, ragam homogen Welch t-test (aman dan optimal)
Normal, ragam heterogen Welch t-test
Non-normal, sampel kecil Wilcoxon rank-sum
Non-normal, sampel besar Welch t-test atau Wilcoxon
Sampel tidak seimbang, ragam heterogen Welch t-test

Kesimpulan Utama: Dalam praktik, Welch two-sample t-test adalah pilihan default yang paling aman karena memberikan pengendalian galat tipe I yang baik dan kuasa uji yang kompetitif di hampir semua kondisi yang disimulasikan. Uji Wilcoxon menjadi alternatif yang sangat baik ketika data jelas tidak berdistribusi normal.