我想用我的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),将允许预测新数据后验。
这是否存在?