我正在對某些數據擬合分層模型,擬合似乎可以接受。如何擬合pymc3中呈現歪斜的數據
with pm.Model() as model:
mu_a = pm.Normal('mu_a', 0, sd=.2)
sigma_b = pm.HalfNormal('sig_a', 0.1)
mean = pm.Normal('mean', mu_a, sigma_b, shape=n)
std = pm.HalfNormal('std', 0.01 , shape=n)
means = mean[h]
stds = std[h]
y = pm.Laplace('y', mu=means, b=stds, observed=data)
hierarchical_trace = pm.sample(2000, n_init=30000)
當檢查後預測尾部似乎是合理的,min,並且數據的最大值(黑線)都似乎是最小/最大生成的樣本的內部(這是不與StudentT的情況下)。
ppc_trace = pm.sample_ppc(model=model, trace=hierarchical_trace)
ppc with min/max/mean of original data
然而平均(最右邊的圖)是的路要走,我想這是因爲我的數據是負偏的,所以數據的質量移動平均太遠的權利。
sp.stats.skew(data)
-0.1699020117521286
什麼是Pymc3到這類數據進行建模推薦的方法。雖然它是一個對稱分佈,但拉普拉斯似乎非常適合我的數據。高斯不會在尾部提供足夠的重量(這會排除偏斜正常?)。我如何模擬這種適度偏斜的數據?
我的目標是獲得一個準確的地圖估計與我的數據的不同部分可信區間(基於分級規範)