我正在尝试使用statsmodels将泊松分布拟合到我的数据中,但是我对得到的结果以及如何使用该库感到困惑。
我的真实数据将会是一系列数字,我认为应该能够将其描述为具有泊松分布加上一些异常值,因此最终我想对数据进行稳健拟合。
然而,为了测试目的,我只是使用scipy.stats.poisson创建了一个数据集
samp = scipy.stats.poisson.rvs(4,size=200)
所以我认为,要使用statsmodels来适配这个模型,只需要将一个常数“endog”加入即可。
res = sm.Poisson(samp,np.ones_like(samp)).fit()
打印res.summary()。
Poisson Regression Results
==============================================================================
Dep. Variable: y No. Observations: 200
Model: Poisson Df Residuals: 199
Method: MLE Df Model: 0
Date: Fri, 27 Jun 2014 Pseudo R-squ.: 0.000
Time: 14:28:29 Log-Likelihood: -404.37
converged: True LL-Null: -404.37
LLR p-value: nan
==============================================================================
coef std err z P>|z| [95.0% Conf. Int.]
------------------------------------------------------------------------------
const 1.3938 0.035 39.569 0.000 1.325 1.463
==============================================================================
好的,看起来不对,但如果我这样做
res.predict()
我得到一个数组为4.03(这是这个测试样本的平均值)。所以基本上,首先我非常困惑如何解释statsmodel给出的结果,其次如果我对分布的鲁棒参数估计感兴趣而不是拟合趋势,那么我应该做完全不同的事情,但我应该如何去做呢?
编辑
我真的应该提供更多细节来回答我的第二个问题。我有一个事件,在开始时间之后在随机时间发生。当我为许多事件绘制延迟时间的直方图时,我发现分布看起来像是一个缩放后的泊松分布加上几个异常值点,通常是由于底层系统中的问题导致的。因此,我只想找到数据集的预期时间延迟,不包括异常值。如果没有异常值,我可以简单地找到平均时间。我想我可以手动排除它们,但我认为我可以找到更精确的方法。 编辑 经过进一步思考,我将考虑其他分布,而不是坚持使用泊松分布,并且我的问题的细节可能会分散注意力,但我仍然将它们留在这里。