Python pymc的后验概率
(这个问题最初发布在stats.O上。我把它移到这里是因为它确实与Python pymc的后验概率,python,bayesian,pymc,naivebayes,mcmc,Python,Bayesian,Pymc,Naivebayes,Mcmc,(这个问题最初发布在stats.O上。我把它移到这里是因为它确实与pymc以及其中更一般的问题有关:事实上,主要目的是更好地了解pymc的工作原理。如果任何主持人认为它不适合这样做,我将从这里删除。) 我在这里和某处都读过这本书和其他许多问题 我试图理解如何应用贝叶斯定理来计算使用某些数据的后验概率。特别是,我有一个独立参数的元组 从这些数据中,我想推断出某个事件发生的可能性。然后目标是计算 一些附加注释: 这是一种无监督学习,我知道已经发生了,我想找出使概率最大化的参数。(*) 我还希望有
pymc
以及其中更一般的问题有关:事实上,主要目的是更好地了解pymc
的工作原理。如果任何主持人认为它不适合这样做,我将从这里删除。)
我在这里和某处都读过这本书和其他许多问题
我试图理解如何应用贝叶斯定理来计算使用某些数据的后验概率。特别是,我有一个独立参数的元组
从这些数据中,我想推断出某个事件发生的可能性。然后目标是计算
一些附加注释:
pymc
计算给定数据的可能性,然后对于每个参数元组,我想得到后验概率class ObsData(object):
def __init__(self, params):
self.theta1 = params[0]
self.theta2 = params[1]
class Model(object):
def __init__(self, data):
# Priors
self.theta1 = pm.Uniform('theta1', 0, 100)
self.theta2 = pm.Normal('theta2', 0, 0.0001)
@pm.deterministic
def model(
theta1=self.theta1,
theta2=self.theta2,
):
return (theta1, theta2)
# Is this the actual likelihood?
self.likelihood = pm.MvNormal(
'likelihood',
mu=model,
tau=np.identity(2),
value=data, # is it correct to put the data here?
observed=True
)
def mcmc(observed_data):
data = ObsData(observed_data)
pymc_obj = Model(data)
model = pymc.MCMC(pymc_obj)
model.sample(10000, verbose=0) # Does this line compute the likelihood and the normalisation factor?
# How do I get the posterior distribution?
问题如下:
self.likelion
是否表示贝叶斯似然value=data
不正确.).sample()
是否实际计算后验概率pymc
只计算给定数据和先验的可能性欢迎任何评论,也可以参考其他问题或教程 首先,我认为您希望从模型的定义中返回(θ1*θ2) model.sample是采样,而不是计算,给定数据的参数的后验分布(给定足够的老化等),以及每个参数元组的特定值的可能性可以通过采样后的联合后验分布来确定
我想你现在对MCMC有一些基本的误解。我想不出更好的办法来回答你的问题,而不是向你指出精彩的是的,我同意你的看法,我对此感到非常困惑。我读了一些你的参考资料(谢谢!)。据我所知,采样后
mcmc
对象的轨迹(参数)给出了其似然分布-假设我问题中的等式被还原,即似然为$P(\theta | e)$。我说得对吗?(我会读更多的书来获得更多的信心。)很抱歉给你大量的链接,但这里还有一个很好的链接,是为了你的直觉。MCMC正在对参数P(θE)的值的后验概率进行采样,但给定模型下数据的可能性是可能性P(Eθ)