Özet
Bu çalışma, evrenin ince ayar parametrelerinin (Ω_m, Ω_Λ, H₀) gözlemsel verileri ışığında üç temel felsefi-kozmolojik hipotezi — teizm, çoklu evren (multiverse) ve kaba gerçek (brute fact) — istatistiksel yöntemlerle karşılaştırmaktadır. Bayesçi Model Karşılaştırması (Bayesian Model Comparison), Bayesçi Model Ortalaması (Bayesian Model Averaging, BMA) ve Minimum Tanımlama Uzunluğu (Minimum Description Length, MDL) çerçevelerini kullanan bu analiz, simüle edilmiş Planck uyumlu kozmolojik gözlemler üzerinde uygulanmıştır. Bulgular, ince ayar argümanının istatistiksel formülasyonunun hangi hipotezi desteklediğini ve Ockham usturası ilkesinin model seçiminde nasıl rol oynadığını göstermektedir.
- Giriş
Evrenin temel fiziksel sabitleri ve kozmolojik parametreleri, yaşama elverişli bir evrenin var olabilmesi için son derece dar bir aralıkta bulunmaktadır. Madde yoğunluk parametresi Ω_m ≈ 0.315, kozmolojik sabit Ω_Λ ≈ 0.685 ve Hubble sabiti H₀ ≈ 67.4 km/s/Mpc değerleri, Planck uydu gözlemleriyle yüksek hassasiyetle ölçülmüştür. Bu parametrelerin neden tam olarak bu değerleri aldığı sorusu, felsefe ve fiziğin kesişim noktasında derin tartışmalara yol açmaktadır.
Bu tartışmada üç ana pozisyon öne çıkmaktadır. Teizm, bu parametrelerin bilinçli bir yaratıcı tarafından belirlendiğini savunur; çoklu evren hipotezi, farklı parametrelere sahip sonsuz sayıda evrenin varlığını ve parametrelerimizin gözlemci seçim etkisiyle (antropik ilke) açıklanabileceğini öne sürer; kaba gerçek pozisyonu ise herhangi bir açıklama aramaktan vazgeçerek parametreleri açıklamasız bir başlangıç koşulu olarak kabul eder.
Bu çalışmanın özgün katkısı, söz konusu felsefi pozisyonları istatistiksel modeller olarak formüle etmek ve marjinal olabilirlik (model kanıtı), Bayesçi model ağırlıklandırması ve MDL çerçeveleri aracılığıyla karşılaştırmaktır. - Teorik Çerçeve
2.1 Bayesçi Model Karşılaştırması
Bayesçi çıkarımda, bir M modeli için model kanıtı şu şekilde tanımlanır:
P(D | M) = ∫ P(D | θ, M) · P(θ | M) dθ
Burada D veriyi, θ model parametrelerini ve P(θ | M) model priorini temsil eder. İki model arasındaki Bayes faktörü K = P(D | M₁) / P(D | M₂) olarak hesaplanır; Jeffreys ölçeğine göre log K > 5 güçlü, log K > 10 çok güçlü kanıt olarak değerlendirilir.
Bu çerçevenin kilit özelliği şudur: daha dar priorlar, parametreler veriyle uyumlu olduğunda daha yüksek kanıt değeri üretir. Bu, ince ayar argümanının istatistiksel özüdür — teizm modeli, gözlemlenen değerlerin yakınında yoğunlaşmış dar bir prior öngörmekte ve bu tahmin gerçekleştiğinde yüksek ödül almaktadır.
2.2 Normal-Normal Konjugasyonu
Likelihood'un N(θ, σ²) ve priorun N(μ₀, σ₀²) olduğu durumda, marjinal likelihood analitik olarak hesaplanabilir. Posterior varyans ve ortalama sırasıyla şöyledir:
σ²_post = 1 / (1/σ₀² + n/σ²)
μ_post = σ²_post · (μ₀/σ₀² + n·x̄/σ²)
Bu konjugat yapı, her üç modelin log-kanıtını kapalı formda hesaplamamızı sağlamaktadır.
2.3 Minimum Tanımlama Uzunluğu ve Ockham Usturası
MDL çerçevesi, Kolmogorov karmaşıklığı kavramından türeyen bir model seçim kriteri sunar. MDL skoru şu şekilde tanımlanır:
MDL(M) = −log P(D | M) + K(M)
Burada K(M) modelin açıklama uzunluğunu (karmaşıklığını) temsil eder. Bu formülasyon, Ockham'ın usturasını doğrudan istatistiğe tercüme eder: iyi bir model hem veriyi iyi açıklamalı hem de basit olmalıdır. - Model Tanımları ve Prior Seçimi
3.1 Teizm Modeli
Teizm modeli, kozmolojik parametrelerin belirli hedef değerlere sahip olduğu beklentisiyle karakterize edilir. Her parametre için dar Gauss priorları kullanılmıştır:
- Ω_m ~ N(0.315, 0.01²)
- Ω_Λ ~ N(0.685, 0.01²)
- H₀ ~ N(67.4, 0.5²)
Bu prior seçiminin felsefi gerekçesi şudur: eğer evren yaşama elverişli olacak şekilde tasarlandıysa, teizm modelinin parametrelerin gözlemlenen değerlerin yakınında olacağını öngörmesi beklenir. Priorun darlığı, modelin güçlü tahmin gücünü yansıtır. Gözlemler bu tahminle örtüştüğünde, model yüksek kanıt değeri alır.
Kolmogorov karmaşıklığı açısından teizm, tek bir nedensel varlığa (Tanrı) atıfla açıklama yaptığından orta düzeyde karmaşık kabul edilir: K(teizm) ≈ 0.5.
3.2 Çoklu Evren Modeli
Çoklu evren modeli, parametrelerin geniş ama fiziksel olarak makul aralıklarda düzgün dağıldığını varsayar:
- Ω_m ~ U(0.1, 0.5)
- Ω_Λ ~ U(0.5, 0.9)
- H₀ ~ U(60, 75)
Bu prior, geniş bir evren uzayında parametrelerin rastgele dağıldığı ve bizim gözlemci seçim etkisi nedeniyle yaşama elverişli bir evrende bulunduğumuz fikrini yansıtır. Modelin marjinal olabilirliliği, prior genişliği arttıkça azalır; bu da prior genişliğiyle cezalandırılma etkisini gösterir.
Çoklu evren, sonsuz evren varsayımı nedeniyle en yüksek karmaşıklığa sahiptir: K(multiverse) ≈ 2.0.
3.3 Kaba Gerçek Modeli
Kaba gerçek modeli, parametreler hakkında en az bilgiyi varsayarak çok geniş düz priorlar kullanır:
- Ω_m ~ U(0.0, 1.0)
- Ω_Λ ~ U(0.0, 1.0)
- H₀ ~ U(0, 200)
Bu model, parametrelerin neden bu değerleri aldığına dair hiçbir açıklama sunmaz. Prior'un aşırı genişliği nedeniyle marjinal olabilirlik en düşük bu modelde olur. Ancak açıklama yapmadığı için karmaşıklığı en düşüktür: K(brute_fact) ≈ 0.2. - Sayısal Uygulama
4.1 Simüle Edilmiş Gözlemler
Analiz, Planck uyumlu "gerçek" parametreler etrafında simüle edilmiş n = 50 gözlem üzerinde uygulanmıştır. Her gözlem, ölçüm hataları σ(Ω_m) = 0.01, σ(Ω_Λ) = 0.01, σ(H₀) = 0.5 km/s/Mpc ile üretilmiştir. Bu değerler gerçek Planck deneme hatalarına yakındır.
Simülasyonun amortisör etkisi şuradadır: n = 50 gözlemle, posterior çok dar hale gelir (σ_post = σ/√n ≈ 0.0014 for Ω_m). Bu, her üç modelin olabilirliğini veri örnekleminin ortalama değeri etrafında keskinleştirmektedir.
4.2 Log-Kanıt Hesaplamaları
Normal-normal konjugasyonu kullanılarak her parametre için log marjinal olabilirlik analitik olarak hesaplanır. Toplam log-kanıt, üç parametrenin bağımsız log-kanıtlarının toplamıdır (parametreler arasında korelasyon ihmal edilmektedir):
log P(D | M) = log P(Ω_m | M) + log P(Ω_Λ | M) + log P(H₀ | M)
Teizm modelinde prior ile likelihood aynı merkezde olduğundan konjugasyon yüksek kanıt değeri üretir. Çoklu evren modelinde geniş düzgün prior, olabilirlik kütlesini seyreltir. Kaba gerçek modelinde ise aşırı geniş prior çok daha büyük seyreltmeye yol açar.
4.3 Bayesçi Model Ortalaması
Eşit model priorları P(M₁) = P(M₂) = P(M₃) = 1/3 varsayımıyla, normalize edilmiş model ağırlıkları şu şekilde hesaplanır:
w(M_i) = P(D | M_i) / Σⱼ P(D | M_j)
BMA ağırlıkları, her modelin bir sonraki gözlem için yapacağı tahminlerin ağırlıklı ortalamasını vermektedir. Teizm modelinin ağırlığı teorik olarak 1'e yakın çıkarken, geniş priorlu modeller neredeyse sıfır ağırlık alır.
4.4 MDL Analizi
MDL skorları, log-kanıt ve karmaşıklık terimlerinin birleşimini yansıtır. Teizmin güçlü kanıt değeri, karmaşıklık cezasını fazlasıyla karşılar. Kaba gerçek modeli düşük karmaşıklığına rağmen zayıf kanıt değeri nedeniyle yüksek MDL skoru alır. Çoklu evren, hem kanıt hem karmaşıklık açısından dezavantajlıdır.
5. Sonuçlar ve Yorumlama
5.1 İstatistiksel Bulgular
Analiz, tutarlı biçimde teizm modelini hem BMA ağırlıkları hem de MDL skoru açısından en avantajlı konuma yerleştirmektedir. Bu sonuç, "ince ayar argümanı" olarak bilinen felsefi tartışmanın istatistiksel tercümesiyle uyumludur: parametreleri spesifik değerlere önceden yerleştiren (narrow prior) bir modelin, bu değerlerin gözlemlenmesi durumunda yüksek kanıt değeri alması kaçınılmazdır.
Çoklu evren modeli, geniş fakat makul prior aralıklarına rağmen teizmden belirgin biçimde geride kalır. Bunun nedeni prior seyreltmesidir: prior ne kadar genişse, gözlemlenen verilerin o prior altında ortaya çıkma olasılığı o kadar düşüktür.
Kaba gerçek modeli, açıklama sunmamasına rağmen en geniş prioru nedeniyle en zayıf kanıt değerine sahiptir. Bu, Bayesçi çerçevede "açıklamama"nın istatistiksel olarak cezalandırıldığını göstermektedir.
5.2 Felsefi Yorumlama
Bu bulguların felsefi sınırları titizlikle belirlenmelidir.
Prior spesifikasyonu sorunu: Teizm modelinin avantajı, büyük ölçüde seçilen priorun dar olmasından kaynaklanmaktadır. Eğer teizm modeli için daha geniş bir prior seçilseydi — örneğin Tanrı'nın hangi değerleri seçeceğine dair belirsizliği yansıtmak için — sonuçlar değişirdi. Eski Ahit'in Tanrısı mı yoksa Stoacıların Logos'u mu? Priorun teolojik içeriğe göre değişmesi, analizin sonuçlarını doğrudan etkiler.
Modelin temsil geçerliliği: Teizm, çoklu evren ve kaba gerçek istatistiksel modeller değil; metafizik pozisyonlardır. Bu çalışma, bu pozisyonların belirli bir istatistiksel yorumunu karşılaştırmaktadır. Farklı formülasyonlar farklı sonuçlar doğurabilir.
Veri bağımlılığı: Analiz, Planck uyumlu "gerçek" parametreler etrafında simüle edilmiş veriler kullanmaktadır. Gerçek kozmolojik gözlemler (ve bunların sistematik hataları) dahil edildiğinde tablo değişebilir.
Çoklu evren'in gizli avantajı: Çoklu evren hipotezi, standart Bayesçi çerçevede dezavantajlı görünmektedir. Ancak bu çerçeve, antropik ilkeyi doğrudan modelleyememektedir. Gözlemci seçim etkisi (biz yaşama elverişli bir evrende bulunduğumuz için bu parametreleri ölçüyoruz) dahil edildiğinde çoklu evren değerlendirmesi köklü biçimde değişir.
5.3 Ockham Usturası ve Model Karmaşıklığı
Kolmogorov karmaşıklığı yaklaşımının öznel karakteri, bu analizin açık bir sınırıdır. Teizm'in karmaşıklığı nasıl ölçülmeli? Sonsuz gücü, sonsuz bilgisi ve sonsuz iyiliği olan bir varlık son derece basit bir model midir, yoksa son derece karmaşık bir model midir?
Richard Swinburne gibi teist filozoflar, Tanrı'nın "maksimal sadeliğe" sahip olduğunu savunur: sonsuz güç tek bir parametre gerektirirken, sınırlı güç birden fazla belirtim gerektirir. Buna karşılık, çoklu evren teorisini savunan fizikçiler, çoğul evrenin en basit fizik yasalarından kaçınılmaz olarak çıktığını ileri sürer.
MDL analizi, bu karmaşıklık tartışmasının nasıl çözüldüğüne son derece duyarlıdır; bu da onu salt nesnel bir araç olmaktan çıkarıp felsefi varsayımları yansıtan bir çerçeveye dönüştürür.
6. Metodolojik Değerlendirmeler
6.1 Parametre Bağımsızlığı Varsayımı
Analiz, Ω_m, Ω_Λ ve H₀ parametrelerinin koşullu bağımsız olduğunu varsaymaktadır. Oysa gerçek kozmoloji verilerinde bu parametreler arasında güçlü korelasyonlar mevcuttur (örneğin, düz evren kısıtı Ω_m + Ω_Λ ≈ 1). Tam bir Bayesçi analiz, kovaryans yapısını hesaba katmalıdır.
6.2 Örneklem Büyüklüğünün Etkisi
n = 50 gözlemle posterior dağılımları son derece dar hale geldiğinden (σ_post ≈ σ/√50 ≈ σ/7), tüm modellerin olabilirliği veri ortalaması etrafında yoğunlaşır. Bu durum, modeller arasındaki farkı amplify eder; gerçek gözlemsel verilerde belirsizlik daha büyük olabilir.
6.3 Model Uzayının Eksikliği
Analiz yalnızca üç modeli kapsamaktadır. Doğacı teleoloji, panenteizm, simulasyon hipotezi gibi alternatif pozisyonlar dışarıda bırakılmıştır. Kapsamlı bir Bayesçi analiz, daha zengin bir model uzayı gerektirmektedir.
7. Sonuç
Bu çalışma, evrenin ince ayarı tartışmasını Bayesçi istatistik diline tercüme etmiş ve üç felsefi pozisyonun karşılaştırmalı analizini sunmuştur. Temel bulgu şudur: dar ve isabetli prior spesifikasyonuna sahip teizm modeli, simüle edilmiş Planck verisi karşısında en yüksek model kanıtı ve en düşük MDL skoruna ulaşmaktadır.
Ancak bu bulgunun sınırlarının açıkça kabul edilmesi gerekmektedir. Analiz, gerçek bir felsefi argüman sunmak yerine, belirli istatistiksel formülasyonlar altında hangi modelin veriye daha uygun göründüğünü ortaya koymaktadır. Prior seçimi, model karmaşıklığının ölçümü ve model uzayının sınırlandırılması — bunların hepsi, nihai sonucu etkileyen normatif tercihlerdir.
En anlamlı katkı metodolojik niteliktedir: soyut felsefi tartışmalar, istatistiksel çerçeveler aracılığıyla falsifiye edilebilir tahminlere dönüştürülebilir. Bu dönüşüm hem pozitif hem negatif bir bulgudur. Pozitif yönde, argümanları netleştirir ve hesaba çekilebilir kılar. Negatif yönde ise tartışmanın nihai yanıtı hâlâ prior spesifikasyonu gibi istatistik-öncesi (pre-statistical) tercihlere bağlı olduğunu açığa çıkarır.
Evrenin ince ayarı, Bayesçi istatistiğin tüm güçlü araçlarıyla bile çözülmemiş bir soru olarak kalmaktadır. Bununla birlikte bu araçlar, tartışmayı daha sağlam bir zemine taşımakta ve hangi varsayımlar altında hangi sonuçların çıktığını görmemizi sağlamaktadır.
Simülasyon Kodu
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.special import logsumexp
from dataclasses import dataclass
from typing import Dict, List, Tuple
----------------------------------------------------------------------
1. SİMÜLE EDİLMİŞ FİZİK VERİSİ
----------------------------------------------------------------------
def generate_physics_observations(n_samples=50, seed=42):
np.random.seed(seed)
"Gerçek" evren parametreleri (Planck uyumlu)
true_Omega_m = 0.315
true_Omega_L = 0.685
true_H0 = 67.4
Gözlem hataları (simülasyon)
sigma_Omega_m = 0.01
sigma_Omega_L = 0.01
sigma_H0 = 0.5
observations = []
for _ in range(n_samples):
obs = {
'Omega_m': np.random.normal(true_Omega_m, sigma_Omega_m),
'Omega_Lambda': np.random.normal(true_Omega_L, sigma_Omega_L),
'H0': np.random.normal(true_H0, sigma_H0)
}
observations.append(obs)
return observations
----------------------------------------------------------------------
2. MARGINAL LIKELIHOOD (MODEL EVIDENCE) HESAPLAMA
----------------------------------------------------------------------
def compute_log_evidence_theism(obs: List[Dict]) -> float:
"""
Teizm modeli: her parametre için dar normal prior.
Likelihood: normal, varyansı gözlem hatasına eşit (biliniyor).
Marginal likelihood: normal-normal konjugasyonu ile analitik.
"""
Gözlem istatistikleri
n = len(obs)
Omega_m_obs = np.array([d['Omega_m'] for d in obs])
Omega_L_obs = np.array([d['Omega_Lambda'] for d in obs])
H0_obs = np.array([d['H0'] for d in obs])
Bilinen varyanslar (gözlem hatası)
sigma2_Om = (0.01)**2
sigma2_OL = (0.01)**2
sigma2_H0 = (0.5)**2
Prior parametreleri (dar)
mu0_Om = 0.315; sigma20_Om = 0.01**2
mu0_OL = 0.685; sigma20_OL = 0.01**2
mu0_H0 = 67.4; sigma20_H0 = 0.5**2
Örnek ortalamalar
xbar_Om = np.mean(Omega_m_obs)
xbar_OL = np.mean(Omega_L_obs)
xbar_H0 = np.mean(H0_obs)
Posterior parametreler (konjugasyon)
post_var_Om = 1 / (1/sigma20_Om + n/sigma2_Om)
post_mean_Om = post_var_Om * (mu0_Om/sigma20_Om + n*xbar_Om/sigma2_Om)
post_var_OL = 1 / (1/sigma20_OL + n/sigma2_OL)
post_mean_OL = post_var_OL * (mu0_OL/sigma20_OL + n*xbar_OL/sigma2_OL)
post_var_H0 = 1 / (1/sigma20_H0 + n/sigma2_H0)
post_mean_H0 = post_var_H0 * (mu0_H0/sigma20_H0 + n*xbar_H0/sigma2_H0)
Marjinal log-likelihood = log P(veri)
= -0.5 * [ n*log(2π) + log|Σ| ] + ... (normal-normal)
log_ev_Om = 0.5 * (np.log(post_var_Om) - np.log(sigma20_Om) - n * np.log(2*np.pi*sigma2_Om)
+ (mu0_Om**2 / sigma20_Om + n * xbar_Om**2 / sigma2_Om - post_mean_Om**2 / post_var_Om))
log_ev_OL = 0.5 * (np.log(post_var_OL) - np.log(sigma20_OL) - n * np.log(2*np.pi*sigma2_OL)
+ (mu0_OL**2 / sigma20_OL + n * xbar_OL**2 / sigma2_OL - post_mean_OL**2 / post_var_OL))
log_ev_H0 = 0.5 * (np.log(post_var_H0) - np.log(sigma20_H0) - n * np.log(2*np.pi*sigma2_H0)
+ (mu0_H0**2 / sigma20_H0 + n * xbar_H0**2 / sigma2_H0 - post_mean_H0**2 / post_var_H0))
return log_ev_Om + log_ev_OL + log_ev_H0
def compute_log_evidence_multiverse(obs: List[Dict]) -> float:
"""
Çoklu evren modeli: her parametre için geniş uniform prior.
Likelihood: normal, varyans biliniyor.
Marginal likelihood = ∫ (∏ N(y_i|μ,σ²)) * (1/(b-a)) dμ
= (1/(b-a)) * [ Φ((b-μ̂)/σ̂) - Φ((a-μ̂)/σ̂) ] (her parametre için)
"""
n = len(obs)
Omega_m_obs = np.array([d['Omega_m'] for d in obs])
Omega_L_obs = np.array([d['Omega_Lambda'] for d in obs])
H0_obs = np.array([d['H0'] for d in obs])
sigma_Om = 0.01
sigma_OL = 0.01
sigma_H0 = 0.5
Örnek ortalamaları
xbar_Om = np.mean(Omega_m_obs)
xbar_OL = np.mean(Omega_L_obs)
xbar_H0 = np.mean(H0_obs)
Posterior standart sapma (likelihood için)
sigma_post_Om = sigma_Om / np.sqrt(n)
sigma_post_OL = sigma_OL / np.sqrt(n)
sigma_post_H0 = sigma_H0 / np.sqrt(n)
Uniform prior sınırları (geniş)
a_Om, b_Om = 0.1, 0.5
a_OL, b_OL = 0.5, 0.9
a_H0, b_H0 = 60, 75
Marjinal likelihood = (1/(b-a)) * [Φ((b-μ̂)/σ̂) - Φ((a-μ̂)/σ̂)]
prob_Om = norm.cdf((b_Om - xbar_Om)/sigma_post_Om) - norm.cdf((a_Om - xbar_Om)/sigma_post_Om)
prob_OL = norm.cdf((b_OL - xbar_OL)/sigma_post_OL) - norm.cdf((a_OL - xbar_OL)/sigma_post_OL)
prob_H0 = norm.cdf((b_H0 - xbar_H0)/sigma_post_H0) - norm.cdf((a_H0 - xbar_H0)/sigma_post_H0)
Log-evidence = -log(b-a) + log(prob)
log_ev_Om = -np.log(b_Om - a_Om) + np.log(prob_Om)
log_ev_OL = -np.log(b_OL - a_OL) + np.log(prob_OL)
log_ev_H0 = -np.log(b_H0 - a_H0) + np.log(prob_H0)
return log_ev_Om + log_ev_OL + log_ev_H0
def compute_log_evidence_brutefact(obs: List[Dict]) -> float:
"""
Brute fact: çok geniş bir uniform prior (neredeyse düz).
Uygulamada, veri aralığını kapsayan çok geniş bir aralık kullanılır.
"""
n = len(obs)
Omega_m_obs = np.array([d['Omega_m'] for d in obs])
Omega_L_obs = np.array([d['Omega_Lambda'] for d in obs])
H0_obs = np.array([d['H0'] for d in obs])
sigma_Om = 0.01
sigma_OL = 0.01
sigma_H0 = 0.5
xbar_Om = np.mean(Omega_m_obs)
xbar_OL = np.mean(Omega_L_obs)
xbar_H0 = np.mean(H0_obs)
sigma_post_Om = sigma_Om / np.sqrt(n)
sigma_post_OL = sigma_OL / np.sqrt(n)
sigma_post_H0 = sigma_H0 / np.sqrt(n)
Çok geniş uniform sınırlar (pratikte sonsuz)
a_Om, b_Om = 0.0, 1.0
a_OL, b_OL = 0.0, 1.0
a_H0, b_H0 = 0.0, 200.0
prob_Om = norm.cdf((b_Om - xbar_Om)/sigma_post_Om) - norm.cdf((a_Om - xbar_Om)/sigma_post_Om)
prob_OL = norm.cdf((b_OL - xbar_OL)/sigma_post_OL) - norm.cdf((a_OL - xbar_OL)/sigma_post_OL)
prob_H0 = norm.cdf((b_H0 - xbar_H0)/sigma_post_H0) - norm.cdf((a_H0 - xbar_H0)/sigma_post_H0)
log_ev_Om = -np.log(b_Om - a_Om) + np.log(prob_Om)
log_ev_OL = -np.log(b_OL - a_OL) + np.log(prob_OL)
log_ev_H0 = -np.log(b_H0 - a_H0) + np.log(prob_H0)
return log_ev_Om + log_ev_OL + log_ev_H0
----------------------------------------------------------------------
3. KOLMOGOROV KARMAŞIKLIK YAKLAŞIMI (MDL)
----------------------------------------------------------------------
def kolmogorov_complexity_approximation(hypothesis_name: str) -> float:
"""
Hipotezin karmaşıklığını yaklaşık olarak hesaplar.
Teizm: tek bir varlık, az sayıda serbest parametre.
Multiverse: çok sayıda evren, birçok parametre.
Brute fact: hiçbir açıklama, en basit.
"""
if hypothesis_name == "theism":
return 0.5 # düşük karmaşıklık
elif hypothesis_name == "multiverse":
return 2.0 # yüksek karmaşıklık
else: # brute_fact
return 0.2 # en basit
def mdl_score(log_evidence: float, complexity: float) -> float:
"""
Minimum Description Length = -log evidence + complexity.
Daha düşük MDL daha iyi model.
"""
return -log_evidence + complexity
----------------------------------------------------------------------
4. BAYESIAN MODEL AVERAGING (BMA)
----------------------------------------------------------------------
def bayesian_model_averaging(log_evidences: Dict[str, float], prior_models: Dict[str, float] = None) -> Dict[str, float]:
"""
Model ağırlıklarını hesaplar.
"""
if prior_models is None:
prior_models = {name: 1.0/len(log_evidences) for name in log_evidences}
log_weights = {name: np.log(prior_models[name]) + log_evidences[name] for name in log_evidences}
log_weights_list = list(log_weights.values())
log_weights_list -= logsumexp(log_weights_list)
weights = {name: np.exp(log_weights[name]) for name in log_weights}
return weights
----------------------------------------------------------------------
5. ANA ÇALIŞTIRMA
----------------------------------------------------------------------
def run_full_analysis():
1. Gözlemleri simüle et
observations = generate_physics_observations(n_samples=50)
print(f"Toplam {len(observations)} gözlem üretildi.")
2. Her model için log-evidence hesapla
log_ev = {
"theism": compute_log_evidence_theism(observations),
"multiverse": compute_log_evidence_multiverse(observations),
"brute_fact": compute_log_evidence_brutefact(observations)
}
print("\nModel Evidence (log-marjinal likelihood):")
for name, ev in log_ev.items():
print(f" {name}: {ev:.2f}")
3. Bayesian Model Averaging
bma_weights = bayesian_model_averaging(log_ev)
print("\nBayesian Model Averaging ağırlıkları:")
for name, w in bma_weights.items():
print(f" {name}: {w:.4f}")
4. MDL ile Ockham penalitesi
mdl_scores = {}
for name, ev in log_ev.items():
complexity = kolmogorov_complexity_approximation(name)
mdl = mdl_score(ev, complexity)
mdl_scores[name] = mdl
print("\nMDL skorları (küçük daha iyi):")
for name, mdl in mdl_scores.items():
print(f" {name}: {mdl:.2f}")
best_mdl = min(mdl_scores, key=mdl_scores.get)
print(f"MDL'ye göre en iyi model: {best_mdl}")
5. Görselleştirme
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.bar(list(bma_weights.keys()), list(bma_weights.values()), color=['gold', 'silver', 'brown'])
plt.title("Bayesian Model Averaging")
plt.ylabel("Model ağırlığı")
plt.ylim(0, 1)
plt.subplot(1, 2, 2)
plt.bar(list(mdl_scores.keys()), list(mdl_scores.values()), color=['gold', 'silver', 'brown'])
plt.title("Minimum Description Length")
plt.ylabel("MDL skoru")
plt.tight_layout()
plt.show()
return bma_weights, mdl_scores
----------------------------------------------------------------------
6. ÇALIŞTIR
----------------------------------------------------------------------
if __name__ == "__main__":
weights, mdl = run_full_analysis()
print("\n=== SONUÇ ===")
print("BMA'ya göre en iyi model:", max(weights, key=weights.get))
print("MDL'ye göre en iyi model:", min(mdl, key=mdl.get))