标准化了几个不同长度和规模的时间序列

时间:2014-07-31 13:20:06

标签: python numpy matplotlib scipy

假设我在numpy中有几个随机时间序列,例如:

my_time_series = dict()
for L in range(20,50,10):
   scaling = np.random.randint(100)
   my_time_series[L] = scaling * np.random.rand(L) + scaling * np.random.rand(L)

我想规范化他们的比例和长度,以便我可以将它们可视化并比较一段时间内的变化。为此,一种方法如下:

  1. 比例中的规范化:应用Z-standarization
  2. 长度中的标准化:将较短的时间序列拉伸(插值)到最长的时间序列,使它们都具有相同的长度。
  3. 动机:我最感兴趣的是比较时间序列的相对变异性与其生命周期(无论它们有多长)。

    我怎么能在numpy中做到这一点?

1 个答案:

答案 0 :(得分:4)

y_normed = {k: (data-np.mean(data))/np.std(data) 
            for k, data in my_time_series.items()}

maxlength = max(my_time_series)
x_interped = {k: np.interp(np.linspace(0, 1, maxlength), 
                           np.linspace(0, 1, k), data) 
              for k, data in y_normed.items()}

[plot(data) for data in x_interped.values()]

plot of data