我在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非常接近高斯分布,但是如果我的直方图没有那么好的统计数据,那么这种差异将是相关的,并影响拟合。在
如果我理解正确,你有数据,想看看概率分布是否适合你的数据。在
如果是这样的话-你需要QQ-Plot。如果是这样,那么看看thisStackOverflow问题答案。但是,这是关于正态分布函数的,你需要一个泊松分布函数的代码。你需要做的就是根据Poisson随机函数创建一些随机数据,并根据它测试样本。Here你可以找到一个泊松分布函数的QQ图的例子。以下是来自此网站的代码:
相关问题 更多 >
编程相关推荐