63 lines
3.3 KiB
Python
63 lines
3.3 KiB
Python
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
|