在Chapter 5的Probabilistic Programming for Hackers中,作者针对The Price is Right的实例提出了以下解决方案,其目标是估算价格的后验 完整展示。
作为节目的参赛者,您所拥有的只是根据节目的历史数据估算展示的全价,以及您自己对展示中所包含物品价格的估计。
本书的章节基于this post,解决方案的代码如下所示:
import pymc as pm
# Our belief of the full price of the showcase, based on our analysis of
# historical data from previous episodes:
mu_prior = 35000
std_prior = 7500
true_price = pm.Normal("true_price", mu_prior, 1.0 / std_prior ** 2)
# Our beliefs about the price of two items in the showcase:
prize_1 = pm.Normal("snowblower", 3000, 1.0 / (500 ** 2))
prize_2 = pm.Normal("trip_to_toronto", 5000, 1.0 / (3000 ** 2))
price_estimate = prize_1 + prize_2
# The model that relates our three priors:
@pm.potential
def error(true_price=true_price, price_estimate=price_estimate):
return pm.normal_like(true_price, price_estimate, 1 / (3e3) ** 2)
# Solving for the final price of the full showcase
mcmc = pm.MCMC([true_price, prize_1, prize_2, price_estimate, error])
mcmc.sample(50000, 10000)
trace_of_posterior_of_price_of_suite = mcmc.trace("true_price")[:]
导致:
我的问题是:
这个问题的贝叶斯公式是什么?作者如何使用似然函数连接先验并获得后验?
pymc
如何解释上述代码中error
potential
的定义?在statistical graphical models literature中,潜力通常是某种分布因子分解中的一个因素(即产品术语)。在这种情况下,potential
指的是什么分布(即什么变量)?
由于作者在代码中使用PyMC函数normal_like
,PyMC
是否假设您想要最大化此似然函数? (如果没有,它起什么作用?)。作者似乎使用true_price
作为观察数据,price_estimate
作为正常似然函数中的mu
。这是正确的吗?如果是这样,这个的理由是什么?