不同长度和尺度的多个时间序列的规范化
假设我有几个随机的时间序列数据,存储在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)
我想要规范化这些数据的规模和长度,这样我就可以把它们可视化,并比较它们随时间的变化。为此,有一种方法可以这样做:
- 在规模上进行规范化:使用Z标准化。
- 在长度上进行规范化:把较短的时间序列拉伸(插值)到最长的那个长度,这样它们就都有相同的长度了。
动机:我主要想比较这些时间序列在它们的生命周期内的相对变化性(不管它们有多长)。
我该如何在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()]