不同长度和尺度的多个时间序列的规范化

4 投票
1 回答
5506 浏览
提问于 2025-04-18 15:30

假设我有几个随机的时间序列数据,存储在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标准化
  2. 长度上进行规范化:把较短的时间序列拉伸(插值)到最长的那个长度,这样它们就都有相同的长度了。

动机:我主要想比较这些时间序列在它们的生命周期内的相对变化性(不管它们有多长)。

我该如何在numpy中实现这个呢?

1 个回答

8
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()]

数据图

撰写回答