1 Latar Belakang & Tujuan

Rumusan Masalah: Apakah statistik dari sampel kecil bisa menduga parameter populasi dengan akurat?

Dalam percobaan ini, akan dibuktikan dua hal:

  1. Rata-rata sampel \(\bar{x}\) adalah penduga tak bias bagi \(\mu\)
  2. Ragam dengan pembagi \((n-1)\) adalah penduga tak bias bagi \(\sigma^2\), sedangkan pembagi \(n\) menghasilkan penduga yang bias (selalu terlalu kecil)

Konteks kasus: nilai ujian mahasiswa yang menyebar Normal dengan rata-rata 75 dan standar deviasi 10.


2 Memuat Paket

library(ggplot2)

3 Parameter & Populasi

set.seed(2024)

mu_pop    <- 75
sigma_pop <- 10
ragam_pop <- sigma_pop^2

n <- 30
k <- 1000

populasi <- rnorm(10000, mean = mu_pop, sd = sigma_pop)

cat("Rata-rata populasi :", round(mean(populasi), 2), "\n")
## Rata-rata populasi : 74.94
cat("Ragam populasi     :", round(var(populasi), 2), "\n")
## Ragam populasi     : 100.05

4 Simulasi Pengambilan Sampel

Di sini kita ambil sampel 30 mahasiswa sebanyak 1000 kali, lalu hitung 3 statistik dari tiap sampel.

hasil_xbar      <- numeric(k)
hasil_s2_bias   <- numeric(k)
hasil_s2_unbias <- numeric(k)

for (i in 1:k) {
  sampel <- sample(populasi, size = n, replace = TRUE)  
  
  xbar <- mean(sampel)
  s2_bias <- sum((sampel - xbar)^2) / n
  
  s2_unbias <- var(sampel)
  
  hasil_xbar[i]      <- xbar
  hasil_s2_bias[i]   <- s2_bias
  hasil_s2_unbias[i] <- s2_unbias
}

cat("E(x̄)           =", round(mean(hasil_xbar), 4),
    " --> μ populasi  =", mu_pop, "\n")
## E(x̄)           = 74.9275  --> μ populasi  = 75
cat("E(S² bias)     =", round(mean(hasil_s2_bias), 4),
    " --> σ² populasi =", ragam_pop, "\n")
## E(S² bias)     = 96.5223  --> σ² populasi = 100
cat("E(S² tak bias) =", round(mean(hasil_s2_unbias), 4),
    " --> σ² populasi =", ragam_pop, "\n")
## E(S² tak bias) = 99.8507  --> σ² populasi = 100

5 Tabel Ringkasan

cat("============= Perbandingan Penduga vs Nilai Populasi =============\n")
## ============= Perbandingan Penduga vs Nilai Populasi =============
cat("Penduga              | Nilai Populasi | Hasil Simulasi | Status\n")
## Penduga              | Nilai Populasi | Hasil Simulasi | Status
cat("---------------------|----------------|----------------|----------\n")
## ---------------------|----------------|----------------|----------
cat("Rata-rata (x̄)        |", mu_pop, "            |", round(mean(hasil_xbar), 4), "       | Tak Bias\n")
## Rata-rata (x̄)        | 75             | 74.9275        | Tak Bias
cat("Ragam pembagi n      |", ragam_pop, "           |", round(mean(hasil_s2_bias), 4), "       | BIAS\n")
## Ragam pembagi n      | 100            | 96.5223        | BIAS
cat("Ragam pembagi n-1    |", ragam_pop, "           |", round(mean(hasil_s2_unbias), 4), "       | Tak Bias\n")
## Ragam pembagi n-1    | 100            | 99.8507        | Tak Bias

6 Plot 1 — Sebaran x̄

Histogram ini menunjukkan sebaran 1000 nilai rata-rata sampel. Kalau berpusat di μ = 75, berarti x̄ adalah penduga tak bias.

hist(hasil_xbar, breaks = 40, col = "lightblue",
     main = "Sebaran 1000 Rata-rata Sampel (x̄)",
     xlab = "Nilai x̄", ylab = "Frekuensi")
abline(v = mu_pop, col = "red", lwd = 2, lty = 2)
abline(v = mean(hasil_xbar), col = "blue", lwd = 2)
legend("topright",
       legend = c("μ populasi (75)", "Rata-rata simulasi"),
       col = c("red", "blue"), lwd = 2, lty = c(2, 1))


7 Plot 2 — Bias vs Tak Bias

Plot ini membandingkan dua penduga ragam. Yang bias akan berpusat di bawah garis σ² = 100.

par(mfrow = c(1, 2))

hist(hasil_s2_bias, breaks = 40, col = "salmon",
     main = "Ragam Pembagi n (Bias)",
     xlab = "Nilai Ragam", ylab = "Frekuensi")
abline(v = ragam_pop, col = "black", lwd = 2, lty = 2)

hist(hasil_s2_unbias, breaks = 40, col = "lightblue",
     main = "Ragam Pembagi n-1 (Tak Bias)",
     xlab = "Nilai Ragam", ylab = "Frekuensi")
abline(v = ragam_pop, col = "black", lwd = 2, lty = 2)

par(mfrow = c(1, 1))

8 Kesimpulan

Rata-rata sampel (x̄):* Dari 1000 pengambilan sampel, rata-rata x̄ sangat mendekati μ = 75. Ini membuktikan bahwa x̄ adalah penduga tak bias bagi μ.

Ragam pembagi n: Hasilnya selalu sedikit lebih kecil dari σ² = 100 karena pembagi n menyebabkan underestimasi. Penduga ini bias.

Ragam pembagi n-1: Hasilnya sangat mendekati σ² = 100. Koreksi pembagi (n-1) berhasil menghilangkan bias. Itulah kenapa fungsi var() di R menggunakan (n-1) secara default.

Dari 1000 ulangan simulasi dengan ukuran sampel n=30, dapat diraih kesimpulan:

  • E(x̄) = 74.9275 ≈ μ = 75 → selisih hanya 0.0725, membuktikan rata-rata sampel adalah penduga tak bias bagi μ.
  • E(S² pembagi n) = 96.5223 < σ² = 100 → underestimasi sebesar 3.4777 (sekitar 3.5%), terbukti bias.
  • E(S² pembagi n-1) = 99.8507 ≈ σ² = 100 → selisih hanya 0.1493, membuktikan ragam dengan koreksi Bessel adalah penduga tak bias bagi σ².

Kesimpulan: penggunaan pembagi n-1 pada perhitungan ragam sampel bukan sekadar konvensi, melainkan koreksi matematis yang terbukti secara empiris menghasilkan estimasi yang jauh lebih akurat terhadap ragam populasi sesungguhnya.