Sonsal Tahmin Denetimleri
Benzetimli ve gözlemlenen veri dağılımlarını karşılaştırarak model uyumunu doğrulayın.
Sonsal Tahmin Denetimleri, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
Artçıl Öngörü Kontrolleri Nedir?
Bir Bayesçi modeli uydurduktan sonra şu soruyu sormanız gerekir: Bu model, gözlemlediğiniz verilere benzeyen veriler üretiyor mu? Artçıl Öngörü Kontrolleri (PPC'ler), artçıl dağılımdan yrep ile yinelenmiş veri kümeleri benzetip bunları gözlemlenen y ile grafiksel olarak karşılaştırarak bu soruyu yanıtlar.
Artçıl Örnekleri Çıkarma
extract(fit, pars='mu'), adlandırılmış bir liste döndürür; $mu, ilgili parametre için ısınma sonrasındaki tüm örneklerin sayısal bir vektörüdür. 4 zincir ve zincir başına 1000 ısınma sonrası yineleme ile 4000 örnek elde edersiniz.
# library(rstan)
# mu_samples <- extract(fit, pars = 'mu')$mu
# sigma_samples <- extract(fit, pars = 'sigma')$sigma
#
# cat('Samples drawn:', length(mu_samples), '
')
# cat('Posterior mean of mu:', mean(mu_samples), '
')
# cat('90% CI:', quantile(mu_samples, c(0.05, 0.95)), '
')Artçıl Örneklerden yrep Üretme
Her artçıl çekiliş (mu_s, sigma_s) için özgün veriyle aynı büyüklükte yinelenmiş bir veri kümesi benzetin. Bunları, her satırı bir benzetilmiş veri kümesi olan yrep matrisinde saklayın.
# y <- c(2.1, 1.8, 2.4, 1.9, 2.3, 2.0, 1.7, 2.2)
# n_obs <- length(y)
# S <- length(mu_samples) # 4000 posterior draws
#
# yrep <- matrix(NA, nrow = S, ncol = n_obs)
# for (s in seq_len(S)) {
# yrep[s, ] <- rnorm(n_obs, mean = mu_samples[s], sd = sigma_samples[s])
# }
# dim(yrep) # [4000, 8]ppc_dens_overlay() — Yoğunluk Karşılaştırması
bayesplot::ppc_dens_overlay(y, yrep[1:50,]), gözlemlenen verilerin çekirdek yoğunluğunu (koyu çizgi), rastgele seçilmiş 50 benzetilmiş veri kümesinin yoğunluklarıyla (açık çizgiler) üst üste gösterir. İyi bir model uyumunda koyu çizgi, açık çizgiler bulutunun içinde yer alır.
# library(bayesplot)
#
# ppc_dens_overlay(y, yrep[1:50, ])
#
# Interpretation:
# - Dark line (y_obs) surrounded by light lines (yrep): good fit
# - Dark line systematically outside the cloud: model misfit
# - Light lines much wider than dark: overdispersed model
# - Light lines much narrower than dark: underdispersed modelppc_stat() — Test İstatistiği Kontrolü
ppc_stat(y, yrep, stat = 'mean'), her benzetilmiş veri kümesi üzerinde hesaplanan test istatistiğinin (ör. ortalama) histogramını ve gözlemlenen istatistikteki dikey bir çizgiyi gösterir. Gözlemlenen değer histogramın yoğun bölümüne düşüyorsa model, verilerin bu yönünü yakalıyor demektir.
# library(bayesplot)
#
# ppc_stat(y, yrep, stat = 'mean') # does model capture the mean?
# ppc_stat(y, yrep, stat = 'sd') # does model capture spread?
# ppc_stat(y, yrep, stat = 'max') # does model capture extremes?
#
# If observed stat is in the tail of the histogram,
# the model fails to reproduce that statistic.Bayesçi p-değeri
Bayesçi p-değeri (artçıl öngörü p-değeri), test istatistiği gözlemlenen değerden daha uç olan benzetilmiş veri kümelerinin oranıdır. 0,5'e yakın değerler iyi kalibrasyona; 0'a veya 1'e yakın değerler, ilgili istatistik açısından model uyumsuzluğuna işaret eder.
# Bayesian p-value for the mean:
# obs_mean <- mean(y)
# rep_means <- apply(yrep, 1, mean)
# pval <- mean(rep_means >= obs_mean)
# cat('Bayesian p-value (mean):', round(pval, 3), '
')
# # 0.5 is perfect; < 0.05 or > 0.95 suggests misfitDiğer bayesplot PPC İşlevleri
bayesplot, yoğunlukların üst üste gösterilmesinin yanı sıra çok sayıda PPC görselleştirmesi sunar:
ppc_hist(y, yrep[1:8,])— histogram ızgarasıppc_scatter_avg(y, yrep)— gözlemlenen değer ile yrep ortalamasının saçılım grafiğippc_intervals(y, yrep)— her gözlem çevresindeki belirsizlik aralıklarıppc_rootogram(y, yrep)— sayım verileri için
# library(bayesplot)
#
# # Grid of 8 simulated histograms vs the observed
# ppc_hist(y, yrep[1:8, ])
#
# # Scatter: y_obs (x) vs mean of yrep (y) — should hug diagonal
# ppc_scatter_avg(y, yrep)
#
# # 50% and 90% posterior predictive intervals around each y_i
# ppc_intervals(y, yrep)PPC Grafiklerini Yorumlama — Model Uyumsuzluğu
Yaygın uyumsuzluk örüntüleri ve nedenleri:
- yrep çok geniş — önsel dağılım çok yaygın veya model aşırı saçılımlı
- yrep kaymış — yanlış olabilirlik ailesi (ör. çarpık veriler için normal dağılım)
- yrep çok modluluğu yakalayamıyor — karışım modeli gerekli
- yrep uç değerlerde başarısız — ağır kuyruklu dağılım gerekli
# Example: if data has a long right tail but yrep does not,
# consider switching:
# y ~ normal(mu, sigma) => y ~ student_t(nu, mu, sigma)
#
# Or for count data:
# y ~ poisson(lambda) => y ~ neg_binomial_2(mu, phi) (overdispersion)
cat('PPCs guide model improvement by revealing specific failure modes
')Stan Model Bloğunda PPC'ler
generated quantities bloğunu kullanarak yrep'i doğrudan Stan'de üretebilirsiniz. Bu yöntem, parametreleri R'de yeniden çıkarmayı önler ve hesaplama açısından eşdeğerdir.
# Stan model with generated quantities:
# '
# generated quantities {
# array[N] real y_rep;
# for (n in 1:N) {
# y_rep[n] = normal_rng(mu, sigma);
# }
# }
# '
# Then extract in R:
# yrep <- extract(fit, pars = 'y_rep')$y_rep # [S, N] matrixBirini Dışarıda Bırakarak Çapraz Doğrulama
PPC'lerin ötesinde, loo::loo(fit) rakip modelleri karşılaştırmak için birini dışarıda bırakarak çapraz doğrulama hesaplar. ELPD (beklenen log öngörü yoğunluğu) değeri daha yüksek olan model tercih edilir. Modelleri sıralamak için loo::loo_compare(loo1, loo2) kullanın.
# library(loo)
# loo1 <- loo(fit1) # normal model
# loo2 <- loo(fit2) # student-t model
#
# comparison <- loo_compare(loo1, loo2)
# print(comparison)
#
# Model with elpd_diff > 0 is preferred
# se_diff > |elpd_diff| means difference is not reliablePPC için En İyi Uygulamalar
Titiz artçıl öngörü kontrolleri için şu uygulamaları izleyin:
- Genel bir makullük kontrolü olarak her zaman
ppc_dens_overlay()ile başlayın - Analiz hedeflerinizle ilgili alana özgü istatistiklerle (
ppc_stat()) devam edin - Görsel kontroller için en az 50 yrep çekilişi, Bayesçi p-değerleri için 4000 çekilişin tamamını kullanın
- Başarısız PPC'ler modelin geliştirilmesine yol gösterir — başarısızlık değil, tanı aracıdır
# Workflow:
# 1. Fit model -> extract() -> generate yrep matrix
# 2. ppc_dens_overlay(y, yrep[1:50,]) -- visual global check
# 3. ppc_stat(y, yrep, stat='mean') -- check mean
# 4. ppc_stat(y, yrep, stat='sd') -- check spread
# 5. ppc_stat(y, yrep, stat='max') -- check tails
# 6. If misfit found -> revise model -> refit -> re-checkHızlı Kontrol: Bayesçi p-değerini Yorumlama
Maksimum istatistik için Bayesçi p-değerinin 0,03 olması model hakkında ne anlama gelir?
Artçıl Öngörü Kontrolleri Özeti
RStan ve bayesplot'ta PPC iş akışı:
- Örnekleri çıkarın:
extract(fit, pars='mu')$mu - yrep üretin: artçıl çekilişler üzerinde dolaşıp
rnorm(n, mu_s, sigma_s)çağırın - Genel kontrol:
ppc_dens_overlay(y, yrep[1:50,]) - İstatistik kontrolleri:
ppc_stat(y, yrep, stat='mean') - Bayesçi p-değeri:
mean(apply(yrep,1,stat) >= stat(y))— 0,5'e yakın olması iyidir - Model karşılaştırması için
loo::loo_compare()kullanın
Yapay zeka eğitmeniyle R öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 43
- Dersler
- 159
Sıkça Sorulan Sorular
“Sonsal Tahmin Denetimleri” dersi ücretsiz mi?
Evet — “Sonsal Tahmin Denetimleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“Sonsal Tahmin Denetimleri” dersinde ne öğreneceğim?
Benzetimli ve gözlemlenen veri dağılımlarını karşılaştırarak model uyumunu doğrulayın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Sonsal Tahmin Denetimleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bayesçi Düşünmeye Giriş
- R'de Stan Modelleri Yazma
- MCMC Örneklemesi ve Tanılamalar
- Sonsal Tahmin Denetimleri