私は時系列である2つの異なるデータセットを持っている場合、Pythonの2つのセット間の相関を見つける簡単な方法はありますか?私はPythonでyおよびzの相関を得る可能性がありますどのようにPythonの時系列における2つの変数の相関?
# [ (dateTimeObject, y, z) ... ]
x = [ (8:00am, 12, 8), (8:10am, 15, 10) .... ]
:と例えば
?
私は時系列である2つの異なるデータセットを持っている場合、Pythonの2つのセット間の相関を見つける簡単な方法はありますか?私はPythonでyおよびzの相関を得る可能性がありますどのようにPythonの時系列における2つの変数の相関?
# [ (dateTimeObject, y, z) ... ]
x = [ (8:00am, 12, 8), (8:10am, 15, 10) .... ]
:と例えば
?
少し遅いです。 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値も自動的に除外されます。
Scipyは相関関数とstatisticsモジュールを持ってお勧めします。
from scipy import stats
# Y and Z are numpy arrays or lists of variables
stats.pearsonr(Y, Z)
これは、共分散行列または相関係数によって行うことができます。 http://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.htmlとhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.htmlはこれに関するドキュメント関数であり、前者はそれを使用するサンプルも付属しています(corrcoefの使用法は非常に似ています)。
>>> x = [ (None, 12, 8), (None, 15, 10), (None, 10, 6) ]
>>> data = numpy.array([[e[1] for e in x], [e[2] for e in x]])
>>> numpy.corrcoef(data)
array([[ 1. , 0.99339927],
[ 0.99339927, 1. ]])
使用numpyの:ここに取り込みに対する
from numpy import *
v = [ ('k', 1, 2), ('l', 2, 4), ('m', 13, 9) ]
corrcoef([ a[1] for a in v ], [ a[2] for a in v ])[0,1]
NumPyまたはSciPy。 –