我试图用高斯(和更复杂)的功能来适应一些数据.我在下面创建了一个小例子.

我的第一个问题是,我做对吗?

我的第二个问题是,如何在x方向添加错误,即在观察/数据的x位置?

很难找到关于如何在pyMC中进行这种回归的好的指南.也许因为它更容易使用一些最小二乘法或类似的方法,但是我最终有很多参数,需要看到我们如何限制它们并比较不同的模型,pyMC似乎是不错的选择.

import pymc

import numpy as np

import matplotlib.pyplot as plt; plt.ion()

x = np.arange(5,400,10)*1e3

# Parameters for gaussian

amp_true = 0.2

size_true = 1.8

ps_true = 0.1

# Gaussian function

gauss = lambda x,amp,size,ps: amp*np.exp(-1*(np.pi**2/(3600.*180.)*size*x)**2/(4.*np.log(2.)))+ps

f_true = gauss(x=x,amp=amp_true, size=size_true, ps=ps_true )

# add noise to the data points

noise = np.random.normal(size=len(x)) * .02

f = f_true + noise

f_error = np.ones_like(f_true)*0.05*f.max()

# define the model/function to be fitted.

def model(x, f):

amp = pymc.Uniform('amp', 0.05, 0.4, value= 0.15)

size = pymc.Uniform('size', 0.5, 2.5, value= 1.0)

ps = pymc.Normal('ps', 0.13, 40, value=0.15)

@pymc.deterministic(plot=False)

def gauss(x=x, amp=amp, size=size, ps=ps):

e = -1*(np.pi**2*size*x/(3600.*180.))**2/(4.*np.log(2.))

return amp*np.exp(e)+ps

y = pymc.Normal('y', mu=gauss, tau=1.0/f_error**2, value=f, observed=True)

return locals()

MDL = pymc.MCMC(model(x,f))

MDL.sample(1e4)

# extract and plot results

y_min = MDL.stats()['gauss']['quantiles'][2.5]

y_max = MDL.stats()['gauss']['quantiles'][97.5]

y_fit = MDL.stats()['gauss']['mean']

plt.plot(x,f_true,'b', marker='None', ls='-', lw=1, label='True')

plt.errorbar(x,f,yerr=f_error, color='r', marker='.', ls='None', label='Observed')

plt.plot(x,y_fit,'k', marker='+', ls='None', ms=5, mew=2, label='Fit')

plt.fill_between(x, y_min, y_max, color='0.5', alpha=0.5)

plt.legend()

我意识到,我可能需要运行更多的迭代,最后使用刻录和稀释.绘制数据和拟合的图在下面看到.

pymc.Matplot.plot(MDL)数字看起来像这样,显示出很好的峰值分布.这很好,对吧?

python运行mcmc为何老出错_python – 使用pyMCMC / pyMC对数据/观察结果设置非线性函数...相关推荐

  1. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  2. python运行mcmc为何老出错_Python可视化解析MCMC

    马尔可夫链可以定义为一个随机过程Y,其中t时刻各点的值只取决于t-1时刻的值.这意味着随机过程在t时刻有状态x的概率,给定它所有的过去状态,等于在t时刻有状态x的概率,给定它在t-1时刻的状态. 如果 ...

  3. python运行mcmc为何老出错_为什么我的metropolis算法(mcmc)的python实现这么慢?

    我回答了similar question previously.我在这里提到的很多东西(不计算每次迭代的当前可能性,预先计算随机创新等等)都可以在这里使用.在 实现的其他改进是不使用列表来存储示例.相 ...

  4. python class 是否存在某个变量_Python编程思想(29):使用type()函数定义类

    ----------支持作者请转发本文-----------李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要函 ...

  5. python爬取微博恶评_Python爬取新浪微博评论数据,了解一下?

    开发工具 **Python版本:**3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装 ...

  6. python空值填充为固定值_Python基础:numpy中空值怎样设置

    今天小编为大家带来在numpy中如何设置空值的办法,下面一起来看看吧. 我不明白为什么我会以0而不是不满足条件的空值或空值结尾... b是一个用0和1值填充的numpy数组,c是另一个完全填充的num ...

  7. python运行不了程序代码_python怎么运行代码程序

    展开全部 一.使用Python的解释器: 1.安装python一般都会有一个交互式32313133353236313431303231363533e78988e69d8331333433653964解 ...

  8. python运行不了程序代码_Python源码分析2 - 一个简单的Python程序的执行

    本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...

  9. python 运行cmd命令失败怎么办_python manage.py runserver命令在cmd命令框中可以正确执行,但是在pycharm的终端中运行就失败了!...

    源自:2-2 初始Django项目 python manage.py runserver命令在cmd命令框中可以正确执行,但是在pycharm的终端中运行就失败了! (venv) E:\python\ ...

最新文章

  1. php header setcookie,php中header头设置Cookie与内置setCookie的区别,和js对cookie操作
  2. fiddler设置https抓包
  3. 类的本质 Objective-C基础
  4. Jetty 9.1上的Java WebSockets(JSR-356)
  5. 错误处理方法 java_JAVA常见错误处理方法 和 JVM内存结构
  6. 再见了Spring!这个架构有点厉害,甚至干掉了Dubbo!
  7. Codeforces518 D. Ilya and Escalator
  8. 打造 AI 语音新标杆,英特尔与腾讯云小微创新共赢
  9. Linux管理员权限失败su Authentication failure
  10. 校园网一直是连接认证服务器无响应,校园网常见问题解决办法
  11. seo链轮应该怎么去做
  12. lan pci 联想开机_联想笔记本bios怎么设置 联想笔记本进入bios方法【详解】
  13. 外贸小公司如何做谷歌SEO优化
  14. spring boot儿童教育管理系统毕业设计源码281442
  15. oppo小布机器人_OPPO小布助手喜迎重大升级,你的私人全能管家现已上线!
  16. 整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?
  17. JS 数字,金额 用逗号 隔开(数字格式化)
  18. fps透视基础-3分钟快速定位矩阵基址-附3D坐标转屏幕坐标算法
  19. 根据先序序列与中序序列确定二叉树
  20. ECDH_SECP256R1 + X9.63 KDF-SHA256

热门文章

  1. 【总结整理】数据可视化
  2. 汇编语言-第四章 第一个程序
  3. Mysql show Status参数详解
  4. CodeFirst 的编程方式
  5. 移动端手势库Hammer.js学习
  6. zabbix 监控CDN带宽
  7. Oracle通过SSL方式连接AD服务器
  8. 工作总结 -- 插件篇 目录
  9. js代码收藏(zz)
  10. Java项目:基于SSM实现房屋租赁系统