Python で mann-kendall 傾向テストを実行する方法


Mann-Kendall トレンド テストは、時系列データにトレンドがあるかどうかを判断するために使用されます。これはノンパラメトリック検定であり、データの正規性について基礎的な仮定が行われていないことを意味します。

テスト仮説は次のとおりです。

H 0 (帰無仮説):データに傾向は存在しません。

H A (対立仮説):データには傾向が存在します。 (これは良い傾向または悪い傾向である可能性があります)

検定の p 値が特定の有意レベル (一般的な選択肢は 0.10、0.05、および 0.01) を下回っている場合、時系列データに傾向が存在するという統計的に有意な証拠があります。

このチュートリアルでは、Python で Mann-Kendall トレンド テストを実行する方法を説明します。

例: Python での Mann-Kendall トレンド テスト

Python で Mann-Kendall トレンド テストを実行するには、まずpymannkendallパッケージをインストールします。

 pip install pymannkendall

このパッケージをインストールすると、時系列データセットに対して Mann-Kendall トレンド テストを実行できます。

 #create dataset
data = [31, 29, 28, 28, 27, 26, 26, 27, 27, 27, 28, 29, 30, 29, 30, 29, 28]

#perform Mann-Kendall Trend Test
import pymannkendall as mk

mk. original_test (data)

Mann_Kendall_Test(trend='no trend', h=False, p=0.422586268671707,
                  z=0.80194241623, Tau=0.147058823529, s=20.0,
                  var_s=561.33333333, slope=0.0384615384615, intercept=27.692307692)

テスト結果を解釈する方法は次のとおりです。

  • トレンド: トレンドを示します。考えられる結果には、増加、減少、または傾向がないことが含まれます。
  • h:トレンドが存在する場合は true。トレンドが存在しない場合は False。
  • p:検定の p 値。
  • z:正規化検定統計量。
  • タウ:ケンダル・タウ。
  • s:マンケンダルスコア
  • var_s:偏差 S
  • 勾配: Theil-Sen/勾配推定器
  • インターセプト:頑丈なケンダル・タイルラインのインターセプト

私たちが関心のある主な値は p 値で、データに統計的に有意な傾向があるかどうかを示します。

この例では、p 値は0.4226であり、0.05 以上です。したがって、時系列データには大きな傾向はありません。

Mann-Kendall 傾向検定の実行に加えて、Matplotlib を使用して簡単な折れ線プロットを作成し、実際の時系列データを視覚化できます。

 import matplotlib. pyplot as plt

plt. plot (data)

グラフから、データが少し分散していることがわかり、データに明確な傾向がないことが確認できます。

追加リソース

Matplotlib で時系列をプロットする方法
Python で拡張ディッキー・フラーテストを実行する方法
Pandas DataFrame から複数のシリーズをプロットする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です