Несходимость трассировки при использовании pymc с логарифмическими данными
Не удается найти след, сходящийся в моей простой программе подбора полиномов. Я приведу пример параметра "а" ниже. Единственное, о чем я могу думать, так это о том, что я использую логарифмические данные, а логарифмическая вероятность вызывает проблему? Я новичок в этом, и я не уверен. Поэтому я направляю свой вопрос здесь.
Это код, который я запускаю:
y=vc
x=vt
y=np.asarray(y)
x=np.asarray(x)
z = np.polyfit(x, y, 2) # the traditional chi-square fit
print 'The chi-square result: ', z
#The chi-square result: [ -0.63802271 5.83847593 -13.24021273]
#priors
sig = pymc.Uniform('sig', 0, 100, value=1)
a = pymc.Uniform('a', -100, 100,value=0)
b = pymc.Uniform('b', -100, 100,value=0)
c = pymc.Uniform('c', -100, 100,value=0)
#model
@pymc.deterministic(plot=False)
def mod_quadratic(x=x, a=a, b=b, c=c):
return a*x**2 + b*x + c
#likelihood
y = pymc.Normal('y', mu=mod_quadratic, tau=1.0/sig**2, value=y, observed=True)
У меня есть логарифмические значения x и y в качестве входных данных, и я подгоняю простой x**2 полином.
Я держу входной файл скромным:
import pymc,v
# load the model file
import numpy as np
import matplotlib.pyplot as plt
R = pymc.MCMC(v) # build the model
R.sample(iter=100000,burn=20000,thin=100) # populate and run it
print 'a ', R.a.value # print outputs
print 'b ', R.b.value
print 'c ', R.c.value
print 'a ', R.a.stats()
print 'b ', R.b.stats()
print 'c ', R.c.stats()
След не сходится. Если я использую нелогарифмические данные, трасса сходится, однако подбор не является приемлемым, так как полином не соответствует нелогарифмическим данным.
Окно трассировки b Окно трассировки
Для экономии места я включил только трассировку b, но они показывают ту же несходимость.
Кто-нибудь видит мой недостаток? Я уверен, что я делаю что-то не так здесь..
Спасибо