Untitled
# 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)
Leave a Comment