この記事は Qiita Advent Calendar 2025 - 時系列データ の8日目の記事です。
時系列データでも使える新しい相関計算方法の提案を紹介します。
はじめに
特許を取得した理論について数式を使ってちゃんとまとめておこうと思います。
相関と似た処理を使いパターン抽出と称しています。
今の所、インパルス的なノイズに強い相関処理だと思っていただけるとよいと思います。
応用例の詳しい所は学会で発表していきたいと思いますが、誰か使ってくれないかなというのと自分の整理の為にブログ化しておきたいと思います。
統計や情報理論詳しい人に興味を持ってもらえたら嬉しいです。
基底抽出割算相関最小法について
数式表記苦手なので表記わかりづらいかもしれませんが。
$$
\begin{aligned}
b &= (b_0,b_,...,b_{l-1}) \\
x &= (x_1,x_2,x_3,...,x_m) \\
I(𝑏) &= \{ 𝑘 ∈ {0,1,2,3,…,l-1}|𝑏_𝑘 \neq 0 \} \\
C_i(x,b) &= \begin{cases}
min(\frac{x_k(x_i,x_{i+1},...,x_{i+l-1})(k \in I(b))}{b_k(k \in I(b))}) & min(\frac{x_k(x_i,x_{i+1},...,x_{i+l-1})(k \in I(b))}{b_k(k \in I(b))}) > 0 \\
max(\frac{x_k(x_i,x_{i+1},...,x_{i+l-1})(k \in I(b))}{b_k(k \in I(b))}) & max(\frac{x_k(x_i,x_{i+1},...,x_{i+l-1})(k \in I(b))}{b_k(k \in I(b))}) < 0 \\
0 & else
\end{cases}
\end{aligned}
$$
データと基底を基底の0以外の場所で割り算をして最小値(負の値をとる場合は最大値)をとる計算となります。
この計算を行う事によって基底とデータの類似度が計算できます。
類似度と言うより、基底の成分がどの程度含まれてるか計算すると言った方が正しいですが。
言葉にすると難しいのですが、割り算してその最小値を見る事によって、どの程度成分が含まれるか計算しています。
イメージ図
※パターン抽出の記事の図と同じです。
バイナリに限定した場合
通信多重化に応用する事を考えバイナリデータに対しての数式も書いておきます。
この手法の相関で直交している組み合わせを考えると、通信の多重化が可能です。
$$
\begin{aligned}
b &= (b_1,b_2,...,b_l) \\
x &= (x_1,x_2,x_3,...,x_m) \\
I(𝑏) &= \{ 𝑘 ∈ {1,2,3,…,l}|𝑏_𝑘 \neq 0 \} \\
C_i(x,b) &= \underset{k \in I(b)}{\land} x_k
\end{aligned}
$$
応用例
類似度の計算
そのまま基底抽出割算相関最小法の相関を利用する。
※サチュレーションしているデータだと常に高くでるので、類似度としては使いにくい可能性が高いです。基本的には、パターン抽出の手法です。
周期性の計算
基底をb=(1,1)とした時に全データの相関値の平均を周期1の周期性の値とする。
基底をb=(1,0,1)とした時に全データの相関値の平均を周期2の周期性の値とする。
基底をb=(1,0,0,1)とした時に全データの相関値の平均を周期3の周期性の値とする。
と繰り返していき周期性を計算する事が可能となる。
ベアリングの振動解析に応用する事ができる。
連続性の計算
基底をb=(1,1)とした時に全データの相関値の平均を連続性1の周期性の値とする。
基底をb=(1,1,1)とした時に全データの相関値の平均を連続性2の周期性の値とする。
基底をb=(1,1,1,1)とした時に全データの相関値の平均を連続性3の周期性の値とする。
と繰り返していき周期性を計算する事が可能となる。
応用例は考えていない。
通信の多重化への応用
バイナリデータに応用し直交する基底を見つけることにより多重化を行う。
関連記事
パターン抽出(と周期性解析)の特許について
通信多重化の特許について
Github
新しい周期性解析手法を使った気温差の解析
明日の時系列データ Advent Calendarは @pigooosuke さんの 時系列基盤モデルの現在(2025/12) です!
