时间序列分析,使用 Kwiatkowski-Phillips-Schmidt-Shin (KPSS) 检查平稳性

问题描述

我正在执行时间序列分析,并使用 Kwiatkowski-Phillips-Schmidt-Shin (KPSS) 检查平稳性。我已使用以下方法加载数据:

import pandas as pd
import numpy as np
path = 'https://raw.githubusercontent.com/selva86/datasets/master/daily-min-temperatures.csv'
df = pd.read_csv(path,parse_dates=['Date'],index_col='Date')
df.plot(title='Daily Temperatures',figsize=(14,8),legend=None);

这是我使用的代码,但我无法显示结果。

#define function for kpss test
from statsmodels.tsa.stattools import kpss
#define KPSS
def kpss_test(timeseries):
    print ('Results of KPSS Test:')
    kpsstest = kpss(timeseries,regression='c')
    kpss_output = pd.Series(kpsstest[0:3],index=['Test Statistic','p-value','Lags Used'])
    for key,value in kpsstest[3].items():
      kpss_output['Critical Value (%s)'%key] = value

协助。

解决方法

快到了,只需像这样返回 kpss_output

def kpss_test(timeseries):
    print ('Results of KPSS Test:')
    kpsstest = kpss(timeseries,regression='c')
    kpss_output = pd.Series(kpsstest[0:3],index=['Test Statistic','p-value','Lags Used'])
    for key,value in kpsstest[3].items():
      kpss_output['Critical Value (%s)'%key] = value
    
    return kpss_output

当您调用 kpss_test(df.Temp) 时,您将获得:

Test Statistic            0.06511
p-value                   0.10000
Lags Used                30.00000
Critical Value (10%)      0.34700
Critical Value (5%)       0.46300
Critical Value (2.5%)     0.57400
Critical Value (1%)       0.73900
dtype: float64