【发布时间】:2013-09-21 21:41:39
【问题描述】:
我正在尝试将伽玛分布拟合到我的数据点,我可以使用下面的代码来做到这一点。
import scipy.stats as ss
import numpy as np
dataPoints = np.arange(0,1000,0.2)
fit_alpha,fit_loc,fit_beta = ss.rv_continuous.fit(ss.gamma, dataPoints, floc=0)
我想使用许多这样小的伽马分布来重建一个更大的分布(更大的分布与这个问题无关,只是证明我为什么要拟合 cdf 而不是 pdf)。
为了实现这一点,我希望将累积分布(而不是 pdf)拟合到较小的分布数据。—更准确地说,我希望仅将数据拟合到累积分布的一部分强>。
例如,我只想拟合数据,直到累积概率函数(具有一定的比例和形状)达到 0.6。
对使用fit() 有什么想法吗?
【问题讨论】:
-
您能否从您的数据中构造一个经验 cdf 并使用例如
curve_fit、docs.scipy.org/doc/scipy/reference/generated/… 将其拟合到 gamma cdf? -
我认为您的
ss.gamma.fit(dataPoints, floc=0)不会产生任何有意义的结果,因为您的 dataPoints 不是来自伽马分布的样本。fit只能从一个样本点估计分布参数。如果您只想适应 cdf 的形状,请按照甄亚的建议。或者,将样本点拟合到伽马分布的截断版本。 -
@Zhenya 是的,我认为这是最后的手段,如果执行此操作的功能不可用,出于多种原因,一个是我想为此使用 MLE 而不是最小二乘.其次,伽马的 cdf 有点不重要(但当然可能)。第三,您知道我如何限制问题中提到的拟合吗?
-
en.wikipedia.org/wiki/Truncated_distribution 和
ppf是 scipy.stats.distributions 中调用的逆 cdf(分位数函数)。 -
正如@qarma 所指出的,将数据点拟合到
cdf并非没有问题,因为与传统的估计器相比,它增加了额外的语义。一个原因是对cdf估计器的拟合对于坐标变换(例如F(x) => F(-x),或多变量情况下的旋转)不是不变的,因为积分方向(例如x或-x)很重要. @Benjamin,您能否提供更多见解,查看cdfs 而不是pdfs 的动机是什么?
标签: python numpy scipy probability-density cdf