解决价格是正确的

时间:2014-04-19 20:52:12

标签: python bayesian statsmodels pymc

Chapter 5Probabilistic 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")[:]

导致:

enter image description here

我的问题是:

  1. 这个问题的贝叶斯公式是什么?作者如何使用似然函数连接先验并获得后验?

  2. pymc如何解释上述代码中error potential的定义?在statistical graphical models literature中,潜力通常是某种分布因子分解中的一个因素(即产品术语)。在这种情况下,potential指的是什么分布(即什么变量)?

  3. 由于作者在代码中使用PyMC函数normal_likePyMC是否假设您想要最大化此似然函数? (如果没有,它起什么作用?)。作者似乎使用true_price作为观察数据,price_estimate作为正常似然函数中的mu。这是正确的吗?如果是这样,这个的理由是什么?

0 个答案:

没有答案