首页 文章

如果给出具有scipy / numpy的拟合曲线,我怎样才能最大化直方图的泊松似然?

提问于
浏览
1

我在python / numpy / scipy环境中有数据需要适合概率密度函数 . 一种方法是创建数据的直方图,然后将曲线拟合到此直方图 . 方法 scipy.optimize.leastsq 通过最小化 (y - f(x))**2 的总和来实现这一点,其中(x,y)在这种情况下将是直方图的bin中心和bin内容 .

在统计学术语中,该最小二乘法通过从围绕该仓位置处的拟合函数的高斯中采样每个仓数来最大化获得该直方图的可能性 . 您可以很容易地看到这一点:每个术语 (y-f(x))**2 都是 -log(gauss(y|mean=f(x))) ,并且总和是将所有二进制数的高斯可能性相乘的对数 .

那看着,每个bin计数都是Poissonian过程的结果,所以我想最小化(产品在所有bin(x,y)上的对数) poisson(y|mean=f(x)) . 对于f(x)的大值,Poissonian非常接近高斯分布,但是如果我的直方图没有那么好的统计量,那么差异将是相关的并且影响拟合 .

1 回答

  • 0

    如果我理解正确,您有数据并想要查看某些概率分布是否适合您的数据 .

    好吧,如果是这样 - 你需要QQ-Plot . 如果是这种情况,那么看看this StackOverflow问答 . 然而,这是关于正态分布函数,并且您需要泊松分布函数的代码 . 您需要做的就是根据泊松随机函数创建一些随机数据,并根据它测试样本 . Here你可以找到一个用于泊松分布函数的QQ图的例子 . 这是这个网站的代码:

    #! /usr/bin/env python
    
      from pylab import *
    
      p = poisson(lam=10, size=4000)
      m = mean(p)
      s = std(p)
      n = normal(loc=m, scale=s, size=p.shape)
    
      a = m-4*s
      b = m+4*s
    
      figure()
      plot(sort(n), sort(p), 'o', color='0.85')
      plot([a,b], [a,b], 'k-')
      xlim(a,b)
      ylim(a,b)
      xlabel('Normal Distribution')
      ylabel('Poisson Distribution with $\lambda=10$')
      grid(True)
      savefig('qq.pdf')
      show()
    

相关问题