专栏名称: 天文物理
宇宙、天文、物理、太空等科学知识及资讯的分享科普。宇宙传奇、生命之美、人类文明、科技之光!更多精彩内容见我们科学科普且智能的公众号:博科园
51好读  ›  专栏  ›  天文物理

暗能量模型的数据拟合分析

天文物理  · 公众号  · 物理  · 2017-10-25 23:00

正文

请到「今天看啥」查看全文



作者:冯朝君, 上海师范大学天体物理中心副研究员


暗能量,之所以冠之以暗,是因为无法看到它。那么,又怎么知道它是否存在呢?实际上,人们并不知道。人们所看到的仅仅是宇宙在加速膨胀,而暗能量恰恰能合理得解释这样一种现象。于是,人们猜测宇宙中也许存在一种不明能量组分,并称其为暗能量。

在暗能量的研究中,如何将模型与观测做比较是一个非常重要的问题。本文中,我们将介绍如何使用现成的工具来完成这一工作。在这里,我们只谈及pydm软件包的使用,而不涉及宇宙学的基本知识和统计学知识。因此,对有一定基础的研究生或者高年级本科生,这部分内容是非常容易理解的。如果你不太了解相关的背景知识,请参考【天文物理】中的其他文章。



下文提及软件下载方式:


请在微信公众号:天文物理

对话框回复:pydm (即可弹出下载地址)



目标和方法


首先,我们的目标是根据数据得到模型参数的最佳拟合值,误差,分布以及它们之间的等高图等等统计结果。为了实现这一目标,一般需要以下几个步骤:

1.建立暗能量模型:根据研究需要,建立模型并用代码实现。这里,我们假设所要研究的是LCDM模型。

2.配置程序运行参数:包括设置哪些参数需要拟合,选用什么拟合方法,运算结果的文件名,生成图片的格式等。

3.创建主程序:调用相关模块,完成数据拟合工作。这里,我们选用的是pydm程序包,下文中会仔细介绍这个包。


Pydm软件包简介


我们将工作在 python 语言的环境中, python 是一门非常简单,并且容易上手的编程语言。它的语法很简洁,初次接触它的人会觉得它有点像 mathematica 或者是 matlab ,使用起来毫不费力,非常适合科研工作,因此,有人称它为科学家的编程语言。最重要的是 python 是免费和开源的,可以为我们省下不少开销。关于 python ,不再多说什么,如果你不太熟悉它,就请去使用它吧,在用的过程中就会慢慢熟悉了。

Pydm 是一个用 python 写的程序包,你可以在本文最后找到它在 github 上的下载地址。 Pydm 包含了几个模 块: cosmodel residual mcmc 和一些小工具。在 cosmodel 模块中,有一个 CosModel 类,这是一个实现暗能量模型的模板。 它本身没有做任何事情,也没有实现任何功能,它只是告诉我们需要实现哪些方法,才能完成工作。 CosModel 就好比是一个接口,如果要实现我们自己的暗 能量模型,则需要去继承这个类。 Residual 这个模块非常重要,它计算了模型与数据比较后的残差,即某个物理量的模型的预言值与观测值之差。将来用它可以计算很多东西,比如似然函数,后验分布函数等等。 Mcmc 模块中有一个类 mcmcEngine ,这个类实现了许多函数,基本上有两大功能: 1 、找模型 参数的最佳拟合值与误差,它基于两种方法 Levenberg-Marquardt (LM) 搜索算法和 Markov chain Monte Carlo (MCMC) 模拟。 2 、根据模拟结果画图,比如参数分布的直方图,散点图,等高图,可以每个参数分别绘制,也可以把它们排列成三角形。


建立暗能量模型


现在,我们来构造暗能量模型。虽然这里我们只介绍了 LCDM 模型,但是,你会发现构造你自己的模型是非常简单的。

首先从 CosModel 继承一个类,我们把它命名为 lcdm 类,如下图所示:


在这里,我们添加了 LCDM 模型中的参数,一旦你生成了这个类的对象,就可以在整个对象中使用这些参数,这也就是为什么我们要选择类这样一个数据类型。当然,凡是支持面向对象编程的语言都可以实现类。

接下来,要书写相关的函数。首先是 Hubble 参数,见下图:


函数前面的双下划线表示该函数只能由这个类或者对象本人使用,如果是单下划线则代表它的子孙也可以继承使用。这个 __invHubble 函数的返回值是无量 纲的 Hubble 参数之倒数。由于它通常被用来作为积分运算中的被积函数,我们并不希望除这个类的以外程序来直接调用它,因此它被冠上了双下划线。另外,还要根据需要,书写一些涉及暗能量模型的函数,这里就不在再一一介绍了,大家直接看源文件就可以明白。

需要特别注意的是 paraUpdate 这个函数,见下图:


因为无论是 LM 也好,还是 MCMC 也好,都会尝试不同的暗能量模型参数,从而来计算某些量,例如似然函数的值。而这些量的值又依赖与暗能量模型本身,所以,在计算之前需要更新一下模型的参数。在这里,唯一要做的是把更新的参数 p 与暗能量模型中的参数对应起来。


配置参数


首先是任务的选择:是用 LM 算法,还是 MCMC 模拟,或者两者都用;是否需要画图,见下图:


这里需要说明的是,画图是根据 MCMC 模拟生成的样本,或者是根据所保存的样本(链文件)来绘制各种图形的。所以,请根据实际情况打开或者关闭 MCMCsim 这个开关。

接下来,选择需要使用的数据。在 1.0 版本的 pydm 程序包中,已经预设了超新星 JLA 数据集, CMB BAO 的部分数据,请参考文献【 1 】。由于 JLA 的数据比较大,如果需要使用,请到 JLA 的主页上下载,然后配置相对应的目录,如下:


你也可以选择使用其他的数据:


当然,如果你想添加自己的数据,也是很方便的,请参考下文中的如何添加数据。

如果你需要把拟合的结果保存到文件,可以在下面设置输出的目录和文件名。目前,pydm只支持文本文件,图形文件的输出和保存,以后会逐步增加对LaTex文件的支持。


接下来这一步,比较关键。这里的iterations不用多讲,就是MCMC模拟中,循环的次数;burnIn是画图的时候用的,即忽略掉之前的 burnIn次循环,这个数值的设置没有统一说法,因为谁也不太清楚整个模拟是从哪一次循环开始进入平衡状态,即产生的样本的确是由它所遵循的分布产生的。具体应用中,可以先假设一个值画个图看看,再做调整。


这里的nwalkers是这种蒙特卡罗模拟算法中特有的,代表walkers的数量,一般设个几百就可以了,设置太多会影响到达平衡的时间,也就是burnIn就要大了,因为在该算法中,下一步的参数是依赖于上一步中所有的walker,我们会在专门的文章中介绍这个算法。值得说明的是 iterations也不需要设置太多。

在画图的时候,有三种类型的图可以选择:三角图(triangle),即把需要画图的参数,两两组合在一起,形成一个三角形状的图形;两维的直方图(hist2d),并且配上等高线;以及所有参数的直方图(hist)。你可以根据需要来选择这些类型。


当然,关于画图还有一些其它的设置,比如颜色,光滑等等,自己试一下就可以了。在下文中,我们提供了一些画图实例,供你参考。



创建主程序


好了,现在万事俱备只欠东风了。准备充分了以后,主程序的创建其实就非常容易了。首先,需要告诉程序,你的模型参数有哪些,你可以把它们的名称写在 labelPara 这个变量中,如下:


注意,写的时候可以使用 Tex 的语法,这样画图时候的坐标轴就可以显示比如罗马字符、希腊字符、上下角标等等。另外最好不要有空格出现,如果非要有,请使用~代替,比如上图中的 '$\Delta M$'

接下来,要书写你使用的模型和数据,语法很简单,请参考上图。当然,参数的初始值、上下限也都需要设置,见下图所示:


这里有两个长度相同的列表变量,freePara和plotPara非常重要。顾名思义,freePara指出哪些参数需要拟合,需要的设置为1,不需要的 则设置为0;而plotPara则告诉程序哪些参数需要画图,需要的设置为1。需要注意的是,plotPara中设置为1的参数,在freePara中也 必须为1,也就是说绘制的参数必须是拟合的自由参数。

最后一步是创建一个mcmcEngine对象,它会帮助我们完成拟合、画图的工作,见下图:


好了,到这里为止,代码的编写工作就全部完成了,接下来就运行它,获取你的研究成果吧!


画图实例



当你把 pydm 软件包中的示例程序运行完,就可以得到下面几种图:

1.三角图( plotMode=0


2.两维直方图( plotMode=1

3.一维直方图( plotMode=2



添加数据



添加数据其实非常简单,只要继承 ResiCal 这个类,实现 residual 方法就可以了。这里的 _resGen 方法可以在子类中使用,它的功能主要是 Cholesky 分解。


作者:冯朝君

2009年获博士学位,师从李淼教授;

现为上海师范大学天体物理中心副研究员;

研究方向为宇宙学,对宇宙学中观测数据的处理有独到的见解,特别擅长数据分析,熟悉相关计算的软件程序;从事多年研究生的《宇宙学》课程的教学工作,其科技博文《 宇宙学还可以这么学 之基础篇 》具有广泛点击量。


上文提及软件下载方式:


请在微信公众号:天文物理

对话框回复:pydm (即可弹出下载地址)



于文末留言评论、建议、发表观点等



本文由“天文物理”载享推荐且有一定学习或参考价值、但其最终内容真实性自负。版权声明: “天文物理”刊载此文,仅为传递更多信息之目的,文章版权归原作者或媒体所有。 本平台文章内容来源于网络且广泛…如若无意侵犯了你的权益请及时联系邮箱:bokeyuan@vip.qq.com  天文物理 将及时完善著权信息或删除等。







请到「今天看啥」查看全文


推荐文章
爱手工  ·  今晚8点,爱多肉的你快来
8 年前
考研英语时事阅读  ·  【核心词汇】DAY 51
8 年前
酱子工厂  ·  刚刚发生的离婚大战! 谁见过?
7 年前