Probabilistic Programming for Hackersの第5 章で、著者はThe Price is Rightのインスタンスに対して次のソリューションを提案しています。ここでの目標は、フルショーケースの価格の事後確率を推定することです。
ショーの参加者として、あなたが持っているのは、ショーの履歴データに基づくショーケースの全額の見積もりと、ショーケースに含まれるアイテムの価格の独自の見積もりだけです。
本の章はこの投稿に基づいており、ソリューションのコードを以下に示します。
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
の文献では、ポテンシャルは通常、ある分布の因数分解における因子 (積項) です。この場合、どの分布 (つまり、どの変数) が参照されていますか?potential
normal_like
著者はコード内でPyMC 関数を使用しているPyMC
ため、この尤度関数を最大化することを想定していますか? (そうでない場合、それはどのような役割を果たしますか?)。著者はtrue_price
、観測データprice_estimate
としてmu
、正規尤度関数の として使用しているようです。これは正しいですか?もしそうなら、これの理論的根拠は何ですか?