y= m * x
次のデータを使用して単純な問題の勾配を推定しようとするとします。
x_data = np.array([0,1,2,3])
y_data = np.array([0,1,2,3])
明らかに勾配は1です。ただし、これを PyMC で実行すると10になります
slope = pm.Uniform('slope', lower=0, upper=20)
@pm.deterministic
def y_gen(value=y_data, x=x_data, slope=slope, observed=True):
return slope * x
model = pm.Model([slope])
mcmc = pm.MCMC(model)
mcmc.sample(100000, 5000)
# This returns 10
final_guess = mcmc.trace('slope')[:].mean()
しかし、それは1でなければなりません!
注: 上記は PyMC2 の場合です。