Skip to content
Taiyou edited this page Jan 26, 2026 · 3 revisions

delay-embedding

Delay embedding (Takens' embedding) for multidimensional time series data in Python.

Overview

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.git

クイックスタート

import 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)

Wiki ページ

理論的背景

Takens の埋め込み定理

Takens の定理 (1981) は、力学系の状態空間が十分な埋め込み次元 m と適切な遅延 τ を用いた遅延座標によって再構成できることを保証します。

d 次元の時系列 x(t) に対して、遅延埋め込みは以下のベクトルを構成します:

y(t) = [x(t), x(t+τ), x(t+2τ), ..., x(t+(m-1)τ)]

出力は d*m 次元のベクトルとなります。

パラメータ選択

  • 遅延 τ: 自己相互情報量 (AMI) の最初の極小値を選択。これにより、各遅延コピー間の冗長性を最小化しながら十分な相関を保持
  • 埋め込み次元 m: 偽最近傍法 (FNN) により、低次元空間での見かけの近傍が高次元に展開した際に「偽の近傍」でなくなる最小次元を選択

Clone this wiki locally