计算两个时间序列之间的滞后作为时间的函数



亲爱的科学程序员:

我有两个不同的时间序列,它们都在同一时间尺度上。这两个系列看起来很相似,但它们彼此滞后。滞后时间是不规则的。

我正在寻找一种python或python包的方法来计算两个时间序列之间的延迟作为时间的函数。也就是说,每次得到时间序列之间的滞后。我将非常感谢任何帮助。下面是一段时间序列,如果有用的话:

[edit]滞后是时间序列中相同值之间的最小时间差。它有时间单位。例如,余弦函数和正弦函数之间的滞后是pi/2。

time,series1,series2
0,0.358436019,0.3188888067
100,0.4200473934,0.2975307174
200,0.4816587678,0.2761726281
300,0.5432701422,0.2548145388
400,0.6048815166,0.3126306018
500,0.6038827258,0.3934880929
600,0.519889065,0.474345584
700,0.4358954041,0.5552030751
800,0.3519017433,0.6360605662
900,0.2679080824,0.5366397394
1000,0.1839144216,0.4279857816
1100,0.1105732484,0.3193318238
1200,0.1153503185,0.210677866
1300,0.1201273885,0.1104286187
1400,0.1249044586,0.1162674576
1500,0.1296815287,0.1221062965
1600,0.1344585987,0.1279451354
1700,0.1392356688,0.1337839744
1800,0.1842811502,0.1396228133
1900,0.2369968051,0.197331632
2000,0.2897124601,0.2586226391

将CSV读入Pandas DataFrame,然后可以简单地减去。

import pandas as pd
df = pd.read_csv('test.csv')
df['lag'] = df['series1'] - df['series2']
print(df)

输出:

time   series1   series2       lag
0      0  0.358436  0.318889  0.039547
1    100  0.420047  0.297531  0.122517
2    200  0.481659  0.276173  0.205486
3    300  0.543270  0.254815  0.288456
4    400  0.604882  0.312631  0.292251
5    500  0.603883  0.393488  0.210395
6    600  0.519889  0.474346  0.045543
7    700  0.435895  0.555203 -0.119308
8    800  0.351902  0.636061 -0.284159
9    900  0.267908  0.536640 -0.268732
10  1000  0.183914  0.427986 -0.244071
11  1100  0.110573  0.319332 -0.208759
12  1200  0.115350  0.210678 -0.095328
13  1300  0.120127  0.110429  0.009699
14  1400  0.124904  0.116267  0.008637
15  1500  0.129682  0.122106  0.007575
16  1600  0.134459  0.127945  0.006513
17  1700  0.139236  0.133784  0.005452
18  1800  0.184281  0.139623  0.044658
19  1900  0.236997  0.197332  0.039665
20  2000  0.289712  0.258623  0.031090

这也使得获得平均延迟变得容易,除此之外:

>>> df['lag'].mean()
0.006529929428571425

最新更新