Python中时间序列中两个变量的相关性?
如果我有两个不同的数据集,它们是时间序列数据,有没有简单的方法可以在Python中找到这两个数据集之间的相关性呢?
比如说,像下面这样:
# [ (dateTimeObject, y, z) ... ]
x = [ (8:00am, 12, 8), (8:10am, 15, 10) .... ]
我该如何在Python中计算y和z的相关性呢?
5 个回答
38
这里有点慢半拍。pandas(http://github.com/wesm/pandas 和 pandas.sourceforge.net)可能是你最好的选择。我有点偏心,因为我是它的作者,不过:
In [7]: ts1
Out[7]:
2000-01-03 00:00:00 -0.945653010936
2000-01-04 00:00:00 0.759529904445
2000-01-05 00:00:00 0.177646448683
2000-01-06 00:00:00 0.579750822716
2000-01-07 00:00:00 -0.0752734982291
2000-01-10 00:00:00 0.138730447557
2000-01-11 00:00:00 -0.506961851495
In [8]: ts2
Out[8]:
2000-01-03 00:00:00 1.10436688823
2000-01-04 00:00:00 0.110075215713
2000-01-05 00:00:00 -0.372818939799
2000-01-06 00:00:00 -0.520443811368
2000-01-07 00:00:00 -0.455928700936
2000-01-10 00:00:00 1.49624355051
2000-01-11 00:00:00 -0.204383054598
In [9]: ts1.corr(ts2)
Out[9]: -0.34768587480980645
特别要注意的是,如果你的数据涉及不同的日期,它会计算成对的相关性。而且它还会自动排除那些缺失的数据(NaN值)!