4

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

その結果:

ここに画像の説明を入力

私の質問は次のとおりです。

  1. この問題のベイジアン定式化は何ですか? 作成者はどのように尤度関数を使用して事前確率を接続し、事後確率を得ることができますか?

  2. は上記のコードの の定義をどのようにpymc解釈しますか? 統計グラフ モデルerror potentialの文献では、ポテンシャルは通常、ある分布の因数分解における因子 (積項) です。この場合、どの分布 (つまり、どの変数) が参照されていますか?potential

  3. normal_like著者はコード内でPyMC 関数を使用しているPyMCため、この尤度関数を最大化することを想定していますか? (そうでない場合、それはどのような役割を果たしますか?)。著者はtrue_price、観測データprice_estimateとしてmu、正規尤度関数の として使用しているようです。これは正しいですか?もしそうなら、これの理論的根拠は何ですか?

4

0 に答える 0