2013-05-08 63 views

回答

7

简短回答:因为没有人为它写过代码,或者甚至尝试过,据我所知。

较长的答案:我不知道我们可以用通用最大似然方法得到离散模型还有多远,因为它适用于连续分布,它适用于许多但不是全部。

大多数离散分布对参数强大的限制,很可能其中大部分都需要特定的分配

>>> [(f, getattr(stats, f).shapes) for f in dir(stats) if isinstance(getattr(stats, f), stats.distributions.rv_discrete)] 
[('bernoulli', 'pr'), ('binom', 'n, pr'), ('boltzmann', 'lamda, N'), 
('dlaplace', 'a'), ('geom', 'pr'), ('hypergeom', 'M, n, N'), 
('logser', 'pr'), ('nbinom', 'n, pr'), ('planck', 'lamda'), 
('poisson', 'mu'), ('randint', 'min, max'), ('skellam', 'mu1,mu2'), 
('zipf', 'a')] 

statsmodels是提供一些离散模型的拟合方法其中的参数也可以取决于一些解释变量。其中大多数类似广义线性模型,需要一个链接函数来将参数的值限制为有效范围,例如概率的区间(0,1),或者计数模型中的参数的值大于零。

然后,二项式中的“n”参数和其他一些参数需要是整数,这使得不可能使用scipy.optimize中通常的连续最小值。

一个好的解决方案是有人可以添加分布特定的拟合方法,以便我们至少有更容易的方法。

+0

我明白了。感谢您的有用答案。如果我可以拒绝或不拒绝Zipf作为管理某些数据的候选分布,那么我的问题就会向前推进,所以我可能不得不自己去写这篇文章。有趣的是,Mathematica对于能够为离散分布找到MLE有很好的印象。但我相信M'matica函数往往会有很多特殊情况被硬编码到它们中。 – 2013-05-09 22:00:51

+0

Statsmodels有一个通用的最大可能性类,在某些情况下可能有用,请参阅我的答案https://groups.google.com/d/msg/pystatsmodels/GZ8kXoFitn0/9ve8GVOwl1kJ MLE可能适用于Zipf(我从未看过它)http://stats.stackexchange.com/questions/6780/how-to-calculate-zipfs-law-coefficient-from-a-set-of-top-frequencies – user333700 2013-05-09 23:50:51