Несходимость трассировки при использовании 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, но они показывают ту же несходимость.

Кто-нибудь видит мой недостаток? Я уверен, что я делаю что-то не так здесь..

Спасибо

0 ответов

Другие вопросы по тегам