【发布时间】:2015-06-16 21:55:36
【问题描述】:
我想将一些数据放入Pareto distribution using the scipy.stats 库中。我不确定问题是否是数字问题,所以为了安全起见;我从几千分钟开始测量自变量(“分钟”)的因变量(我们称它们为“推”)的值,此后每十分钟(除了在数据清理过程中删除的几个点) )。
例如
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
非常感谢您的指导,谢谢。
【问题讨论】:
-
pareto.fit()方法获得帕累托分布参数的估计值,该估计值最大化观察某些给定样本集的后验概率。因此,它只需要一个 single 输入数组,由要拟合的样本组成(其他 kwargs 控制拟合过程,例如通过指定分布参数的初始值)。从您的问题来看,您似乎确实想要建立某种关系f(minutes, pushes),这不是pareto.fit()所做的。你能澄清一下你想在这里做什么吗? -
@ali_m 是的,我正在尝试建立某种关系
f(minutes, pushes)。我认为这基本上是一个回归问题,但仅从观察数据图来看,它看起来像一个幂律,与帕累托分布非常相似。抱歉,如果这没有意义,我对此很陌生。 -
在这种情况下,您需要选择一些将因变量与自变量相关联的函数(即
pushes = f(minutes)),然后找到使“预测”和“预测”之间的均方误差最小的函数参数实际'推送每个给定的'分钟'值。您可以使用scipy.optimize.curve_fit或scipy.optimize.minimize。 -
@ali_m 成功了,非常感谢!!
标签: python numpy statistics scipy model-fitting