如何创建数据集以在scipy统计数据中拟合函数?

时间:2015-04-11 04:05:54

标签: python numpy statistics scipy model-fitting

我想将一些数据放到Pareto distribution using the scipy.stats库中。我不确定问题是否可能是数字,所以只是为了安全;我为自变量('分钟')测量了因变量(​​让我们称之为'推')的值,从几千分钟开始,每隔十分钟一次(除了在数据清理过程中删除的几个点) )。

e.g。

2780.0 362.0

2800.0 376.0

2810.0 393.0 ...

我能找到的最好的信息就像是

from scipy.stats import pareto
result = pareto.fit(data)

我不知道在这种情况下如何格式化这些数据。我尝试了以下但都导致错误。

result = pareto.fit(zip(minutes, pushes))
result = pareto.fit(pushes)

错误通常是

Warning: invalid value encountered in double_scalars
非常感谢一些指导,谢谢。

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中所提到的,pareto.fit()并不是你想要的。

scipy.stats中连续分布的.fit() methods获得分布参数的估计值,以最大化观察某些特定样本值集的概率。因此,pareto.fit()只需要一个单个数组参数,其中包含要使分布适合的样本。其他关键字参数控制拟合过程的各个方面,例如通过指定分布参数的初始值。

实际试图做的是使某个独立变量x与某些因变量y之间的关系适合,即

y_fit = f(x, params)

您需要做的是:

  1. f选择一些功能表单。根据您的描述,yx的图形类似于probability density function for a Pareto distribution,因此可能这个或衰减的指数可能是合适的。

  2. 找到最小化paramsy之间差异度量的y_fit集(通常是差值的平方和)。您可以使用scipy.optimize.curve_fitscipy.optimize.minimize执行此操作。