-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Taiyou edited this page Jan 26, 2026
·
3 revisions
Delay embedding (Takens' embedding) for multidimensional time series data in Python.
delay-embedding は、多次元時系列データに対して遅延埋め込み (delay embedding / Takens' embedding) を適用するための Python ライブラリです。
- 多次元時系列対応: 単変量・多変量どちらの時系列にも対応
- 逆変換: 埋め込み行列から元の時系列を復元(平均化による近似復元)
-
最適パラメータ推定:
- 最適遅延 τ: 自己相互情報量 (Auto Mutual Information) の最初の極小値
- 最適埋め込み次元 m: 偽最近傍法 (False Nearest Neighbours, FNN)
- NumPy ベース: 依存関係は NumPy のみ。軽量で高速
- giotto-tda と同一結果: 既存ライブラリとの数値比較で完全一致を確認済み
pip install git+https://github.com/Taiyou/delay-embedding.gitimport numpy as np
from delay_embedding import DelayEmbedding, optimal_delay, optimal_dimension
# 時系列データの生成
t = np.linspace(0, 10 * np.pi, 1000)
ts = np.column_stack([np.sin(t), np.cos(t)]) # 2次元時系列
# 最適パラメータの推定
tau = optimal_delay(ts) # 最適遅延
m = optimal_dimension(ts, delay=tau) # 最適埋め込み次元
# 遅延埋め込みの実行
emb = DelayEmbedding(dimension=m, delay=tau)
embedded = emb.transform(ts) # (T-(m-1)*tau, d*m)
# 逆変換(復元)
reconstructed = emb.inverse_transform(embedded, d=2)- API Reference — クラスと関数の詳細
- Verification — 動作検証と可視化結果
- Comparison with giotto-tda — 既存ライブラリとの比較
- Test Suite — テストスイートの説明
Takens の定理 (1981) は、力学系の状態空間が十分な埋め込み次元 m と適切な遅延 τ を用いた遅延座標によって再構成できることを保証します。
d 次元の時系列 x(t) に対して、遅延埋め込みは以下のベクトルを構成します:
y(t) = [x(t), x(t+τ), x(t+2τ), ..., x(t+(m-1)τ)]
出力は d*m 次元のベクトルとなります。
- 遅延 τ: 自己相互情報量 (AMI) の最初の極小値を選択。これにより、各遅延コピー間の冗長性を最小化しながら十分な相関を保持
- 埋め込み次元 m: 偽最近傍法 (FNN) により、低次元空間での見かけの近傍が高次元に展開した際に「偽の近傍」でなくなる最小次元を選択