Untitled
unknown
plain_text
9 months ago
2.6 kB
3
Indexable
# Cheatsheet UAS Bayesian Data Analysis
# Impor Library yang Diperlukan
import pandas as pd
import pymc3 as pm
import arviz as az
import numpy as np
# Memuat Dataset
data = pd.read_csv('data_ujian.csv') # Ganti 'data_ujian.csv' dengan nama file dataset yang diberikan saat ujian
# Model 1: Pemodelan Data Asli
with pm.Model() as model_1:
# Prior
beta = pm.Normal('beta', mu=0, sigma=10) # Ubah nilai mu dan sigma jika diperlukan berdasarkan soal ujian
sigma = pm.HalfNormal('sigma', sigma=10) # Sesuaikan prior untuk sigma jika diperlukan
# Likelihood
y_obs = pm.Normal('y_obs', mu=beta, sigma=sigma, observed=data['nilai']) # Pastikan 'nilai' sesuai dengan nama kolom target dalam dataset
# Sampling
trace_1 = pm.sample(1000, return_inferencedata=True) # Ubah jumlah sampel jika diminta dalam soal
# Visualisasi Trace Plot dan Diagnostik Model 1
az.plot_trace(trace_1)
print(az.geweke(trace_1)) # Periksa konvergensi menggunakan Geweke
print(az.rhat(trace_1)) # Periksa nilai R-hat
# Ukuran Sampel Efektif (ESS)
print(az.ess(trace_1))
# DIC dan WAIC untuk Model 1
print(az.dic(trace_1))
print(az.waic(trace_1))
# Model 2: Pemodelan Data dengan Y yang Dibinerisasi
# Membuat Kolom Biner
threshold = 50 # Ganti nilai ambang ini jika diperlukan, misalnya menggunakan mean data['nilai']
data['label_biner'] = (data['nilai'] > threshold).astype(int) # Binerisasi dengan ambang tertentu
with pm.Model() as model_2:
# Prior
beta = pm.Normal('beta', mu=0, sigma=10) # Ubah nilai mu dan sigma jika diperlukan
# Likelihood
y_obs = pm.Bernoulli('y_obs', p=pm.math.sigmoid(beta), observed=data['label_biner']) # Pastikan 'label_biner' sesuai dengan kolom biner
# Sampling
trace_2 = pm.sample(1000, return_inferencedata=True) # Ubah jumlah sampel jika diperlukan
# Visualisasi Trace Plot dan Diagnostik Model 2
az.plot_trace(trace_2)
print(az.geweke(trace_2)) # Periksa konvergensi menggunakan Geweke
print(az.rhat(trace_2)) # Periksa nilai R-hat
# Ukuran Sampel Efektif (ESS)
print(az.ess(trace_2))
# DIC dan WAIC untuk Model 2
print(az.dic(trace_2))
print(az.waic(trace_2))
# Interpretasi dan Pemeriksaan Prediktif Posterior (PPC)
# Memilih Model Terbaik Berdasarkan WAIC atau DIC
best_model = trace_1 if az.waic(trace_1).waic < az.waic(trace_2).waic else trace_2 # Pilih model dengan WAIC terendah
# Interpretasi Model Terbaik
print(az.summary(best_model)) # Tampilkan ringkasan parameter model
# Posterior Predictive Check (PPC)
with best_model:
ppc = pm.sample_posterior_predictive(best_model, random_seed=42) # Sampling PPC
# Visualisasi PPC
az.plot_ppc(ppc)
Editor is loading...
Leave a Comment