我有一个简单的顽固阵列,每期有一个数据点。事情是这样的:

>>> import numpy as np
>>> from datetime import date
>>> from datetime import date
>>> x = np.array( [(date(2008,3,5), 4800 ), (date(2008,3,15), 4000 ), (date(2008,3,
20), 3500 ), (date(2008,4,5), 3000 ) ] )

是有简单的方法来推断数据点的未来:日期(2008,5,1),日期(2008年,5,20)等?我理解这是可以做到的数学算法。但我在这里寻求对于一些低挂果实。实际上我喜欢什么顽固.linalg.解决,但是它看起来并不适用于外推。也许我是绝对错误的。

实际上要更具体的我建立一个燃烧图(xp期):'x=的日期和y=量的工作要做',所以我已经得到了已完成的冲刺,我想想象如何在今后冲刺阶段将去如果目前的情况仍然存在。最后,我想预测的释放日期。因此质量的工作要做'是它总是向下在燃尽的图表。我也想要得到的外推释放日期:新当量为零。

这一切都是为了表示,开发团队如何的东西去。在严谨也不是那么重要的在这里:)的动机,开发团队是主要因素。这意味着我绝对没有非常近似推断技术。

有帮助吗?

解决方案

这一切都太容易推断产生的垃圾;尝试这个。 许多不同的推断当然是可能的; 一些产生明显的垃圾,一些非显而易见的垃圾,许多人不明确的。

“替代文字”

""" extrapolate y,m,d data with scipy UnivariateSpline """
import numpy as np
from scipy.interpolate import UnivariateSpline
    # pydoc scipy.interpolate.UnivariateSpline -- fitpack, unclear
from datetime import date
from pylab import *  # ipython -pylab

__version__ = "denis 23oct"


def daynumber( y,m,d ):
    """ 2005,1,1 -> 0  2006,1,1 -> 365 ... """
    return date( y,m,d ).toordinal() - date( 2005,1,1 ).toordinal()

days, values = np.array([
    (daynumber(2005,1,1), 1.2 ),
    (daynumber(2005,4,1), 1.8 ),
    (daynumber(2005,9,1), 5.3 ),
    (daynumber(2005,10,1), 5.3 )
    ]).T
dayswanted = np.array([ daynumber( year, month, 1 )
        for year in range( 2005, 2006+1 )
        for month in range( 1, 12+1 )])

np.set_printoptions( 1 )  # .1f
print "days:", days
print "values:", values
print "dayswanted:", dayswanted

title( "extrapolation with scipy.interpolate.UnivariateSpline" )
plot( days, values, "o" )
for k in (1,2,3):  # line parabola cubicspline
    extrapolator = UnivariateSpline( days, values, k=k )
    y = extrapolator( dayswanted )
    label = "k=%d" % k
    print label, y
    plot( dayswanted, y, label=label  )  # pylab

legend( loc="lower left" )
grid(True)
savefig( "extrapolate-UnivariateSpline.png", dpi=50 )
show()

补充:一个 SciPy的票说, “中的的FITPACK类的行为 scipy.interpolate比文档更加复杂会导致人们相信” - IMHO太其他软件文档的事实。

其他提示

一个简单的方式这样做的推断是用内插式或样条:有许多程序在这 这.插入, ,而且有相当易于使用(只给予第(x,y)点,你会得到一个功能[可调用的,正是]).

现在,如已经指出,在这个螺纹,你不能指望外推法总是有意义的(尤其是当你远离你的数据点),如果你没有一个模型数据。然而,我鼓励你玩的多项式或样插值从这.插入以看见结果是否获得适合你。

在数学模型在这种情况下要走的路。举例来说,如果你只有三个数据点,就可以对这一趋势将如何展开绝对没有指示(可能是任何两个抛物线的。)

获取一些统计课程,并尝试实施的算法。尝试维基

您必须swpecify在其功能,您需要推断。 比你可以使用回归 http://en.wikipedia.org/wiki/Regression_analysis 找到功能paratmeters。和未来的推断此。

例如: 翻译日期,x值,并使用第一天为x = 0有关问题的值建议立即进行删除是aproximatly (0,1.2),(400,1.8),(900,5.3)

现在你决定,他点上类型的函数谎言 A + B X + C X ^ 2

使用至少squers的方法找到一个,b和c http://en.wikipedia.org/wiki/Linear_least_squares (我将提供完整的源,但后来beacuase我没有时间为这个)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top