MannKS — Mann-Kendall・Senスロープによる堅牢なトレンド解析
概要
MannKSは、気象、環境、水文学、経済などの時系列データに対して、トレンドの有無とその大きさを頑健に推定するためのPythonライブラリです。核となる手法は非パラメトリックなMann–Kendall検定で、トレンドの有意性を評価し、Senの中央値傾きで変化率(スロープ)を推定します。欠損値や外れ値の影響を受けにくい設計で、Pandas SeriesやNumPy配列をそのまま使えるAPIを提供。さらに可視化サポートやサンプルスクリプトが付属し、実務や研究での導入が容易です(約300字)。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 8
- ファイル数: 8
- メインの言語: Python
主な特徴
- 非パラメトリックなMann–Kendall検定によるトレンド有意性判定
- Senの中央値傾きでトレンドの大きさ(スロープ)を推定
- Pandas/NumPy互換の使いやすいAPIとMatplotlibによる可視化サポート
- 欠損値・外れ値に強く、実データ向けの前処理を想定
技術的なポイント
MannKSはMann–Kendall検定(トレンドの有無を評価する順位ベースの非パラメトリック検定)とSen’s slope(全てのデータ点対の傾きを計算し、その中央値をトレンド量として採用)を中心に実装されています。これらの手法は正規分布や線形モデルの仮定に依存しないため、分布歪みや外れ値が多い環境科学や気候データ解析で有用です。実装面ではNumPyでベクトル化された演算により対比較の計算を効率化し、Pandas Seriesを受け取って欠損値(NaN)を自動的に無視する仕様です。p値や統計量の計算にはScipyの関数(順位検定や正規近似)を活用し、必要に応じて小標本補正やtie(同値)の補正も行える設計になっています。さらに、出力としては検定統計量(S値、Z値)、p値、Senのスロープ推定値、信頼区間などを返し、Matplotlibを通じて時系列と推定トレンド線を重ねた可視化が可能です。パッケージはpipで配布され、依存関係はPython 3.7+、NumPy、Pandas、SciPy、Matplotlibと明示されているため、既存のデータ解析環境へ容易に統合できます。サンプルやExamplesフォルダに具体的な利用例があり、時期別(季節性を考慮する拡張)やブートストラップによる不確かさ評価などの拡張想定も読み取れます(約700–1200字ほどの技術解説)。
プロジェクトの構成
主要なファイルとディレクトリ:
- Examples: dir
- LICENSE: file
- MannKS: dir
- README.md: file
- assets: dir
…他 3 ファイル
まとめ
非パラメトリックで実務向けの時系列トレンド解析をシンプルに提供するライブラリです。(約50字)
リポジトリ情報:
- 名前: MannKS
- 説明: MannKS (Mann-Kendall Sen slope) - Robust Trend Analysis in Python
- スター数: 2
- 言語: Python
- URL: https://github.com/LukeAFullard/MannKS
- オーナー: LukeAFullard
- アバター: https://avatars.githubusercontent.com/u/77252754?v=4
READMEの抜粋:
MannKS
(Mann-Kendall Sen)
Robust Trend Analysis in Python
📦 Installation
pip install mannks
Requirements: Python 3.7+, NumPy, Pandas, SciPy, Matplotlib
✨ What is MannKS?
MannKS (Mann-Kendall Sen) is a Python package for detecting trends in time series data using non-parametric methods. It’s …