私は、平均、標準偏差、および各点の観測数がある(つまり、測定の精度に関する知識を持っている)一連のデータを持っています。私は手段でのみ見て、伝統的なpymc3モデルでは、私は、の線に沿って何かをすることがあります。pymc3モデルに不確かさを組み込む
x = data['mean']
with pm.Model() as m:
a = pm.Normal('a', mu=0, sd=1)
b = pm.Normal('b', mu=1, sd=1)
y = a + b*x
eps= pm.HalfNormal('eps', sd=1)
likelihood = pm.Normal('likelihood', mu=y, sd=eps, observed=x)
モデルへの観測値の変動に関する情報を取り入れるための最良の方法は何ですか?明らかに、その結果は、高分散(あまり一定ではない)観測よりも低分散観測の方が重くなるはずです。
一つのアプローチ統計学者は、次の操作を実行することを示唆した。
x = data['mean'] # mean of observation
x_sd = data['sd'] # sd of observation
x_n = data['n'] # of measures for observation
x_sem = x_sd/np.sqrt(x_n)
with pm.Model() as m:
a = pm.Normal('a', mu=0, sd=1)
b = pm.Normal('b', mu=1, sd=1)
y = a + b*x
eps = pm.HalfNormal('eps', sd=1)
obs = mc.Normal('obs', mu=x, sd=x_sem, shape=len(x))
likelihood = pm.Normal('likelihood', mu=y, eps=eps, observed=obs)
しかし、私はこれを実行したときに私が手:
TypeError: observed needs to be data but got: <class 'pymc3.model.FreeRV'>
私はpymc3のmasterブランチを実行しています(3.0には、いくつかを持っていますサンプル時間が非常に遅くなるパフォーマンス上の問題)。
私が正しく理解していれば、あなたが見ていることを「変数の誤り」モデルと呼びます。 「ベイジアン・エラーの変数」をウェブで検索すると、ヒットが増えます。 pymc3を使用する必要がありますか?問題の理解を得るために、JAGSまたはStanの例を使って作業することを検討してください。 –