#!/usr/bin/env python # -*- coding:utf-8 -*- # <editable> def execute(): # <editable> \'\'\' 载入模块 \'\'\' import warnings from statsmodels.graphics.tsaplots import plot_acf # 绘制自相关图 from statsmodels.tsa.stattools import adfuller as ADF # 单位根检验 import matplotlib.pyplot as plt warnings.filterwarnings("ignore") import pandas as pd from sqlalchemy import create_engine \'\'\' 连接数据库 \'\'\' engine = create_engine(\'mysql+pymysql://root:123123qwe@127.0.0.1:3306/analysis\') \'\'\' 选择目标数据 \'\'\' params = { "sequence": "SUNACTIVITY", } inputs = {"table": \'纯随机性检验\'} data_sql = \'select \' + params[\'sequence\'] + \' from \' + inputs[\'table\'] data_in = pd.read_sql_query(data_sql, engine) print(data_in) data_in = data_in.dropna() \'\'\' 平稳性检验 \'\'\' sequence = data_in[params[\'sequence\']] adf_result = ADF(sequence) test_statistic = adf_result[0] p_value = adf_result[1] use_lag = adf_result[2] nobs = adf_result[3] critical_1 = adf_result[4][\'5%\'] critical_5 = adf_result[4][\'1%\'] critical_10 = adf_result[4][\'10%\'] data_out = \'\' data_out += \'平稳性检验结果\n\' data_out += \'检验结果\n\' data_out += \'Test statistic:\' + str(test_statistic) + \'\n\' data_out += \' p-value:\' + str(p_value) + \'\n\' data_out += \'Number of lags used:\' + str(use_lag) + \'\n\' data_out += \'Number of observations used for the ADF regression and calculation of the critical values:\' + str( nobs) + \'\n\' data_out += \'Critical values for the test statistic at the 5 %:\' + str(critical_1) + \'\n\' data_out += \'Critical values for the test statistic at the 1 %:\' + str(critical_5) + \'\n\' data_out += \'Critical values for the test statistic at the 10 %:\' + str(critical_10) + \'\n\' \'\'\' 自相关图 \'\'\' fig = plt.figure(figsize=(10, 4)) ax1 = fig.add_subplot(111) plot_acf(sequence, ax=ax1, fft=True) plt.savefig(\'acf.png\') \'\'\' 生成报告 \'\'\' print(data_out) \'\'\' 数据示例 SUNACTIVITY 0 5.0 1 11.0 2 16.0 3 23.0 4 36.0 5 40.4 6 29.8 7 15.2 8 7.5 9 2.9 10 83.4 11 47.7 12 47.8 13 30.7 14 12.2 15 40.4 16 29.8 17 15.2 18 7.5 19 2.9 20 12.6 平稳性检验结果 检验结果 Test statistic:-3.125280514027156 p-value:0.0247380100963531 Number of lags used:0 Number of observations used for the ADF regression and calculation of the critical values:20 Critical values for the test statistic at the 5 %:-3.0216450000000004 Critical values for the test statistic at the 1 %:-3.8092091249999998 Critical values for the test statistic at the 10 %:-2.6507125 \'\'\' # </editable> if __name__ == \'__main__\': execute()