利用Scikit和Pandas研究两个时间序列的关系

2024-05-29 04:50:52 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个假设的时间序列数据,一个是降雨,另一个是海洋表面温度。在

Rainfall Time Series:
2001-12-31    25 mm
2002-12-31    50 mm
2003-12-31    75 mm
2004-12-31    50 mm
2005-12-31    25 mm
2006-12-31    10 mm
2007-12-31    6 mm
2008-12-31    8 mm
2009-12-31    10 mm
2010-12-31    12 mm
2011-12-31   20 mm
2012-12-31    75 mm

Rainfall Time Series:
2001-12-31   36 (Degrees Celsius)
2002-12-31   37 (Degrees Celsius)
2003-12-31   38 (Degrees Celsius)
2004-12-31   37 (Degrees Celsius)
2005-12-31   36 (Degrees Celsius)
2006-12-31   34 (Degrees Celsius)
2007-12-31   32 (Degrees Celsius)
2008-12-31   33 (Degrees Celsius)
2009-12-31   34 (Degrees Celsius)
2010-12-31   35 (Degrees Celsius)
2011-12-31   35.9 (Degrees Celsius)
2012-12-31    38 (Degrees Celsius)

我想回答这些问题:

^{pr2}$

我们知道降雨量和海洋表面温度是相关的,不是虚假的(不像航空乘客和大米产量的时间序列例子),我读过两个时间序列的近似熵和回归,我甚至读到ARIMA也是确定两个时间序列数据之间关系的好方法,但是我在python中使用scikit或pandas还没有找到任何好的详细示例。我更喜欢使用熵,但我不知道它是否能回答问题2。我还想问一下python中是否有置换分布集群,这似乎是解决问题1的一个有趣的方法。谢谢你的帮助!在


Tags: 数据方法航空time时间序列seriesmm
1条回答
网友
1楼 · 发布于 2024-05-29 04:50:52

只要把它们画成一个散点图,你就可以看出它们之间的关系:

1)这两个系列有何关联?(例如使用UnivariateSpline,只需使用您喜欢的任何东西)

    x = 25,50,75,50,25,10,6,8,10,12,20,75
    y = 36,37,38,37,36,34,32,33,34,35,35.9,38

    import numpy as np
    from scipy import interpolate
    f = interpolate.UnivariateSpline(x, y)
    xo = np.linspace(min(x),max(x),1000)
    yo = f(xo)

    df = np.diff(yo) / np.diff(xo)
    print(df.shape,xo.shape)
    import matplotlib.pyplot as plt
    plt.scatter(x,y)
    plt.plot(xo,yo)
    plt.show()

2)如何改变?对数据使用函数“拟合”的一阶导数。在

^{pr2}$

相关问题 更多 >

    热门问题