我正在尝试使用statsmodels将泊松分布拟合到我的数据中,但我对我得到的结果以及如何使用该库感到困惑.
我的真实数据将是一系列数字,我认为我应该能够将其描述为具有泊松分布和一些异常值,因此最终我希望对数据进行稳健拟合.
但是出于测试目的,我只使用scipy.stats.poisson创建数据集
samp = scipy.stats.poisson.rvs(4,size=200)
Run Code Online (Sandbox Code Playgroud)
所以为了适应这种使用statsmodels我认为我只需要一个恒定的'endog'
res = sm.Poisson(samp,np.ones_like(samp)).fit()
Run Code Online (Sandbox Code Playgroud)
print 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
==============================================================================
Run Code Online (Sandbox Code Playgroud)
好吧,这看起来不对,但如果我这样做
res.predict()
Run Code Online (Sandbox Code Playgroud)
我得到一个4.03的数组(这是该测试样本的平均值).基本上,首先我非常困惑如何从statsmodel解释这个结果,其次我应该做一些完全不同的事情,如果我对分布的稳健参数估计感兴趣而不是拟合趋势,但我该怎么做呢?
编辑 我应该给出更多细节,以回答我问题的第二部分.
我有一个事件发生在一个开始时间后的随机时间.当我绘制许多事件的延迟时间的直方图时,我看到分布看起来像一个缩放的泊松分布加上几个异常点,这些异常点通常是由我的底层系统中的问题引起的.所以我只是想找到数据集的预期时间延迟,不包括异常值.如果不是异常值,我可以简单地找到平均时间.我想我可以手动排除它们,但我认为我可以找到更严格的东西.
编辑 在进一步的反思中,我将考虑其他发行版,而不是坚持使用Poissonion,我的问题的细节可能会分散原始问题,但无论如何我都把它们留在了这里.
我正在尝试使用sql模块执行查询.
var from string = "2015-03-01 00:00:00"
rows, err := db.Query("select time, val from table where " +
"time >= extract(epoch from timestamp with time zone $1)::int4 " +
"and time < extract(epoch from timestamp with time zone '2015-03-01 00:15:10')::int4 " +
"order by time asc",from)
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误
pq: syntax error at or near "$1"
Run Code Online (Sandbox Code Playgroud)
如果我直接输入epoch值,那么查询将起作用,并且当我在没有任何变量的情况下尝试它时查询工作,即查询硬编码.那么问题是什么?