Topik ini membahas variabel acak sebagai jembatan antara percobaan acak dan analisis angka. Pembahasan mencakup dua jenis variabel acak, yaitu diskret dan kontinu, tiga fungsi yang mendeskripsikan sebaran peluangnya, serta verifikasi ketiganya melalui simulasi NumPy. Setelah topik ini dibaca, peluang dapat dibaca dari model distribusi secara langsung alih-alih dihitung dari daftar kejadian satu per satu.
Variabel acak diskret dan kontinu#
Variabel acak (random variable) adalah variabel yang bernilai angka hasil dari sebuah percobaan acak. Pada lemparan dua dadu, yang dicatat adalah jumlah kedua mata, yaitu salah satu angka dari 2 sampai 12. Angka itu disebut acak karena belum dapat dipastikan sebelum dadu dilempar, tetapi peluang setiap nilainya sudah terdefinisi rapi. Konvensi penulisannya menggunakan huruf kapital seperti untuk variabel acak dan huruf kecil seperti untuk nilai konkret yang diambilnya.
Variabel acak terbagi menjadi dua jenis menurut nilai yang mungkin diambilnya. Variabel acak diskret (discrete) mengambil nilai yang dapat didaftar satu per satu, seperti jumlah mata dadu, jumlah cacat pada satu batch komponen, atau jumlah pelanggan per jam. Variabel acak kontinu (continuous) mengambil nilai pada selang bilangan yang tidak dapat didaftar, seperti waktu tunggu, suhu sensor, atau tinggi badan. Perbedaan jenis ini menentukan fungsi yang tepat untuk membaca peluangnya, sebagaimana dirangkum pada diagram berikut.
Fungsi massa peluang untuk variabel diskret#
Fungsi massa peluang (probability mass function, PMF) memetakan setiap nilai mungkin variabel acak diskret ke peluang kemunculannya. Fungsi ini menjawab pertanyaan seberapa besar untuk setiap nilai yang mungkin. Ide dasarnya dapat dilihat dari simulasi berikut, yang melempar dadu secara virtual sebanyak seratus ribu kali lalu mencatat frekuensi relatif setiap mata.
"""Frekuensi relatif lemparan dadu dibandingkan dengan PMF teoretis."""
import numpy as np
rng = np.random.default_rng(42)
lemparan = rng.integers(1, 7, size=100_000)
print(f"{'Mata':>4} {'Frekuensi relatif':>18} {'PMF teoretis':>13}")
for mata in range(1, 7):
frek = np.mean(lemparan == mata)
print(f"{mata:>4} {frek:>18.4f} {1 / 6:>13.4f}")Mata Frekuensi relatif PMF teoretis
1 0.1670 0.1667
2 0.1669 0.1667
3 0.1652 0.1667
4 0.1669 0.1667
5 0.1681 0.1667
6 0.1659 0.1667Frekuensi relatif setiap mata berkumpul di sekitar 0.1667, yaitu nilai yang menjadi model teoretisnya. Selisih antar frekuensi relatif hanya beberapa seperseribu, konsisten dengan jumlah percobaan yang besar. Model inilah PMF dadu jujur, yang dituliskan dengan rumus
Dua sifat wajib PMF terlihat pada rumus di atas. Pertama, setiap nilai peluang berada antara 0 dan 1. Kedua, jumlah seluruh peluang tepat 1, karena enam kali habis di angka tersebut. Sifat penjumlahan sekaligus memberi cara menghitung peluang gabungan, misalnya peluang muncul mata ganjil .
Fungsi kepadatan peluang untuk variabel kontinu#
Fungsi kepadatan peluang (probability density function, PDF) adalah padanan PMF untuk variabel acak kontinu. Karena nilai kontinu tidak dapat didaftar satu per satu, PDF tidak memberikan peluang pada satu titik, melainkan kepadatan peluang per satuan pengukuran. Peluang sebuah interval dihitung sebagai luas di bawah kurva PDF pada interval itu, dan total luas di bawah kurva selalu tepat 1. Konsekuensinya, untuk setiap titik pada variabel kontinu, karena lebar sebuah titik bernilai nol sehingga luasnya juga nol.
Contoh berikut memodelkan waktu tunggu penumpang di halte bus sebagai variabel acak kontinu yang tersebar merata pada 0 sampai 10 menit. Skrip menghasilkan waktu tunggu seratus ribu penumpang fiktif, lalu menggambar histogram kepadatannya berdampingan dengan kurva teoretisnya. Opsi density=True membuat luas total histogram bernilai 1 sehingga dapat dibandingkan langsung dengan PDF.
"""Histogram kepadatan waktu tunggu bus dibandingkan dengan PDF uniform."""
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(42)
waktu = rng.uniform(0.0, 10.0, size=100_000)
fig, ax = plt.subplots(figsize=(7, 4), constrained_layout=True)
ax.hist(waktu, bins=40, density=True, alpha=0.6, label="Histogram simulasi")
ax.plot([0.0, 10.0], [0.1, 0.1], "r-", linewidth=2, label="PDF teoretis")
ax.set_xlabel("Waktu tunggu (menit)")
ax.set_ylabel("Kepadatan")
ax.set_title("Waktu tunggu bus seragam pada 0-10 menit")
ax.legend()
fig.savefig("histogram-pdf-uniform.png", dpi=110)
Histogram menempel pada garis datar setinggi 0.1, dan itulah PDF waktu tunggu tersebut. Karena total luas di bawah kurva harus 1 pada selang sepanjang 10 menit, tinggi konstantanya adalah . Bentuk PDF-nya dituliskan dengan rumus
Nilai 0.1 pada kurva bukan peluang, melainkan kepadatan per menit. Peluang menunggu antara 2 dan 4 menit dihitung sebagai luas persegi panjang selebar 2 dan setinggi 0.1, yaitu 0.2. Perhitungan luas inilah cara baku membaca PDF, sementara CDF pada bagian berikutnya menyediakan jalur pintasnya.
CDF sebagai jembatan#
Fungsi distribusi kumulatif (cumulative distribution function, CDF) menyatakan peluang variabel acak mengambil nilai yang tidak melebihi , ditulis . Fungsi ini berlaku untuk variabel diskret maupun kontinu, sehingga menjadi jembatan yang menyeragamkan cara membaca keduanya. Pada variabel diskret, CDF berbentuk tangga naik, sedangkan pada variabel kontinu berbentuk kurva naik mulus. Arahnya selalu naik dari 0 menuju 1 dan tidak pernah turun.
Skrip berikut menghitung CDF waktu tunggu bus dari data simulasi. Nilai CDF pada titik dihitung sebagai proporsi penumpang yang waktu tunggunya tidak melebihi . Hasilnya dibandingkan dengan nilai teoretis dari PDF uniform pada bagian sebelumnya.
"""CDF waktu tunggu dari simulasi dibandingkan dengan CDF teoretis."""
import numpy as np
rng = np.random.default_rng(42)
waktu = rng.uniform(0.0, 10.0, size=100_000)
print(f"{'t (menit)':>10} {'CDF simulasi':>13} {'CDF teoretis':>13}")
for t in (2.5, 5.0, 7.5):
cdf_sim = np.mean(waktu <= t)
cdf_teori = t / 10.0
print(f"{t:>10.1f} {cdf_sim:>13.4f} {cdf_teori:>13.4f}") t (menit) CDF simulasi CDF teoretis
2.5 0.2495 0.2500
5.0 0.4974 0.5000
7.5 0.7503 0.7500Pada ketiga titik, CDF hasil simulasi berhimpitan dengan nilai teoretis, dengan selisih tidak lebih dari 0.003. CDF juga menyediakan rumus praktis untuk peluang interval, yaitu . Dengan rumus itu, peluang menunggu lebih dari 7.5 menit dihitung sebagai , sesuai proporsi penumpang pada keluaran sebelumnya. Pada variabel diskret, lompatan tangga CDF di suatu titik justru sama dengan PMF di titik tersebut, sehingga ketiga fungsi saling terhubung.
Kesalahan umum#
- Membaca tinggi PDF sebagai peluang. Tinggi 0.1 pada kurva waktu tunggu adalah kepadatan per menit, bukan peluang. Perbaikannya, hitung luas pada interval yang ditanyakan atau gunakan CDF.
- Mengira berarti kejadian yang mustahil. Pada variabel kontinu, setiap titik memiliki peluang nol, tetapi waktu tunggu tetap jatuh pada salah satu nilai. Pertanyaan praktis selalu dinyatakan dalam bentuk interval, misalnya peluang menunggu lebih dari 7.5 menit.
- Mengharapkan hasil simulasi persis sama dengan nilai teoretis. Frekuensi relatif hanya mendekati PMF karena jumlah percobaannya terbatas. Selisihnya menyempit ketika jumlah percobaan diperbesar, sehingga perbandingan yang adil menggunakan jumlah percobaan yang sama besar.
Ringkasan#
- Variabel acak menerjemahkan hasil acak menjadi angka, dengan jenis diskret yang nilainya dapat didaftar dan jenis kontinu yang nilainya pada sebuah selang.
- PMF memberikan peluang pada setiap nilai variabel diskret, sedangkan PDF memberikan kepadatan sehingga peluang dibaca sebagai luas dengan total luas 1.
- CDF berlaku untuk kedua jenis dan menghitung peluang interval melalui .
- Frekuensi relatif dan histogram kepadatan dari simulasi mendekati PMF dan PDF teoretis ketika jumlah percobaan diperbesar.
Referensi#
- NumPy Generator — NumPy — Referensi resmi generator acak NumPy yang dipakai seluruh simulasi pada topik ini.
- Pyplot tutorial — matplotlib — Panduan resmi pembuatan histogram dan kurva dengan matplotlib.
- OpenIntro Statistics — OpenIntro — Buku pengantar statistika gratis yang membahas variabel acak beserta PMF, PDF, dan CDF.