7

Xの事前確率(例: X ~ Gaussian) と前方演算子y = f(x)が与えられたとします。さらに、ある実験によってyを観測し、この実験を無期限に繰り返すことができるとします。出力Yは、ガウス (Y ~ ガウス) またはノイズのない (Y ~ デルタ (観察)) と見なされます。

観察されたXに関する主観的な知識の程度を一貫して更新するにはどうすればよいでしょうか? PyMC で次のモデルを試しましたが、何か足りないようです。

from pymc import *

xtrue = 2                        # this value is unknown in the real application
x = rnormal(0, 0.01, size=10000) # initial guess

for i in range(5):
    X = Normal('X', x.mean(), 1./x.var())
    Y = X*X                        # f(x) = x*x
    OBS = Normal('OBS', Y, 0.1, value=xtrue*xtrue+rnormal(0,1), observed=True)
    model = Model([X,Y,OBS])
    mcmc = MCMC(model)
    mcmc.sample(10000)

    x = mcmc.trace('X')[:]       # posterior samples

事後はxtrueに収束していません。

4

2 に答える 2

5

問題は、関数 $y = x^2$ が 1 対 1 ではないことです。具体的には、X を 2 乗すると X の符号に関するすべての情報が失われるため、Y の値から、最初にデータを生成するために 2 を使用したか -2 を使用したかを判断する方法がありません。最初の繰り返しの後で X のトレースのヒストグラムを作成すると、次のようになります。最初の反復後のトレースのヒストグラム

この分布には 2 つのモードがあり、1 つは 2 (実際の値) で、もう 1 つは -2 です。次の反復では、x.mean() はゼロに近くなり (バイモーダル分布の平均)、これは明らかに望んでいるものではありません。

于 2013-07-02T00:33:50.617 に答える