注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一粒浮尘

飘渺虚无

 
 
 

日志

 
 

笔记:CosmoMC中的GetDist内部细节  

2015-01-21 00:27:51|  分类: cosmology |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
虽然知道大可以放心地去使用这个程序,但是对其中一些细节的不了解,让我始终觉得不安。
今天又再次扎进去仔细读代码,总算搞明白了。
前些日子把自己写的一个做蒙特卡罗模拟的程序做了一些修改,可以输出与GetDist兼容的采样结果(之前使用GetDist的时候,都是设置chains_are_samples=F的),但是在测试的时候发现效果并不好,今天仔细看了GetDist的代码才弄明白为啥会这样了。

GetDist会事先处理一下读入的样本,因为第一列是概率,基本上就是正比于\exp(-\chi^2/2),在\chi^2非常大的时候,数值上来说概率就是0,而这些样本点会被GetDist给剔除掉,这样最后剩下的样本点的数目就非常的少,于是最后的统计的效果也会很不理想。
至此,我个人认为这是GetDist的一个小小的败笔,chains_are_samples的可选项应该增加一个,比如只额外利用第二列的chi^2,而不需要第一列,这样至少会在搜寻最佳拟合点的时候变得很方便,同时又不至于因为剔除0点的原因减少样本点的数目。


如果chains_are_samples=T,GetDist在计算平均值、方差的时候,会利用第一列,然而第一列里的概率往往是有问题的。实际的拟合中,chi^2一般都非常大,于是换算成概率之后,由于机器精度的限制,这些概率就都等于0了,这就等价于使得样本点的数据减少了许多,因此统计的结果会变得不理想。
  评论这张
 
阅读(318)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017