Solving inverse problems with PyMC

前端 未结 2 1473
Happy的楠姐
Happy的楠姐 2020-12-15 00:43

Suppose we\'re given a prior on X (e.g. X ~ Gaussian) and a forward operator y = f(x). Suppose further we have observed y

2条回答
  •  忘掉有多难
    2020-12-15 01:20

    The functionality purposed by @user1572508 is now part of PyMC under the name stochastic_from_data() or Histogram(). The solution to this thread then becomes:

    from pymc import *
    import matplotlib.pyplot as plt
    
    xtrue = 2 # unknown in the real application
    prior = rnormal(0,1,10000) # initial guess is inaccurate
    for i in range(5):
      x = stochastic_from_data('x', prior)
      y = x*x
      obs = Normal('obs', y, 0.1, xtrue*xtrue + rnormal(0,1), observed=True)
    
      model = Model([x,y,obs])
      mcmc = MCMC(model)
      mcmc.sample(10000)
    
      Matplot.plot(mcmc.trace('x'))
      plt.show()
    
      prior = mcmc.trace('x')[:]
    

提交回复
热议问题