時系列データの周期性・スペクトル解析GUIアプリ(TimeSeriesSpectralGUI_r009)を作成しました
はじめに
防災・水理水文分野では、雨量、水位、流量、潮位、地下水位、気温、WBGT、各種センサー値など、多くのデータが時系列として蓄積されています。これらのデータには、日周期・季節周期のような繰り返し変動だけでなく、降雨に対する河川水位の遅れ、上流から下流への伝播、潮位の影響、イベント時だけに現れる応答変化などが含まれることがあります。
一方で、時系列グラフを目視するだけでは、
- どの周期成分が強いのか
- 2つの時系列がどの周期帯で連動しているのか
- 片方の変化に対して、もう片方が何時間程度遅れて反応しているのか
- 洪水時や強雨時だけ応答特性が変わっていないか
といった点を定量的に把握するのは簡単ではありません。
TimeSeriesSpectralGUI_r009 は、CSV形式の時系列データを読み込み、周期性、2系列間の連動性、位相差、時間遅れをGUI上で確認するための解析支援アプリです。自己相関、パワースペクトル、クロススペクトル、コヒーレンス、移動窓解析、簡易ウェーブレット解析を組み合わせることで、時系列データの特徴を短時間で把握できるようにしています。
防災・水理水文分野では、例えば以下のような用途を想定しています。
- 雨量と河川水位・流量の応答遅れの確認
- 上流水位と下流水位の伝播時間の把握
- 地下水位と降雨の遅れ応答の確認
- 潮位と河川水位の周期的な関係の確認
- センサー異常、ノイズ、欠測影響の確認
- AIによる水位・流量予測モデルを作成する前の探索的データ解析
このGUIアプリは、解析条件の設定、グラフ表示、結果表、Markdownレポート出力までを一つの画面で扱えるようにしています。専門的な解析コードを書かなくても、CSVを読み込み、列を選択し、解析結果を図と表で確認できる点を重視しています。
このアプリでできること
主な機能は以下のとおりです。
- CSV時系列データの読み込み
- 欠測値補間、トレンド除去、標準化などの前処理
- 自己相関による周期性確認
- パワースペクトル解析
- クロススペクトル解析
- コヒーレンス、位相差、時間差の表示
- 移動窓解析による時間変化の確認
- 簡易Morletウェーブレット解析
- 解析結果表の表示
- 図付きMarkdownレポート出力
- 使用方法のMarkdown出力
また、このアプリでは、単独時系列の周期性だけでなく、2つの系列の関係を確認できます。
例えば、以下のような用途を想定しています。
- 上流水位と下流水位の伝播時間解析
- 雨量と河川水位の応答遅れ解析
- 潮位と河川水位の周期関係解析
- 地下水位と降雨の応答解析
- 気温とWBGTの周期性・遅れ確認
- センサー時系列の同期性や異常期間の確認
入力データ形式
入力はCSV形式です。1行目をヘッダーとして読み込みます。
time,upstream,downstream,rainfall
0,0.12,0.10,0.0
1,0.20,0.12,1.2
2,0.24,0.18,3.5
時間列は、数値または日時文字列に対応します。
数値の場合は経過時間、日時文字列の場合は先頭時刻からの経過時間として解析します。
基本的な操作手順
- ZIPファイルをこちらからダウンロードする
- ZIPを任意のフォルダに解凍する
- EXEファイルを実行する
- CSVファイルを読み込む
- 時間列、X系列、Y系列を指定する
- 解析条件を確認する
- 「解析実行」を押す
- 各タブで結果を確認する
- 必要に応じてMarkdownレポートを出力する
インストールは、ZIPを解凍してEXEファイルを実行するだけです。
TimeSeriesSpectralGUI_r009の起動時の画面

主なタブ
時系列
元データと前処理後の時系列を確認します。
欠測、異常値、変動タイミング、遅れの有無を目視で確認できます。
自己相関
時系列を時間方向にずらしたときの類似性を確認します。
24時間周期、12時間周期、数日スケールの周期などを探すときに使います。
パワースペクトル
時系列に含まれる周期成分の強さを確認します。
ピークがある周期は、卓越周期の候補になります。
クロススペクトル
X系列とY系列が、どの周期で連動しているかを確認します。
コヒーレンスが高い周期では、2系列が同じ周期成分で強く関係している可能性があります。
また、位相差を時間差に換算することで、Y系列がX系列に対してどの程度遅れているかを確認できます。
移動窓解析
一定期間の窓をずらしながら解析します。
これにより、全期間平均では見えにくい、イベント時だけの応答変化や時間遅れの変化を確認できます。
ウェーブレット解析
横軸を時間、縦軸を周期として、いつ・どの周期成分が強かったかをヒートマップで確認します。
非定常な時系列の解析に向いています。
レポート
解析結果をもとに、Markdown形式のレポートを自動生成します。
図付きレポートとして出力できるため、報告書作成やメモ整理に利用しやすいです。
使用方法
アプリの使用方法について詳しく説明しています。
注意点
スペクトル解析や位相差の解釈では、以下に注意が必要です。
- データ長が短いと長周期の解釈は不安定になります。
- コヒーレンスが低い周期での位相差や時間差は信頼しすぎない方が安全です。
- 時間差は周期ごとの目安であり、常に一定の固定遅れを意味するとは限りません。
- 豪雨や洪水などの非定常イベントでは、全期間解析だけでなく移動窓解析やウェーブレット解析も併用する方がよいです。
まとめ
TimeSeriesSpectralGUI_r009 は、時系列データの周期性、2系列間の連動性、時間遅れをGUI上で確認するためのプロトタイプです。
水理・水文、防災、環境計測、センサーデータ解析などで、時系列の特徴を短時間で把握したい場合に使いやすい構成を目指しました。
今後は、実データへの適用例、多地点の時系列データへの拡張、解析条件テンプレート、AIによる解釈支援などを拡張していくと、より実務向けのツールとして発展できそうです。
関連リンク
周期性・スペクトル解析を理解する際に参考になるリンクです。
基礎・Pythonライブラリ
-
NumPy: Discrete Fourier Transform
FFT、離散フーリエ変換、周波数軸の考え方を確認できます。 -
NumPy: numpy.fft.fft
PythonでFFTを実行する基本関数の公式ドキュメントです。 -
SciPy: scipy.signal.welch
パワースペクトル密度を推定するWelch法の公式ドキュメントです。 -
SciPy: Signal processing
スペクトル解析、フィルタ、相関、信号処理全般を扱うSciPyの公式ドキュメントです。 -
SciPy: scipy.signal.csd
2つの時系列間のクロススペクトル密度を計算する関数です。 -
SciPy: scipy.signal.coherence
2つの時系列が周波数ごとにどの程度連動しているかを確認する関数です。 -
Statsmodels: Time Series Analysis
自己相関、時系列モデル、統計的な時系列解析を学ぶ際に参考になります。
用語の理解
-
Wikipedia: フーリエ変換
時間領域から周波数領域へ変換する考え方の概要を確認できます。 -
Wikipedia: スペクトル密度
パワースペクトル密度の基本的な意味を確認できます。 -
Wikipedia: 自己相関
周期性や繰り返し構造を調べる基本的な考え方です。
防災・水理水文分野での関連データ
-
気象庁:過去の気象データ検索
雨量、気温、風速などの時系列データを取得できます。 -
水文水質データベース
国土交通省が提供する雨量、水位、流量、水質などの観測データを確認できます。 -
国土地理院:地理院タイル
地図背景、標高、地形情報などと時系列解析結果を組み合わせる際に参考になります。
以上です。
本アプリは、時系列データをただグラフで眺めるだけでなく、周期性、連動性、時間遅れを確認するための入口として利用できます。防災・水理水文分野では、観測データの理解、異常検知、AI予測モデルの前処理などに活用できる可能性があります。







