Bayesçi Düşünmeye Giriş
Bayesçi çerçevede önseli, olabilirliği ve sonsal dağılımı anlayın.
Bayesçi Düşünmeye Giriş, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. 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.
Frequentist ve Bayesçi Yaklaşımlar
Frequentist istatistikte olasılık, bir olayın uzun vadeli sıklığıdır. Bayesçi istatistikte olasılık, bir inanç derecesini temsil eder. Temel fark şudur: frequentist yaklaşımda parametreler sabit (bilinmeyen sabitler) kabul edilir; Bayesçi yaklaşımda ise parametreler, olasılık dağılımlarına sahip rassal değişkenler olarak ele alınır.
# Frequentist: parameter theta is fixed, data is random
# Bayesian: data is fixed (observed), theta has a distribution
# Example: estimating coin bias p
# Frequentist: MLE -> p_hat = heads / total
heads <- 7; total <- 10
p_mle <- heads / total
cat('MLE estimate:', p_mle, '\n')
# Bayesian: update prior belief with observed data
# Prior: Beta(2, 2) -> slightly informative, centered at 0.5
# Posterior: Beta(2 + heads, 2 + (total - heads)) = Beta(9, 5)
alpha_post <- 2 + heads
beta_post <- 2 + (total - heads)
p_bayes <- alpha_post / (alpha_post + beta_post) # posterior mean
cat('Bayesian posterior mean:', round(p_bayes, 3), '\n')Bayes Teoremi
Bayes teoremi, bir parametre hakkındaki önsel inancı, o parametre verildiğinde verinin olabilirliğini ve veri gözlemlendikten sonraki sonsal inancı ilişkilendirir:
P(θ|data) = P(data|θ) × P(θ) / P(data)
Payda olan P(data), normalleştirme sabitidir; sonsal dağılımı geçerli bir olasılık dağılımı hâline getirir.
# Bayes' theorem components
# P(theta | data) = posterior (what we want)
# P(data | theta) = likelihood (how well theta explains data)
# P(theta) = prior (what we believed before data)
# P(data) = evidence (normalising constant)
# Medical test example
P_disease <- 0.01 # prior: 1% prevalence
P_pos_given_disease <- 0.99 # sensitivity
P_pos_given_no_disease <- 0.05 # false positive rate
P_pos <- P_pos_given_disease * P_disease +
P_pos_given_no_disease * (1 - P_disease)
P_disease_given_pos <- (P_pos_given_disease * P_disease) / P_pos
cat('P(positive test):', round(P_pos, 4), '\n')
cat('P(disease | positive test):', round(P_disease_given_pos, 4), '\n')
cat('Only', round(P_disease_given_pos * 100, 1), '% chance despite positive test!\n')Önsel Dağılımlar
Önsel, veriyi görmeden önce bir parametre hakkındaki inancınızı kodlar. Önsel dağılımlar bilgisiz (düz, asgari bilgiyi ifade eden) veya bilgilendirici (belirgin biçimde tepe yapan, alan uzmanlığını ifade eden) olabilir. Yaygın önseller: Beta(1,1) = uniform, Normal(0, 10) = zayıf bilgilendirici.
# Visualise different Beta priors for a probability parameter
theta <- seq(0, 1, length.out = 200)
# Uniform (no prior knowledge)
prior_uniform <- dbeta(theta, 1, 1)
# Informative: believe p ~ 0.3
prior_informative <- dbeta(theta, 3, 7)
# Strong: believe p ~ 0.5
prior_strong <- dbeta(theta, 20, 20)
plot(theta, prior_uniform, type = 'l', col = 'gray',
ylim = c(0, 8), xlab = 'theta', ylab = 'Density',
main = 'Different Prior Beliefs')
lines(theta, prior_informative, col = 'blue')
lines(theta, prior_strong, col = 'red')
legend('topright', c('Uniform Beta(1,1)', 'Informative Beta(3,7)', 'Strong Beta(20,20)'),
col = c('gray', 'blue', 'red'), lty = 1)Olabilirlik İşlevleri
Olabilirlik P(data|θ), belirli bir parametre değeri için gözlemlenen verinin ne kadar olası olduğunu ölçer. Yazı-tura atışlarında olabilirlik Binom dağılımına uyar. Sürekli verilerde ise çoğunlukla Gauss dağılımı kullanılır. Veriyi en iyi hangi θ değerinin açıkladığını bulmak için olabilirliği çok sayıda θ değerinde değerlendiririz.
# Likelihood for a coin flip experiment
# Data: 7 heads in 10 flips
heads <- 7; n <- 10
# Evaluate likelihood at many theta values
theta <- seq(0.01, 0.99, length.out = 200)
likelihood <- dbinom(heads, n, theta)
# Maximum likelihood
mle <- theta[which.max(likelihood)]
cat('MLE (max likelihood theta):', mle, '\n')
# Plot the likelihood function
plot(theta, likelihood, type = 'l', col = 'steelblue',
xlab = 'theta (coin bias)', ylab = 'Likelihood P(7H|theta)',
main = '7 Heads in 10 Flips: Likelihood')
abline(v = mle, lty = 2, col = 'red')
legend('topleft', paste('MLE =', mle), lty = 2, col = 'red')Sonsal = Önsel × Olabilirlik
Sonsal dağılım, önsel ile olabilirliğin çarpımıyla orantılıdır. Beta-Binom modelinde bu hesap analitik olarak yapılabilir: önsel Beta(α, β) ise ve n atışta h kez tura gözlemlerseniz sonsal dağılım Beta(α + h, β + n − h) olur.
# Beta-Binomial conjugate model
heads <- 7; n <- 10
alpha_prior <- 2; beta_prior <- 2 # prior: Beta(2,2)
# Update: posterior = Beta(alpha + heads, beta + tails)
alpha_post <- alpha_prior + heads
beta_post <- beta_prior + (n - heads)
theta <- seq(0.01, 0.99, length.out = 300)
prior <- dbeta(theta, alpha_prior, beta_prior)
likelihood <- dbinom(heads, n, theta)
likelihood <- likelihood / max(likelihood) # normalise for plotting
posterior <- dbeta(theta, alpha_post, beta_post)
plot(theta, posterior, type = 'l', col = 'red', lwd = 2,
xlab = 'theta', ylab = 'Density', main = 'Prior vs Posterior')
lines(theta, prior, col = 'blue', lwd = 2)
lines(theta, likelihood, col = 'gray', lwd = 2, lty = 2)
legend('topleft', c(paste0('Prior Beta(', alpha_prior, ',', beta_prior, ')'),
'Likelihood (scaled)',
paste0('Posterior Beta(', alpha_post, ',', beta_post, ')')),
col = c('blue', 'gray', 'red'), lty = c(1,2,1), lwd = 2)Eşlenik Önsel Dağılımlar
Eşlenik önsel dağılım, sonsal dağılımın önsel dağılımla aynı aileye ait olduğu dağılımdır. Bu, çıkarımı analitik olarak yapılabilir hâle getirir. Yaygın eşlenik çiftler: Beta-Binom (oranlar), Normal-Normal (varyansı bilinen ortalamalar), Gamma-Poisson (hızlar).
# Conjugate prior table (analytical results)
conjugates <- data.frame(
Likelihood = c('Binomial', 'Poisson', 'Normal (known sigma)',
'Exponential', 'Multinomial'),
Prior = c('Beta', 'Gamma', 'Normal',
'Gamma', 'Dirichlet'),
Posterior = c('Beta', 'Gamma', 'Normal',
'Gamma', 'Dirichlet'),
Update_Rule = c('(a+h, b+t)', '(a+x, b+n)', '(mu_n, sigma_n)',
'(a+n, b+sum)', '(a+counts)')
)
print(conjugates, row.names = FALSE)
# Beta-Binomial update
cat('\nBeta(2,3) + 7 heads, 3 tails -> Beta(',
2+7, ',', 3+3, ')\n')İnanılabilir Aralıklar
İnanılabilir aralık (CI), güven aralığının Bayesçi karşılığıdır: %95'lik bir CI, θ'nın aralıkta bulunma sonsal olasılığının %95 olduğu anlamına gelir. Çoğu kişinin frequentist güven aralıklarına yanlış biçimde yüklediği sezgisel yorum budur.
# 95% credible interval for Beta posterior
alpha_post <- 9; beta_post <- 5 # posterior from earlier
# Credible interval via quantile function
ci_lower <- qbeta(0.025, alpha_post, beta_post)
ci_upper <- qbeta(0.975, alpha_post, beta_post)
posterior_mean <- alpha_post / (alpha_post + beta_post)
cat('Posterior mean: ', round(posterior_mean, 3), '\n')
cat('95% Credible Interval: [',
round(ci_lower, 3), ',',
round(ci_upper, 3), ']\n')
cat('Interpretation: 95% probability theta is in this interval\n')
# Visualise
theta <- seq(0, 1, length.out = 300)
plot(theta, dbeta(theta, alpha_post, beta_post), type = 'l', col = 'red', lwd = 2,
main = '95% Credible Interval', xlab = 'theta', ylab = 'Density')
abline(v = c(ci_lower, ci_upper), lty = 2, col = 'blue')Bayesçi Güncelleme: Sıralı Öğrenme
Bayesçi güncelleme sıralıdır: bugünün sonsal dağılımı yarının önsel dağılımı olur. Bu, Bayesçi çıkarımı doğal olarak artımlı hâle getirir; yeni veri geldiğinde modeli baştan uydurmanız gerekmez, yalnızca mevcut sonsal dağılımı güncellersiniz.
# Sequential Bayesian updating for a coin
# Start with uninformative prior Beta(1,1)
flips <- c(1, 0, 1, 1, 0, 1, 1, 1, 0, 1) # 1=H, 0=T
alpha <- 1; beta_p <- 1 # prior
cat('Prior: Beta(', alpha, ',', beta_p, ') mean =', round(alpha/(alpha+beta_p), 3), '\n')
for (i in seq_along(flips)) {
if (flips[i] == 1) alpha <- alpha + 1 else beta_p <- beta_p + 1
mean_post <- alpha / (alpha + beta_p)
cat('After flip', i, '(', flips[i], '): Beta(',
alpha, ',', beta_p, ') mean =', round(mean_post, 3), '\n')
}MAP Tahmini
Maximum A Posteriori (MAP) tahmini, sonsal dağılımın tepe noktasıdır. Beta(α, β) sonsal dağılımı için MAP = (α−1)/(α+β−2). MAP, önselin etkisiyle olabilirliğin etkisini dengeler ve küçük örneklemlerde tahminleri önsele doğru çeker.
# Compare MLE vs MAP for small sample
heads <- 3; n <- 5
alpha_p <- 5; beta_p <- 5 # informative prior: believe p ~ 0.5
# MLE: ignores prior
mle <- heads / n
# MAP: mode of Beta posterior
alpha_post <- alpha_p + heads
beta_post <- beta_p + (n - heads)
map <- (alpha_post - 1) / (alpha_post + beta_post - 2)
# Posterior mean (alternative point estimate)
post_mean <- alpha_post / (alpha_post + beta_post)
cat('Data: 3 heads in 5 flips\n')
cat('MLE: ', round(mle, 3), '(ignores prior)\n')
cat('MAP: ', round(map, 3), '(mode of posterior)\n')
cat('Posterior mean:', round(post_mean, 3), '(mean of posterior)\n')
cat('Note: MAP and mean shrink toward prior (0.5) for small n\n')Bayesçi Yöntemler Ne Zaman Kullanılır?
Bayesçi yöntemler şu durumlarda özellikle etkilidir: (1) bilgilendirici önsel bilginiz varsa, (2) örneklem büyüklükleri küçükse, (3) belirsizliği tam olarak ölçmeniz gerekiyorsa, (4) parametreler hakkında olasılık ifadeleri kurmak istiyorsanız veya (5) önsellerin önceki deneylerden taşındığı sıralı bir analiz yapıyorsanız.
# Comparison: when Bayesian vs frequentist is preferred
comparison <- data.frame(
Scenario = c(
'Small sample (n < 30)',
'Prior domain knowledge',
'Probability about parameter',
'Sequential updating',
'Large sample, no prior',
'Regulatory/simple inference'
),
Preferred = c(
'Bayesian', 'Bayesian', 'Bayesian',
'Bayesian', 'Either', 'Frequentist'
)
)
print(comparison, row.names = FALSE)
# Example: medical device testing with historical data
alpha_historical <- 15 # prior based on 20 historical tests
beta_historical <- 5
cat('\nHistorical prior: Beta(', alpha_historical, ',', beta_historical, ')\n')
cat('Prior mean:', round(alpha_historical/(alpha_historical+beta_historical), 3), '\n')Uygulamada Bayesçi Çıkarım
Basit eşlenik modellerde çıkarım analitiktir (yukarıda gösterildiği gibi). Karmaşık modellerde (hiyerarşik, eşlenik olmayan) sonsal dağılımı sayısal olarak yaklaşık hesaplamak için Stan (RStan), JAGS veya BUGS aracılığıyla Markov Zinciri Monte Carlo (MCMC) örneklemesi kullanırız.
# Analytical vs MCMC approaches
approaches <- data.frame(
Method = c('Conjugate (exact)', 'Grid approximation',
'Laplace approx.', 'MCMC (Stan/JAGS)',
'Variational Bayes'),
When = c('Conjugate prior+likelihood', 'Low-dim, discrete',
'Unimodal posterior', 'General complex models',
'Large scale, approximate'),
Speed = c('Instant', 'Fast', 'Fast', 'Slow', 'Moderate'),
Exactness = c('Exact', 'Exact on grid', 'Approximate',
'Asymptotically exact', 'Approximate')
)
print(approaches, row.names = FALSE)Hızlı Kontrol
10 yazı-tura atışında 7 kez tura gözlemliyorsunuz. Önseliniz Beta(2, 2). Doğru sonsal dağılım nedir?
Özet: Bayesçi Düşünme
Temel çıkarımlar:
- Bayes teoremi: P(θ|data) ∝ P(data|θ) × P(θ)
- Önsel, veriden önceki inancı; olabilirlik, verinin desteğini; sonsal ise ikisinin birleşimini kodlar
- Eşlenik önseller analitik sonsal dağılımlar verir (Beta-Binom, Normal-Normal, Gamma-Poisson)
- Beta-Binom güncellemesi: Beta(α, β) + (h tura, t yazı) → Beta(α+h, β+t)
- İnanılabilir aralıklar, CI'larda bulunmayan doğal bir olasılık yorumuna sahiptir
- Bayesçi güncelleme sıralıdır; bugünün sonsal dağılımı yarının önsel dağılımıdır
- Karmaşık modellerde sonsal dağılımları yaklaşık hesaplamak için MCMC örneklemesi (Stan, JAGS) kullanın
# Full Bayesian inference cycle for a proportion
alpha0 <- 2; beta0 <- 2 # prior
heads <- 12; total <- 20 # observed data
alpha_post <- alpha0 + heads
beta_post <- beta0 + (total - heads)
post_mean <- alpha_post / (alpha_post + beta_post)
ci <- qbeta(c(0.025, 0.975), alpha_post, beta_post)
cat('Prior: Beta(', alpha0, ',', beta0, ') mean =', round(alpha0/(alpha0+beta0), 2), '\n')
cat('Data:', heads, 'heads in', total, 'flips\n')
cat('Posterior: Beta(', alpha_post, ',', beta_post, ')\n')
cat('Posterior mean:', round(post_mean, 3), '\n')
cat('95% CI: [', round(ci[1],3), ',', round(ci[2],3), ']\n')Sıkça Sorulan Sorular
“Bayesçi Düşünmeye Giriş” dersi ücretsiz mi?
Evet — “Bayesçi Düşünmeye Giriş” 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.
“Bayesçi Düşünmeye Giriş” dersinde ne öğreneceğim?
Bayesçi çerçevede önseli, olabilirliği ve sonsal dağılımı anlayı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 1. dersidir.
“Bayesçi Düşünmeye Giriş” 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