Python에서 mann-kendall 추세 테스트를 수행하는 방법


Mann-Kendall 추세 테스트는 시계열 데이터에 추세가 있는지 여부를 확인하는 데 사용됩니다. 이는 비모수적 테스트입니다. 즉, 데이터의 정규성에 대한 기본 가정이 이루어지지 않음을 의미합니다.

테스트 가설은 다음과 같습니다.

H 0 (귀무가설): 데이터에 추세가 없습니다.

HA (대립가설): 데이터에 추세가 존재합니다. (이것은 긍정적일 수도 있고 부정적인 추세일 수도 있습니다)

검정의 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)

테스트 결과를 해석하는 방법은 다음과 같습니다.

  • trend : 추세를 나타냅니다. 가능한 결과에는 증가, 감소 또는 추세 없음이 포함됩니다.
  • h: 추세가 있으면 참입니다. 추세가 없으면 거짓입니다.
  • p: 테스트의 p 값입니다.
  • z: 정규화 테스트 통계입니다.
  • 타우: 켄달 타우.
  • s: Mann-Kendal 점수
  • var_s: 편차 S
  • 기울기: Theil-Sen/기울기 추정기
  • 차단: 견고한 Kendall-Theil 라인 차단

우리가 관심을 갖는 주요 값은 데이터에 통계적으로 유의미한 추세가 있는지 여부를 알려주는 p-값입니다.

이 예에서 p-값은 0.4226 이며 이는 0.05 이상입니다. 따라서 시계열 데이터에는 큰 추세가 없습니다.

Mann-Kendall 추세 테스트를 수행하는 것 외에도 Matplotlib를 사용하여 빠른 선 그래프를 만들어 실제 시계열 데이터를 시각화할 수 있습니다.

 import matplotlib. pyplot as plt

plt. plot (data)

타임스

차트를 보면 데이터가 약간 분산되어 있는 것을 볼 수 있는데, 이는 데이터에 명확한 추세가 없음을 확인시켜 줍니다.

추가 리소스

Matplotlib에서 시계열을 그리는 방법
Python에서 증강된 Dickey-Fuller 테스트를 수행하는 방법
Pandas DataFrame에서 여러 계열을 그리는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다