Pendahuluan

Dalam ilmu statistika, konsep peluang memegang peranan penting untuk memahami berbagai fenomena yang bersifat acak. Salah satu model peluang diskret yang sering digunakan dalam analisis data adalah sebaran hipergeometrik (hypergeometric distribution). Sebaran ini digunakan untuk menggambarkan peluang terjadinya sejumlah keberhasilan tertentu dalam pengambilan sampel tanpa pengembalian dari suatu populasi yang terdiri atas dua kategori, yaitu elemen yang dikategorikan sebagai “sukses” dan “gagal”.

Berbeda dengan sebaran binomial yang mengasumsikan pengambilan dengan pengembalian, sebaran hipergeometrik memperhitungkan perubahan komposisi populasi setelah setiap pengambilan. Hal ini membuatnya lebih realistis pada situasi di mana jumlah populasi terbatas dan setiap elemen hanya dapat diambil sekali. Contoh penerapan sebaran ini dapat ditemukan dalam bidang kontrol kualitas, penelitian biologi, atau survei sosial, seperti ketika ingin mengetahui peluang memilih sejumlah produk cacat dari sekumpulan produk yang telah diproduksi.

Definisi Distribusi Hipergeometrik

Sebaran hipergeometrik (hypergeometric distribution) merupakan salah satu sebaran peluang diskret yang digunakan untuk menggambarkan peluang terpilihnya sejumlah elemen “sukses” dari suatu populasi terbatas tanpa pengembalian. Artinya, setiap kali sebuah elemen diambil, elemen tersebut tidak dikembalikan ke populasi, sehingga peluang pengambilan pada tahap berikutnya akan berubah. Konsep ini menjadikan sebaran hipergeometrik sangat relevan ketika populasi bersifat kecil atau jumlah total elemen diketahui dengan pasti.

Menurut Walpole, Myers, Myers, dan Ye (2017), sebaran hipergeometrik digunakan untuk memodelkan jumlah keberhasilan dalam pengambilan sampel berukuran tetap dari populasi terbatas yang terdiri atas dua kategori elemen, yaitu sukses dan gagal, tanpa adanya pengembalian elemen ke populasi setelah pengambilan.

Sementara itu, Montgomery dan Runger (2019) menyatakan bahwa sebaran hipergeometrik merupakan bentuk khusus dari sebaran peluang yang digunakan ketika proses sampling mempengaruhi peluang pengambilan berikutnya, karena tidak ada pengembalian. Distribusi ini sering digunakan dalam konteks kontrol kualitas dan eksperimen, di mana pemilihan item cacat atau tidak cacat dilakukan dari populasi yang jumlahnya terbatas.

Selain itu, Hogg, McKean, dan Craig (2019) juga menjelaskan bahwa sebaran hipergeometrik merepresentasikan peluang terambilnya sejumlah elemen sukses \(x\) dari populasi berukuran \(N\), yang di dalamnya terdapat \(K\) elemen sukses dan \(N-K\) elemen gagal, ketika dilakukan pengambilan sebanyak \(n\) elemen tanpa pengembalian.

Secara matematis, variabel acak \(X\) yang menyatakan jumlah elemen sukses yang terambil mengikuti sebaran hipergeometrik dengan notasi:

\[ X \sim H(N, K, n) \]

dengan: - \(N\): jumlah total elemen dalam populasi,
- \(K\): jumlah elemen sukses dalam populasi,
- \(n\): jumlah elemen yang diambil,
- \(x\): jumlah elemen sukses yang terambil dari sampel.


Fungsi Peluang (Probability Density Function / PDF)

Fungsi peluang dari sebaran hipergeometrik dirumuskan sebagai:

\[ P(X = x) = \frac{\binom{K}{x} \binom{N - K}{n - x}}{\binom{N}{n}} \]

Fungsi ini memberikan peluang bahwa dari \(n\) elemen yang diambil, terdapat tepat \(x\) elemen sukses.


# Parameter
N <- 20   # jumlah total populasi
K <- 8    # jumlah elemen sukses
n <- 5    # jumlah pengambilan

# Nilai x (jumlah elemen sukses yang mungkin)
x <- 0:n

# Hitung PDF dengan fungsi dhyper()
pdf_values <- dhyper(x, K, N - K, n)

# Tampilkan hasil PDF
data.frame(x, pdf_values)
##   x  pdf_values
## 1 0 0.051083591
## 2 1 0.255417957
## 3 2 0.397316821
## 4 3 0.238390093
## 5 4 0.054179567
## 6 5 0.003611971
# Plot PDF
plot(x, pdf_values, type = "h", lwd = 3, col = "blue",
     main = "Plot Fungsi Peluang (PDF) Sebaran Hipergeometrik",
     xlab = "x (Jumlah Elemen Sukses yang Terambil)",
     ylab = "P(X = x)")
points(x, pdf_values, pch = 19, col = "darkblue")

Fungsi Distribusi Kumulatif (Cumulative Distribution Function / CDF)

Fungsi distribusi kumulatif (CDF) dari sebaran hipergeometrik digunakan untuk menggambarkan peluang total bahwa jumlah elemen sukses yang terambil kurang dari atau sama dengan suatu nilai tertentu (\(x\)).
CDF sering digunakan untuk mengetahui kemungkinan hasil pengambilan tidak melebihi nilai tertentu.

Secara matematis, fungsi ini dituliskan sebagai:

\[ F(x) = P(X \leq x) = \sum_{i=0}^{x} \frac{\binom{K}{i} \binom{N-K}{n-i}}{\binom{N}{n}} \]

dengan: - \(N\): jumlah total elemen populasi,
- \(K\): jumlah elemen sukses dalam populasi,
- \(n\): jumlah elemen yang diambil tanpa pengembalian,
- \(x\): banyaknya elemen sukses maksimum yang diamati.


Implementasi di R

# Parameter Sebaran Hipergeometrik
N <- 20   # total populasi
K <- 8    # jumlah elemen sukses dalam populasi
n <- 5    # jumlah elemen yang diambil tanpa pengembalian

# Nilai x: jumlah elemen sukses yang mungkin terambil
x <- 0:n

# Hitung Fungsi Distribusi Kumulatif (CDF)
# phyper(q, m, n, k) = P(X ≤ q)
cdf_values <- phyper(x, K, N - K, n)

# Buat tabel hasil
cdf_table <- data.frame(
  x = x,
  `P(X ≤ x)` = round(cdf_values, 4)
)
cdf_table
##   x P.X...x.
## 1 0   0.0511
## 2 1   0.3065
## 3 2   0.7038
## 4 3   0.9422
## 5 4   0.9964
## 6 5   1.0000
# Plot CDF
plot(x, cdf_values, type = "s", lwd = 3, col = "red",
     main = "Plot Fungsi Distribusi Kumulatif (CDF)\nSebaran Hipergeometrik",
     xlab = "x (Jumlah Elemen Sukses yang Terambil)",
     ylab = "F(X ≤ x)",
     ylim = c(0, 1))
points(x, cdf_values, pch = 19, col = "darkred")
grid(col = "gray70", lty = 2)

# Tambahkan label nilai peluang di atas titik
text(x, cdf_values + 0.05, labels = round(cdf_values, 3),
     cex = 0.8, col = "black")

Sifat-sifat Distribusi Hipergeometrik

Sebaran Hipergeometrik merupakan sebaran peluang diskret yang menggambarkan peluang memperoleh sejumlah elemen sukses dalam pengambilan tanpa pengembalian dari suatu populasi terbatas.
Distribusi ini sering digunakan pada pengambilan sampel dari populasi kecil, seperti uji kualitas, pengujian lot, atau pengambilan sampel acak tanpa pengembalian.

Distribusi hipergeometrik memiliki berbagai sifat statistik yang menggambarkan bentuk dan penyebaran datanya, antara lain nilai harapan, varians, simpangan baku, skewness (kemencengan), dan kurtosis (keruncingan).


1. Sifat Dasar

Jika \(X \sim H(N, K, n)\), maka:

\[ P(X = x) = \frac{\binom{K}{x}\binom{N-K}{n-x}}{\binom{N}{n}}, \quad x = 0, 1, 2, \dots, n \]

dengan: - \(N\): jumlah total populasi,
- \(K\): jumlah elemen sukses dalam populasi,
- \(n\): ukuran sampel,
- \(x\): jumlah elemen sukses dalam sampel.


2. Nilai Harapan dan Varians

\[ E(X) = n \cdot \frac{K}{N} \] \[ Var(X) = n \cdot \frac{K}{N} \cdot \left(1 - \frac{K}{N}\right) \cdot \frac{N - n}{N - 1} \]


3. Skewness (Kemencengan)

Skewness mengukur derajat ketidaksimetrian distribusi peluang.
Untuk sebaran hipergeometrik, rumusnya adalah:

\[ \text{Skewness} = \frac{(N - 2K)\sqrt{N - 1}(N - 2n)}{\sqrt{nK(N-K)(N-n)}(N-2)} \]

Interpretasi: - Skewness > 0 → distribusi miring ke kanan.
- Skewness < 0 → distribusi miring ke kiri.
- Skewness = 0 → distribusi simetris.


4. Kurtosis (Keruncingan)

Kurtosis menggambarkan tingkat keruncingan atau ketebalan ekor distribusi dibandingkan distribusi normal.
Rumus kurtosis (excess kurtosis) sebaran hipergeometrik adalah:

\[ \text{Kurtosis} = \frac{(N-1)N^2(N(N+1)-6n(N-n)-6K(N-K)) + 6nK(N-n)(N-K)(5N-6)}{nK(N-K)(N-n)(N-2)(N-3)} - 3 \]

Interpretasi: - Kurtosis > 0 → leptokurtik (runcing, ekor tebal).
- Kurtosis < 0 → platikurtik (datar, ekor tipis).
- Kurtosis = 0 → mesokurtik (mirip normal).


5. Implementasi di R

# Parameter Sebaran Hipergeometrik
N <- 30   # total populasi
K <- 12   # jumlah elemen sukses dalam populasi
n <- 8    # ukuran sampel

# Hitung Sifat-Sifat Distribusi
E_X <- n * (K / N)
Var_X <- n * (K / N) * (1 - K / N) * ((N - n) / (N - 1))
SD_X <- sqrt(Var_X)

# Rumus Skewness
Skew_X <- ((N - 2*K) * sqrt(N - 1) * (N - 2*n)) /
          (sqrt(n * K * (N - K) * (N - n)) * (N - 2))

# Rumus Kurtosis (excess kurtosis)
Kurt_X <- ((N - 1) * N^2 * (N*(N + 1) - 6*n*(N - n) - 6*K*(N - K)) +
            6*n*K*(N - n)*(N - K)*(5*N - 6)) /
          (n*K*(N - K)*(N - n)*(N - 2)*(N - 3)) - 3

# Buat tabel hasil
sifat_tabel <- data.frame(
  Sifat = c("Nilai Harapan (E[X])", "Varians (Var[X])",
            "Simpangan Baku (SD[X])", "Skewness", "Kurtosis"),
  Nilai = round(c(E_X, Var_X, SD_X, Skew_X, Kurt_X), 4)
)
sifat_tabel
##                    Sifat   Nilai
## 1   Nilai Harapan (E[X])  3.2000
## 2       Varians (Var[X])  1.4566
## 3 Simpangan Baku (SD[X])  1.2069
## 4               Skewness  0.0829
## 5               Kurtosis -3.1485

Fungsi Penghasil Bilangan Acak dari Sebaran Hipergeometrik (rhyper)

Fungsi rhyper() digunakan untuk menghasilkan bilangan acak yang mengikuti distribusi Hipergeometrik.
Distribusi ini menggambarkan banyaknya elemen sukses yang terambil dalam pengambilan acak tanpa pengembalian dari suatu populasi dengan jumlah elemen sukses dan gagal tertentu.


Rumus Teoretis

Jika \(X \sim H(N, K, n)\), maka peluangnya diberikan oleh:

\[ P(X = x) = \frac{\binom{K}{x} \binom{N-K}{n-x}}{\binom{N}{n}} \]

Namun, jika kita ingin mensimulasikan nilai acak dari distribusi ini, kita gunakan fungsi:

\[ X_i = rhyper(nn, m, n, k) \]

dengan: - \(nn\): jumlah bilangan acak yang dihasilkan,
- \(m\): jumlah elemen sukses dalam populasi,
- \(n\): jumlah elemen gagal dalam populasi,
- \(k\): jumlah elemen yang diambil tanpa pengembalian.


Implementasi di R

# Parameter Distribusi Hipergeometrik
N <- 20   # total populasi
K <- 8    # jumlah elemen sukses
n <- 5    # jumlah elemen yang diambil
m <- K    # elemen sukses
fail <- N - K  # elemen gagal

# Menghasilkan Bilangan Acak
set.seed(123) # agar hasil bisa direproduksi
data_acak <- rhyper(nn = 1000, m = m, n = fail, k = n)

# Tampilkan beberapa hasil pertama
head(data_acak, 10)
##  [1] 1 3 2 3 3 0 2 3 2 2
# Distribusi frekuensi hasil acak
table_data <- table(data_acak)
freq_tabel <- data.frame(
  x = as.numeric(names(table_data)),
  Frekuensi = as.vector(table_data)
)
freq_tabel
##   x Frekuensi
## 1 0        52
## 2 1       251
## 3 2       405
## 4 3       232
## 5 4        58
## 6 5         2
# Statistik dasar
mean_val <- mean(data_acak)
var_val <- var(data_acak)
sd_val <- sd(data_acak)

cat("Rata-rata:", round(mean_val, 4), "\n")
## Rata-rata: 1.999
cat("Varians:", round(var_val, 4), "\n")
## Varians: 0.9419
cat("Simpangan Baku:", round(sd_val, 4), "\n")
## Simpangan Baku: 0.9705
# Plot Histogram Hasil Simulasi
hist(data_acak, 
     main = "Histogram Sampel Acak Distribusi Hipergeometrik",
     xlab = "Jumlah Elemen Sukses Terambil",
     ylab = "Frekuensi",
     col = "skyblue", border = "white")
grid(col = "gray70", lty = 2)

# Bandingkan hasil simulasi dengan PDF teoritis
x <- 0:n
pdf_teoritis <- dhyper(x, m, fail, n)

hist(data_acak, freq = FALSE, col = "lightblue",
     main = "Perbandingan Simulasi dan Distribusi Teoretis",
     xlab = "Jumlah Elemen Sukses Terambil", 
     ylab = "Probabilitas")

points(x, pdf_teoritis, type = "b", pch = 19, col = "red", lwd = 2)
legend("topright", legend = c("Simulasi", "Teori (PDF)"),
       col = c("lightblue", "red"), pch = c(15, 19))
grid(col = "gray70", lty = 2)

Rumus Kejadian Khusus (Benar)

Untuk \(X \sim H(N,K,n)\) dengan \(x=0,1,\dots,n\) dan kombinasi dinyatakan \(\binom{a}{b}\):


Contoh Soal Distribusi Hipergeometrik

# Kejadian Khusus - Implementasi
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)

# Parameter contoh
N <- 50    # total populasi
K <- 10    # jumlah elemen sukses
n <- 8     # ukuran sampel (tanpa pengembalian)

# Domain x (0..n), catatan: beberapa x mungkin tidak valid jika >K atau < n-(N-K)
x <- 0:n

# Hitung PDF secara lengkap
pdf_values <- dhyper(x, m = K, n = N - K, k = n)  # dhyper(x, m, n, k) di R

# Hitung kejadian khusus sesuai rumus (dengan cek kondisi)
p_x_eq_0 <- if (n <= (N - K)) choose(N - K, n) / choose(N, n) else 0
p_x_eq_n <- if (n <= K) choose(K, n) / choose(N, n) else 0
p_x_eq_K <- if (K <= n) choose(N - K, n - K) / choose(N, n) else 0
p_x_ge_1 <- 1 - p_x_eq_0

# Tabel ringkasan
special_df <- data.frame(
  Kejadian = c("P(X = 0)", "P(X = n)", "P(X = K)", "P(X ≥ 1)"),
  Rumus = c(
    "C(N-K, n) / C(N, n)",
    "C(K, n) / C(N, n) if n ≤ K else 0",
    "C(N-K, n-K) / C(N, n) if K ≤ n else 0",
    "1 - P(X = 0)"
  ),
  Nilai = round(c(p_x_eq_0, p_x_eq_n, p_x_eq_K, p_x_ge_1), 6)
)
special_df
##   Kejadian                                 Rumus    Nilai
## 1 P(X = 0)                   C(N-K, n) / C(N, n) 0.143244
## 2 P(X = n)     C(K, n) / C(N, n) if n ≤ K else 0 0.000000
## 3 P(X = K) C(N-K, n-K) / C(N, n) if K ≤ n else 0 0.000000
## 4 P(X ≥ 1)                          1 - P(X = 0) 0.856756
# Tabel PDF lengkap
pdf_table <- data.frame(x = x, `P(X = x)` = round(pdf_values, 6))
pdf_table
##   x P.X...x.
## 1 0 0.143244
## 2 1 0.347258
## 3 2 0.321725
## 4 3 0.147074
## 5 4 0.035747
## 6 5 0.004637
## 7 6 0.000305
## 8 7 0.000009
## 9 8 0.000000
# Plot PDF dan sorot kejadian khusus
# Warn: R indexing starts di 1 sehingga saat mengakses pdf_values untuk x, gunakan pdf_values[x + 1]
barcols <- rep("steelblue", length(x))
# Sorot x=0, x=n, x=K (jika valid)
if (0 %in% x) barcols[which(x == 0)] <- "tomato"
if (n %in% x && n <= K) barcols[which(x == n)] <- "darkgreen" # x=n valid only if n<=K (all successes)
if (K %in% x && K <= n) barcols[which(x == K)] <- "purple"    # x=K valid only if K<=n

barplot(height = pdf_values,
        names.arg = x,
        col = barcols,
        border = "white",
        main = "PDF Sebaran Hipergeometrik dengan Kejadian Khusus",
        xlab = "x (Jumlah sukses terambil)",
        ylab = "P(X = x)")
grid(nx = NA, ny = NULL, col = "gray80", lty = 2)

# Tambah legenda untuk warna sorot
legend("topright",
       legend = c("Umum", "x = 0", "x = n (semua sukses, jika n ≤ K)", "x = K (semua sukses di populasi, jika K ≤ n)"),
       fill = c("steelblue", "tomato", "darkgreen", "purple"),
       border = NA, cex = 0.85)

# Tampilkan nilai spesifik di plot 
labels_idx <- which(x %in% c(0, n, K))
text(x = labels_idx, 
     y = pdf_values[labels_idx] + max(pdf_values)*0.02,
     labels = round(pdf_values[labels_idx], 4), 
     cex = 0.85)

## Contoh Soal
# Dalam sebuah kotak terdapat 20 bola, terdiri atas 8 bola merah dan 12 bola biru.
# Jika diambil 5 bola secara acak tanpa pengembalian, tentukan peluang:
# a) tepat 2 bola merah
# b) paling banyak 2 bola merah
# c) sedikitnya 3 bola merah
# serta buatkan tabel distribusi, plot PDF dan CDF-nya.

# Parameter
N <- 20   # total bola
K <- 8    # bola merah (sukses)
n <- 5    # bola diambil
x <- 0:n  # jumlah bola merah yang mungkin terambil

# a) Peluang tepat 2 bola merah
p_tepat_2 <- dhyper(2, K, N - K, n)

# b) Peluang paling banyak 2 bola merah (P(X ≤ 2))
p_paling_banyak_2 <- phyper(2, K, N - K, n)

# c) Peluang sedikitnya 3 bola merah (P(X ≥ 3))
p_sedikitnya_3 <- 1 - phyper(2, K, N - K, n)

# Cetak hasil peluang
cat("a) P(X = 2) =", round(p_tepat_2, 4), "\n")
## a) P(X = 2) = 0.3973
cat("b) P(X ≤ 2) =", round(p_paling_banyak_2, 4), "\n")
## b) P(X ≤ 2) = 0.7038
cat("c) P(X ≥ 3) =", round(p_sedikitnya_3, 4), "\n\n")
## c) P(X ≥ 3) = 0.2962
# Distribusi peluang (PDF)
pdf_vals <- dhyper(x, K, N - K, n)
pdf_table <- data.frame(
  "x (Jumlah Bola Merah)" = x,
  "P(X = x)" = round(pdf_vals, 4)
)
print(pdf_table)
##   x..Jumlah.Bola.Merah. P.X...x.
## 1                     0   0.0511
## 2                     1   0.2554
## 3                     2   0.3973
## 4                     3   0.2384
## 5                     4   0.0542
## 6                     5   0.0036
# Plot PDF
plot(x, pdf_vals, type = "h", lwd = 3, col = "darkblue",
     main = "Plot Fungsi Peluang (PDF) - Distribusi Hipergeometrik",
     xlab = "Jumlah Bola Merah (x)", ylab = "Probabilitas P(X = x)")
points(x, pdf_vals, pch = 19, col = "red")

# Distribusi kumulatif (CDF)
cdf_vals <- phyper(x, K, N - K, n)
cdf_table <- data.frame(
  "x (Jumlah Bola Merah)" = x,
  "P(X ≤ x)" = round(cdf_vals, 4)
)
cat("\n\nTabel CDF:\n")
## 
## 
## Tabel CDF:
print(cdf_table)
##   x..Jumlah.Bola.Merah. P.X...x.
## 1                     0   0.0511
## 2                     1   0.3065
## 3                     2   0.7038
## 4                     3   0.9422
## 5                     4   0.9964
## 6                     5   1.0000
# Plot CDF
plot(x, cdf_vals, type = "s", lwd = 2, col = "purple",
     main = "Plot Fungsi Distribusi Kumulatif (CDF)",
     xlab = "Jumlah Bola Merah (x)", ylab = "P(X ≤ x)")
points(x, cdf_vals, pch = 19, col = "orange")

# Interpretasi
cat("\nInterpretasi:\n")
## 
## Interpretasi:
cat("P(X=2) menunjukkan peluang tepat 2 bola merah.\n")
## P(X=2) menunjukkan peluang tepat 2 bola merah.
cat("P(X≤2) berarti peluang paling banyak 2 bola merah.\n")
## P(X≤2) berarti peluang paling banyak 2 bola merah.
cat("P(X≥3) berarti peluang sedikitnya 3 bola merah.\n")
## P(X≥3) berarti peluang sedikitnya 3 bola merah.
cat("Plot pertama menampilkan fungsi peluang (PDF), sedangkan plot kedua adalah fungsi kumulatif (CDF).\n")
## Plot pertama menampilkan fungsi peluang (PDF), sedangkan plot kedua adalah fungsi kumulatif (CDF).

Kesimpulan

Distribusi Hipergeometrik merupakan salah satu distribusi peluang diskret yang penting dalam statistika, khususnya untuk menggambarkan peluang terjadinya sejumlah keberhasilan tertentu dalam proses pengambilan sampel tanpa pengembalian dari suatu populasi yang memiliki dua kategori (sukses dan gagal). Distribusi ini berbeda dengan distribusi binomial karena setiap elemen yang diambil memengaruhi peluang pengambilan berikutnya. Ciri khas inilah yang membuat sebaran hipergeometrik relevan pada situasi dengan populasi terbatas, seperti pengujian kualitas produk, survei populasi, atau penelitian biologi.

Melalui fungsi peluang (PDF) dan fungsi distribusi kumulatif (CDF), kita dapat menghitung peluang untuk berbagai kejadian, baik yang bersifat khusus (misalnya tepat \(x\) keberhasilan), maupun yang bersifat kumulatif (misalnya paling banyak atau sedikitnya sejumlah tertentu keberhasilan). Visualisasi PDF dan CDF juga membantu dalam memahami bentuk serta penyebaran probabilitas dari distribusi ini. Secara keseluruhan, pemahaman terhadap distribusi hipergeometrik sangat penting dalam analisis data yang melibatkan pengambilan sampel tanpa pengembalian. Dengan menerapkannya secara tepat, peneliti dapat mengestimasi peluang kejadian secara lebih akurat dan relevan dengan kondisi nyata di lapangan.


Daftar Pustaka

Montgomery, D. C., & Runger, G. C. (2019). Applied Statistics and Probability for Engineers (7th ed.). Wiley.
Ross, S. M. (2020). Introduction to Probability and Statistics for Engineers and Scientists (6th ed.). Academic Press.
Walpole, R. E., Myers, R. H., Myers, S. L., & Ye, K. (2017). Probability and Statistics for Engineers and Scientists (9th ed.). Pearson Education. Hogg, R. V., McKean, J. W., & Craig, A. T. (2019). Introduction to mathematical statistics (8th ed.). Pearson Education.