我想用我的PyMC3 LR模型來獲得預測變量y
的值的80%HPD範圍,因爲新數據可用。 因此,外推y
的值的可信分佈值爲x
的新值不在我的原始數據集中。用PyMC3進行基本貝葉斯線性迴歸預測
型號:
with pm.Model() as model_tlr:
alpha = pm.Normal('alpha', mu=0, sd=10)
beta = pm.Normal('beta', mu=0, sd=10)
epsilon = pm.Uniform('epsilon', 0, 25)
nu = pm.Deterministic('nu', pm.Exponential('nu_', 1/29) + 1)
mu = pm.Deterministic('mu', alpha + beta * x)
yl = pm.StudentT('yl', mu=mu, sd=epsilon, nu=nu, observed=y)
trace_tlr = pm.sample(50000, njobs=3)
從後燃盡我的樣品,並得到一個HPD
ppc_tlr = pm.sample_ppc(btrace_tlr, samples=10000, model=model_tlr)
ys = ppc_tlr['yl']
y_hpd = pm.stats.hpd(ys, alpha=0.2)
這是偉大的可視化HPD圍繞集中趨勢後(使用fill_between)
但我想現在使用該模型來獲得HPD爲y
當x=126.2
(例如)並且初始數據集不包含觀察x=126.2
我理解後驗採樣的方式是數據集中每個可用的x
值都有10k個採樣,因此沒有因爲沒有觀察到,所以在ys
的x=126.2
的相應採樣。
基本上,有沒有一種方法可以使用我的模型從預測值x=126.2
獲得可信值的分佈(基於模型),該預測值在模型建立後纔可用? 如果是這樣,怎麼樣?
謝謝
編輯:
找到SO Post其中提到正在開發
功能(可能最終會加入到pymc3),將允許預測新數據後驗。
這是否存在?