import pandas as pd import numpy as np from time_base import timeBase import statsmodels.api as sm import statsmodels.tsa.api as smt import statsmodels.formula as smf import scipy.stats as scs class stationaryTest(Time_base): """ 时间序列稳定性检验 """ def __init__(self): pass def test_stationary(self, x, window_size): """ 时间序列稳定性检验 x : 时间序列数据 window_size : 窗口大小 """ x_ma = self.moving_average(x, window_size) x_std = self.moving_std(x, window_size) x_max = self.moving_max(x, window_size) x_min = self.moving_min(x, window_size) x_median = self.moving_median(x, window_size) x_normalized = self.normalize(x) x_ma_normalized = self.normalize(x_ma) x_std_normalized = self.normalize(x_std) x_max_normalized = self.normalize(x_max) x_min_normalized = self.normalize(x_min) x_median_normalized = self.normalize(x_median) x_normalized_ma_normalized = self.normalize(x_normalized - x_ma_normalized) x_normalized_std_normalized = self.normalize(x_normalized - x_std_normalized) x_normalized_max_normalized = self.normalize(x_normalized - x_max_normalized) x_normalized_min_normalized = self.normalize(x_normalized - x_min_normalized) x_normalized_median_normalized = self.normalize(x_normalized - x_median_normalized) x_normalized_ma_normalized_std_normalized = self.normalize(x_normalized_ma_normalized - x_std) return x_normalized, x_ma_normalized, x_std_normalized, x_max_normalized, x_min_normalized, x_median_normalized, x_normalized_ma_normalized, x_normalized_std_normalized, x_normalized_max_normalized, x_normalized_min_normalized, x_normalized_median_normalized, x_normalized_ma_normalized_std_normalized def adf_test(self, x, window_size): """ 时间序列稳定性检验 x : 时间序列数据 window_size : 窗口大小 """ x_normalized, x_ma_normalized, x_std_normalized, x_max_normalized, x_min_normalized, x_median_normalized, x_normalized_ma_normalized, x_normalized_std_normalized, x_normalized_max_normalized, x_normalized_min_normalized, x_normalized_median_normalized, x_normalized_ma_normalized_std_normalized = self.test_stationary(x, window_size) adf_test_normalized = smt.adfuller(x_normalized) adf_test_ma_normalized = smt.adfuller(x_ma_normalized) adf_test_std_normalized = smt.adfuller(x_std_normalized) adf_test_max_normalized = smt.adfuller(x_max_normalized) adf_test_min_normalized = smt.adfuller(x_min_normalized) adf_test_median_normalized = smt.adfuller(x_median_normalized) adf_test_normalized_ma_normalized = smt.adfuller(x_normalized_ma_normalized) adf_test_normalized_std_normalized = smt.adfuller(x_normalized_std_normalized) adf_test_normalized_max_normalized = smt.adfuller(x_normalized_max_normalized) adf_test_normalized_min_normalized = smt.adfuller(x_normalized_min_normalized) return adf_test_normalized, adf_test_ma_normalized, adf_test_std_normalized, adf_test_max_normalized, adf_test_min_normalized, adf_test_median_normalized, adf_test_normalized_ma_normalized, adf_test_normalized_std_normalized, adf_test_normalized_max_normalized, adf_test_normalized_min_normalized