Chapter Teorema Bayes memakai rumusnya satu kali: prevalensi 1 persen masuk sebagai prior, satu hasil tes positif sebagai data, posterior 8.76 persen keluar sebagai jawaban. Statistika Bayesian memutar siklus itu menjadi kerangka pendugaan yang utuh — parameter tidak lagi konstanta tetap yang tidak diketahui, melainkan besaran berdistribusi yang diperbarui setiap kali data tiba. Bab ini merakit kerangka itu dari tiga bahan (prior, likelihood, posterior), menghitungnya penuh pada grid empat nilai θ yang bisa dikerjakan dengan tangan, lalu memperluasnya dua langkah: pembaruan berurutan dan pintasan conjugate Beta-Binomial. Bab penutup section ini sekaligus menimbang dua rezim: sampel kecil tempat prior terbaca jelas, dan sampel besar tempat prior nyaris tidak berperan.

Dari Kejadian ke Parameter #

Sejauh ini seluruh course memperlakukan parameter sebagai konstanta. Proporsi p pada chapter Distribusi Binomial dan kemiringan garis pada chapter Simple Linear Regression dibayangkan memiliki satu nilai benar yang tidak kita ketahui; tugas statistik hanya menduganya dari sampel, sehingga ketidakpastian hidup di prosedur pengambilan sampel, bukan pada parameternya. Alat-alat estimasi pada Section Sampling dan Estimasi — point estimation, standard error, confidence interval — berdiri di atas pandangan itu; istilahnya aliran frekuentis, karena peluangnya menempel pada frekuensi jangka panjang prosedur, bukan pada besaran yang diduga.

Statistika Bayesian membalik posisi itu: parameter θ diberi distribusi peluang (prior) yang merangkum keyakinan sebelum data, lalu diperbarui menjadi posterior setelah data terkumpul. Ini pergeseran filosofis yang perlu dinyatakan dengan tenang — kedua pandangan kotak alat yang sah, dan pada data banyak keduanya nyaris tiba pada angka yang sama, kekonvergenan yang akan kita lihat dengan 240/300 di akhir bab. Chapter Teorema Bayes sudah mempraktikkan versi terkecilnya: P(sakit) = 0.01 sebagai prior, hasil tes positif sebagai data, posterior P(sakit | positif) = 19/217 ≈ 0.0876 sebagai jawaban. Yang berubah di bab ini hanyalah objek yang diperbarui: bukan kejadian perorangan (“apakah orang ini sakit”), melainkan parameter proses (“berapa peluang sukses θ”) — mesin yang sama dipasang ulang menjadi mesin estimasi.

Tiga Bahan: Prior, Likelihood, Posterior #

Estimasi Bayesian menyusun jawabannya dari tiga bahan, dan ketiganya telah dikenal dengan nama lain pada chapter-chapter sebelumnya. Rumus intinya satu baris:

text
posterior ∝ likelihood × prior

Dibaca: distribusi θ setelah data (posterior) proporsional terhadap peluang data bila θ bernilai tertentu (likelihood) dikali keyakinan awal pada θ (prior). Bentuk lengkapnya persis teorema Bayes, dengan θ mengambil peran kejadian A dan data mengambil peran bukti B:

text
P(θ | data) = P(data | θ) × P(θ) / P(data)

P(data) = Σi P(data | θi) × P(θi)

Penyebut P(data) adalah aturan peluang total dari contoh tes penyaring — jumlah tertimbang likelihood atas seluruh kandidat θ — dan hanya berperan menormalkan agar posterior berjumlah 1; itulah sebabnya simbol ∝ sah dipakai sepanjang perhitungan. Likelihood juga bukan bahan baru: untuk k sukses dari n percobaan, ia persis PMF binomial chapter Distribusi Binomial, C(n, k) · θ^k · (1-θ)^(n-k), dibaca dengan kacamata terbalik — data tetap, θ yang dijalankan. Prior satu-satunya bahan yang benar-benar baru; pada bab ini ia dihitung dengan tangan agar kontribusinya terlihat di setiap tabel.

Contoh Grid Diskret: Koin Suvenir #

Budi menemukan koin suvenir lama yang bentuknya terlihat tidak rata, sehingga ia menduga peluang sisi angkanya bukan 0.5. Ia menyusun empat kandidat nilai θ (peluang muncul angka): 0.2, 0.4, 0.6, 0.8 — grid diskret yang membuat seluruh perhitungan selesai tanpa kalkulus. Tanpa alasan memihak, ia memakai prior seragam 0.25 untuk tiap kandidat. Percobaan pertama: sepuluh lemparan, muncul tujuh angka.

Likelihood tiap kandidat dihitung dari PMF binomial dengan n = 10 dan k = 7; contoh satu baris untuk θ = 0.6 (nilai penuh dipakai, hasil dibulatkan ke empat desimal):

text
likelihood(0.6) = C(10, 7) × 0.6^7 × 0.4^3
                = 120 × 0.0279936 × 0.064
                ≈ 0.2150

Empat baris dikerjakan dengan pola yang sama, dikali prior 0.25, lalu dinormalkan dengan jumlah kolom hasil kali. Tabel lengkapnya:

text
theta   prior   likelihood   hasil kali   posterior
0.2     0.25    0.0008       0.0002       0.0017
0.4     0.25    0.0425       0.0106       0.0924
0.6     0.25    0.2150       0.0537       0.4678
0.8     0.25    0.2013       0.0503       0.4381
jumlah  1.00    0.4596       0.1149       1.0000

Posterior memusat ke tempat data menunjuk. Proporsi sampel 0.7 tidak berada di grid, sehingga massa terbagi ke dua tetangganya: 0.6 dan 0.8 menguasai 0.9059 peluang gabungan dengan 0.6 sedikit di depan, sedangkan 0.2 nyaris tersingkirkan karena likelihood 0.0008 terlalu kecil. Perhatikan juga dua kolom yang jumlahnya bukan 1: likelihood dan hasil kali hanyalah angka pembobot, bukan distribusi; hanya posterior hasil normalisasi yang diwajibkan berjumlah 1.

Menghitung Grid dengan Python #

Blok berikut menghitung dua babak percobaan koin sekaligus — babak pertama sekarang, babak kedua pada bagian berikutnya. Seluruh angka tabel manual di atas direproduksi, dan satu fungsi dipakai dua kali karena mekanismenya identik: kalikan prior dengan likelihood, jumlahkan, lalu bagi.

python
from math import comb

theta = [0.2, 0.4, 0.6, 0.8]

def perbarui_grid(prior, k, n):
    likelihood = [comb(n, k) * t**k * (1 - t)**(n - k) for t in theta]
    hasil_kali = [p * l for p, l in zip(prior, likelihood)]
    total = sum(hasil_kali)
    posterior = [h / total for h in hasil_kali]
    return likelihood, hasil_kali, total, posterior

print("Babak 1: 7 angka dari 10 lemparan")
print(f"{'theta':>5} {'prior':>6} {'likelihood':>10} {'hasil kali':>10} {'posterior':>9}")
L1, kali1, total1, post1 = perbarui_grid([0.25] * 4, 7, 10)
for t, p, l, h, q in zip(theta, [0.25] * 4, L1, kali1, post1):
    print(f"{t:>5} {p:>6.2f} {l:>10.4f} {h:>10.4f} {q:>9.4f}")
print(f"{'jumlah':>5} {sum([0.25] * 4):>6.2f} {sum(L1):>10.4f} {total1:>10.4f} {sum(post1):>9.4f}")

print("Babak 2: 2 angka dari 3 lemparan, prior = posterior babak 1")
print(f"{'theta':>5} {'prior':>6} {'likelihood':>10} {'hasil kali':>10} {'posterior':>9}")
L2, kali2, total2, post2 = perbarui_grid(post1, 2, 3)
for t, p, l, h, q in zip(theta, post1, L2, kali2, post2):
    print(f"{t:>5} {p:>6.4f} {l:>10.4f} {h:>10.4f} {q:>9.4f}")
print(f"{'jumlah':>5} {sum(post1):>6.4f} {sum(L2):>10.4f} {total2:>10.4f} {sum(post2):>9.4f}")

Output yang Dihasilkan:

text
Babak 1: 7 angka dari 10 lemparan
theta  prior likelihood hasil kali posterior
  0.2   0.25     0.0008     0.0002    0.0017
  0.4   0.25     0.0425     0.0106    0.0924
  0.6   0.25     0.2150     0.0537    0.4678
  0.8   0.25     0.2013     0.0503    0.4381
jumlah   1.00     0.4596     0.1149    1.0000
Babak 2: 2 angka dari 3 lemparan, prior = posterior babak 1
theta  prior likelihood hasil kali posterior
  0.2 0.0017     0.0960     0.0002    0.0004
  0.4 0.0924     0.2880     0.0266    0.0670
  0.6 0.4678     0.4320     0.2021    0.5089
  0.8 0.4381     0.3840     0.1682    0.4236
jumlah 1.0000     1.2000     0.3971    1.0000

Mari kita bedah kode di atas:

  1. Baris 5-10 (mesin grid): fungsi perbarui_grid menerjemahkan resep tiga bahan — likelihood binomial lewat comb(n, k), hasil kali dengan prior, penyebut sebagai penjumlahan, posterior sebagai hasil pembagian.
  2. Baris 12-17 (babak 1): prior seragam [0.25] * 4 dan data 7/10; baris jumlah menegaskan kolom posterior berjumlah 1.0000 karena dihitung dengan nilai penuh, meski baris per baris tercetak setelah dibulatkan.
  3. Baris 19-24 (babak 2): post1 masuk kembali sebagai prior — posterior kemarin menjadi prior hari ini; kolom likelihood babak 2 berjumlah 1.2000, bukti konkret bahwa likelihood bukan distribusi peluang atas θ.

Pembaruan Berurutan: Posterior Menjadi Prior #

Esok harinya Budi melempar koin itu tiga kali lagi: dua angka, satu gambar. Data baru tidak mengulang hitungan dari nol — posterior babak pertama langsung dipakai sebagai prior babak kedua, prinsip yang pada chapter Teorema Bayes disebut siklus yang bisa diputar terus. Likelihood babak kedua memakai PMF binomial n = 3, k = 2, yaitu 3θ^2(1-θ): nilainya 0.0960, 0.2880, 0.4320, dan 0.3840 untuk θ = 0.2, 0.4, 0.6, 0.8. Tabel pembaruannya:

text
theta   prior   likelihood   hasil kali   posterior
0.2     0.0017  0.0960       0.0002       0.0004
0.4     0.0924  0.2880       0.0266       0.0670
0.6     0.4678  0.4320       0.2021       0.5089
0.8     0.4381  0.3840       0.1682       0.4236
jumlah  1.0000  1.2000       0.3971       1.0000

Hasil gabungan 13 lemparan terbaca jelas: selisih 0.6 atas 0.8 melebar dari 0.0297 menjadi 0.0853, dan 0.4 merosot ke 0.0670 — data kedua yang moderat (2 dari 3) justru menguatkan 0.6 karena posterior merespons total bukti, bukan hanya bukti terakhir. Kolom posterior dihitung dengan nilai penuh sehingga jumlahnya tepat 1.0000 meski keempat angka tercetak bila dijumlahkan hanya mencapai 0.9999 — efek pembulatan pada desimal keempat, kebiasaan yang sama dengan chapter Distribusi Binomial. Uji paling meyakinkan: menghitung ulang seluruh 13 lemparan sekaligus (9 angka, prior seragam) menghasilkan posterior 0.0004, 0.0670, 0.5089, 0.4236 — identik baris demi baris, karena urutan kedatangan data tidak masuk hitungan; yang bekerja hanya jumlah total sukses dan percobaan. Sifat inilah yang membuat penyaringan bertahap dan pembaruan model bisa memproses data mengalir sedikit demi sedikit.

Pintasan Conjugate: Beta-Binomial #

Grid empat titik memperjelas mekanisme tetapi kasar: θ yang sesungguhnya bernilai kontinu di antara 0 dan 1, dan memperhalus grid berarti menambah baris tanpa batas. Untuk data binomial tersedia pintasan yang jauh lebih rapi: pasangan conjugate — prior dari keluarga Beta menghasilkan posterior yang tetap berada di keluarga Beta, sehingga pembaruan tidak memerlukan integral, hanya penjumlahan parameter:

text
prior     : θ ~ Beta(a, b)
data      : k sukses dari n percobaan binomial
posterior : θ ~ Beta(a + k, b + n - k)

mean posterior = (a + k) / (a + b + n)

Beta(a, b) adalah distribusi kontinu pada [0, 1] — tempat tinggal yang tepat untuk proporsi — dengan mean a/(a+b). Prior Beta(2, 2) berbentuk lonceng lembut memuncak di 0.5 dan berperilaku seperti 4 observasi bayangan (dua sukses, dua gagal) yang dicampurkan bersama data nyata; a + b adalah bobotnya dalam tarik-menarik dengan data. Koin Budi mengalir mulus lewat pintasan ini: Beta(2, 2) ditambah 7 angka dari 10 lemparan menjadi Beta(9, 5), tiga lemparan tambahan berisi 2 angka menjadi Beta(11, 6) — dan menggabungkan 13 lemparan sekaligus memberi Beta(11, 6) yang persis sama. Mean posterior bergeser dari 9/14 = 0.6429 ke 11/17 = 0.6471, konsisten dengan grid yang menaruh massa terbesar pada 0.6; seluruh ketidakpastian θ kini terkurung dalam dua parameter tanpa satu pun normalisasi manual.

Survei Kepuasan 240 dari 300 dengan Beta(2, 2) #

Kekuatan pintasan ini terlihat penuh pada data besar. Chapter Confidence Interval pada Section Sampling dan Estimasi memakai survei 300 responden dengan 240 menyatakan puas: p̂ = 0.80 dengan interval Wald 95% [0.755, 0.845], dan chapter lanjutan Confidence Interval untuk Proporsi menyempurnakannya dengan Wilson [0.7511, 0.8413]. Data yang sama dibaca Bayesian dengan prior Beta(2, 2): posterior-nya Beta(242, 62) — hanya dua penjumlahan, 2 + 240 dan 2 + 60. Mean posterior 242/304 = 0.7961 sedikit di bawah p̂ karena prior mean 0.5 menariknya ke tengah; tarikan itu lemah, sebab 4 observasi bayangan hanya sekitar 1.3 persen dari 304 total bobot.

Credible interval 95% diambil dengan memotong massa 2.5 persen di tiap ekor posterior — dibatasi kuantil 2.5 dan 97.5 persen, disebut interval ekor sama (equal-tail):

text
P(θ <= 0.7490 | data) = 0.025
P(θ >= 0.8394 | data) = 0.025

P(0.7490 <= θ <= 0.8394 | data) = 0.95

Blok berikut menghitung posterior, mean, dan credible interval tersebut, lengkap dengan pembanding prior seragam Beta(1, 1):

python
from scipy.stats import beta

k, n = 240, 300

a_post, b_post = 2 + k, 2 + n - k
print(f"prior Beta(2, 2) + data {k}/{n} -> posterior Beta({a_post}, {b_post})")
print(f"mean posterior = {a_post}/{a_post + b_post} = {a_post / (a_post + b_post):.4f}")
bawah, atas = beta.ppf([0.025, 0.975], a_post, b_post)
print(f"credible interval 95% = [{bawah:.4f}, {atas:.4f}]")

a_flat, b_flat = 1 + k, 1 + n - k
bawah2, atas2 = beta.ppf([0.025, 0.975], a_flat, b_flat)
print(f"prior seragam Beta(1, 1) -> Beta({a_flat}, {b_flat})")
print(f"mean = {a_flat / (a_flat + b_flat):.4f}, CI 95% = [{bawah2:.4f}, {atas2:.4f}]")

Output yang Dihasilkan:

text
prior Beta(2, 2) + data 240/300 -> posterior Beta(242, 62)
mean posterior = 242/304 = 0.7961
credible interval 95% = [0.7490, 0.8394]
prior seragam Beta(1, 1) -> Beta(241, 61)
mean = 0.7980, CI 95% = [0.7510, 0.8413]

Mari kita bedah kode di atas:

  1. Baris 5 (aturan conjugate): diterjemahkan harfiah — parameter posterior hanya dua penjumlahan, 2 + 240 dan 2 + (300 − 240); tidak ada normalisasi manual karena bentuk Beta menormalkan dirinya sendiri.
  2. Baris 6-7 (mean): pecahan 242/304 dicetak utuh agar asal angka 0.7961 terbaca — sedikit di bawah p̂ = 0.80 karena prior mean 0.5 menarik hasil ke tengah.
  3. Baris 8-9 (credible interval): beta.ppf mengambil kuantil 0.025 dan 0.975 — memotong 2.5 persen massa tiap ekor, definisi equal-tail pada blok rumus di atas.
  4. Baris 11-14 (pembanding prior): prior seragam Beta(1, 1) menghasilkan Beta(241, 61) dengan interval [0.7510, 0.8413] — nyaris tak terbedakan dari Beta(242, 62), persis tema bab ini.

Hasil akhirnya: credible interval [0.7490, 0.8394] berdampingan dengan Wald [0.755, 0.845] dan Wilson [0.7511, 0.8413] — ketiganya berselisih paling banyak 0.006 pada tiap batas. Prior Beta(2, 2) yang memihak tengah tidak menggeser batas secara berarti, dan prior seragam Beta(1, 1) menghasilkan [0.7510, 0.8413], berimpit dengan Wilson hingga tiga desimal. Inilah pesan penting bab ini: pada 300 observasi, data berbicara jauh lebih lantang daripada prior, dan dua aliran yang berbeda filosofi tiba pada angka yang hampir sama.

Credible Interval vs Confidence Interval #

Angka yang berdekatan mudah dibaca sebagai pernyataan yang sama, padahal kalimat di baliknya berbeda jenis. Chapter Confidence Interval menegaskan batas tafsirnya dengan frasa kunci “prosedur, bukan satu interval”: angka 95% melekat pada prosedur yang bila diulang berkali-kali menghasilkan interval memuat θ pada 95% kasus, sedangkan satu interval konkret entah memuat θ atau tidak, dan θ sendiri dianggap konstanta yang tidak berpeluang — harga yang dibayar karena frekuentis tidak memberi θ distribusi. Credible interval mengizinkan kalimat yang bagi frekuentis terlarang: karena θ berdistribusi posterior, pernyataan “peluang 95% θ berada di antara 0.7490 dan 0.8394” sah — kondisional pada data teramati, model binomial, dan prior terpilih. Kedua interval menjawab pertanyaan dengan arah pengondisian berbeda, persis seperti P(positif | sakit) berbeda dari P(sakit | positif) pada chapter Teorema Bayes:

AspekConfidence intervalCredible interval
Yang diberi peluangprosedur pengambilan sampelparameter θ itu sendiri
Kalimat khasnya“95% interval semacam ini memuat θ”“peluang 95% θ ada di dalam interval ini”
Status θkonstanta tetap yang tidak diketahuivariabel acak berdistribusi
Bahan bangunannyasampling distribution dari p̂distribusi posterior
Bergantung pada priortidakya, secara eksplisit

Kapan Prior Menentukan, Kapan Tenggelam #

Kontribusi prior bergantung pada jumlah data yang menghadapinya. Kembali ke sepuluh lemparan koin Budi: Siti, yang menduga koin suvenir kerap sengaja dibuat timpang ke satu sisi, mengusulkan prior condong ke θ tinggi — 0.1, 0.2, 0.3, 0.4 untuk θ = 0.2, 0.4, 0.6, 0.8. Data yang sama, tujuh angka dari sepuluh lemparan, dihitung ulang (nilai penuh dipakai, dibulatkan ke empat desimal):

text
theta   posterior (prior seragam)   posterior (prior 0.1/0.2/0.3/0.4)
0.2     0.0017                      0.0005
0.4     0.0924                      0.0553
0.6     0.4678                      0.4199
0.8     0.4381                      0.5243

Peringkat dua kandidat teratas bertukar: dengan prior seragam 0.6 memimpin atas 0.8 (0.4678 lawan 0.4381), dengan prior Siti 0.8 justru memimpin (0.5243 lawan 0.4199). Sepuluh lemparan belum cukup kuat untuk menenggelamkan keyakinan awal, sehingga pilihan prior terbaca langsung pada hasil akhir — dan pembaca yang kritis berhak menanyakannya sebelum memercayai kesimpulan.

Rezim sebaliknya sudah diperlihatkan survei kepuasan: dua prior yang berbeda — Beta(2, 2) yang memihak tengah dan Beta(1, 1) yang datar — menghasilkan interval berselisih kurang dari 0.002 pada tiap batas, karena 300 observasi menenggelamkan bobot 4 observasi bayangan. Lebar interval pun menyusut seiring data: credible interval koin 13 lemparan Beta(11, 6) terbentang 0.8480 − 0.4134 = 0.4346, sedangkan Beta(242, 62) hanya 0.8394 − 0.7490 = 0.0904. Aturan praktisnya: pada data besar prior lemah nyaris tidak berperan; pada data kecil prior menentukan — karena itu nyatakan ia secara terbuka.

Section Dasar Probabilitas kini lengkap: dari konsep probabilitas dan ruang sampel, dua aturan penggabungan, probabilitas bersyarat, teorema Bayes, hingga kerangka pendugaan Bayesian yang memutar rumus itu menjadi siklus prior-likelihood-posterior. Perjalanan course berlanjut — melewati variabel acak beserta keluarga distribusinya — menuju Section Sampling dan Estimasi, tempat mesin pendugaan sisi frekuentis dibangun bertingkat. Sampai di sana kita membawa kompas dari bab ini: setiap bertemu sebuah interval, pisahkan kalimat mana yang sah untuk prosedur dan mana yang hanya boleh dibacakan pada parameter. Pendalaman pemilihan prior tersedia pada OpenIntro Statistics , dan antarmuka distribusi Beta terdokumentasi dalam dokumentasi scipy.stats .