Как выполнить тест kpss на python


Тест KPSS можно использовать для определения того, имеет ли временной ряд стационарный тренд.

В этом тесте используются следующие нулевая и альтернативная гипотезы:

  • H 0 : Временной ряд имеет стационарный тренд.
  • Х А : Временной ряд не имеет стационарного тренда.

Если значение p теста ниже определенного уровня значимости (например, α = 0,05), то мы отвергаем нулевую гипотезу и делаем вывод, что временной ряд не имеет стационарной тенденции.

В противном случае мы не сможем отвергнуть нулевую гипотезу.

В следующих примерах показано, как выполнить тест KPSS в Python.

Пример 1: тест KPSS на Python (со стационарными данными)

Во-первых, давайте создадим несколько поддельных данных в Python для работы:

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seed ( 1 )

#create time series data
data = np. random . normal (size= 100 )

#create line plot of time series data
plt. plot (data) 

Мы можем использовать функцию kpss() из пакета statsmodels для выполнения теста KPSS на данных этого временного ряда:

 import statsmodels. api as sm

#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')

(0.0477617848370993,
 0.1,
 1,
 {'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})

InterpolationWarning: The test statistic is outside of the range of p-values available
in the look-up table. The actual p-value is greater than the p-value returned.

Вот как интерпретировать результат:

  • Статистика теста КПСС: 0,04776.
  • Значение p: 0,1
  • Параметр смещения усечения: 1
  • Критические значения на 10% , 5% , 2,5% и 1%.

Значение p составляет 0,1 . Поскольку это значение не меньше 0,05, мы не можем отвергнуть нулевую гипотезу теста KPSS.

Это означает, что мы можем предположить, что временной ряд имеет стационарный тренд.

Примечание 1. Значение p на самом деле все еще больше 0,1, но наименьшее значение, которое может выдать функция kpss(), равно 0,1.

Примечание 2. Вы должны использовать аргумент reгрессия=’ct’ , чтобы указать, что нулевая гипотеза теста заключается в том, что данные имеют стационарный тренд.

Пример 2: тест KPSS на Python (с нестационарными данными)

Во-первых, давайте создадим несколько поддельных данных в Python для работы:

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seed ( 1 )

#create time series data
data =np. array ([0, 3, 4, 3, 6, 7, 5, 8, 15, 13, 19, 12, 29, 15, 45, 23, 67, 45])

#create line plot of time series data
plt. plot (data) 

Опять же, мы можем использовать функцию kpss() из пакета statsmodels для выполнения теста KPSS на данных этого временного ряда:

 import statsmodels. api as sm

#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')

(0.15096358910843685,
 0.04586367574296928,
 3,
 {'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})

Вот как интерпретировать результат:

  • Статистика теста КПСС: 0,1509.
  • Значение p: 0,0458
  • Параметр смещения усечения: 3
  • Критические значения на 10% , 5% , 2,5% и 1%.

Значение p составляет 0,0458 . Поскольку это значение меньше 0,05, мы отвергаем нулевую гипотезу теста KPSS.

Это означает, что временной ряд не является стационарным.

Примечание . Полную документацию по функции kpss() из пакета statsmodels вы можете найти здесь .

Дополнительные ресурсы

Следующие руководства предоставляют дополнительную информацию о том, как работать с данными временных рядов в Python:

Как выполнить расширенный тест Дикки-Фуллера в Python
Как выполнить тест тренда Манна-Кендалла в Python
Как построить временной ряд в Matplotlib

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *