時系列分析を実務で行う際に、ほとんどのパターンでは、多変量を対象とした時系列の解析をすることが多いと思います。
自分自身、多変量時系列の解析を行う場面が非常に多くあるため、多変量の時系列データセットから部分時系列を作成する方法をまとめていきます。
切り出す部分時系列の設定
まず最初に全体のデータセットの全部の時系列が$T$個で$N$変数の時系列データを考えます。
ここで、window 幅 $w$で切り出すことを考えます。
![](https://disassemble-channel.com/wp-content/uploads/2023/05/time-series-part-1024x716.png)
全体のデータセットのうち、部分時系列は図上の枠で囲った箇所です。
最終的には、ウィンドウ幅$w$のsliding windowで区切った、多変量時系列は、3次元テンソル (3D Tensor)になり、テンソルの形式としては、(T-w+1, w, N) のテンソルとなります。
pythonで多変量時系列の部分時系列を切り出す
先ほどまでが前座です。ここからはpythonを用いて実際に部分時系列を取り出す実装をまとめていきます。
今回はサンプルのデータセットとして気象庁のデータセットを利用します。データセットの解説は下記の記事をご覧ください。
![](https://disassemble-channel.com/wp-content/uploads/2022/09/time-series-datasets.jpeg)
【Python】時系列分析で使えるデータセットまとめ(単変量・多変量)
時系列分析、やっていますでしょうか?時系列分析のテーマは幅広く、時系列予測や異常検知、因果推論など興味深いテーマが多数ありますよね。 今回は、時系列分析で利用できるデータセットを紹介します。特定のアルゴリズムを試すのに、 […]
まずデータセットをダウンロードします。
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
df = pd.read_csv("https://raw.githubusercontent.com/aweglteo/tokyo_weather_data/main/data.csv", parse_dates=True, index_col=0)
続いてデータをスライディングウィンドウで切り取っていきます。今回はwindow_sizeは20でやってみます。
window_size = 20
n_data = len(df) - window_size + 1
n_dim = df.shape[1]
data = np.zeros((n_data, window_size, n_dim))
for i in range(n_data):
data[i] = df[i:i+window_size]
データの形を確認してみます。狙い通りの形になることがわかりました。
data.shape
# => (1808, 20, 6)