文章目录 知识点梳理1 时间预处理1.1 创造时间序列1.2 选择时间序列1.3 重采样1.4 滑动窗口1.5 差分 2.自回归ARIMA模型1.平稳性(差分)2. ACF与PACF3. ARIMA建模4. 模型预测5. 模型评估
知识点梳理
AR:
MA:
ARIMA:
因此需要指定 p , q , i 的 值:
i的值由图像确定,而使用ACF与PACF确定p与q的值:
resample(‘计算时间频率’).观察指标()
升采样:
# 重采样为按月计数,观察总和time_df = time_df.resample('M').sum()# 以三天计数,观察均值time_df = time_df.resample('3D').mean()降采样:
# 以小时计数,空值填充为 NaNtime_df = time_df.resample('H').asfreq()# 填充出现空缺的num个值,参考 NaN 上面的数值填充time_df = time_df.resample('H').ffill(num)# 填充出现空缺的num个值,参考 NaN 下面的数值填充time_df = time_df.resample('H').bfill(num)# 线性填充所有缺失值time_df = time_df.resample('H').interplate('linear') 1.4 滑动窗口 # 以 20 为单位做滑动窗口roll_windows = time_df.rolling(window=20)# 不能直接使用roll_windows,还需要明确观察指标roll_windows.mean() # 均值roll_windows.std() # 方差roll_windows.max() # 最大roll_windows.min() # 最小roll_windows.median() # 中位数roll_windows.var() # 方差roll_windows.skew() # 偏度 1.5 差分 # 一阶差分dataframe['列名'] = dataframe['列名'].diff(1)# 二阶差分:在一阶差分的基础上再做差分 2.自回归ARIMA模型 1.平稳性(差分) data = data.diff() # 一阶差分data = data.dropna() # 去除NaN 2. ACF与PACF import statsmodels.tsa.api as smtimport seaborn as snssns.set(style='ticks', context='poster')# ACF 曲线smt.graphics.plot_acf(train_data, lags=20)# PACF 曲线smt.graphics.plot_pacf(train_data, lags=20) 3. ARIMA建模 import statsmodels.api as smarima_model = sm.tsa.SARIMAX(train_data, order=(4, 1, 2))arima_result = model.fit() 4. 模型预测 arima一分快三技巧准确率100ime_df = time_df.resample('H').ffill(num)# 填充出现空缺的num个值,参考 NaN 下面的数值填充time_df = time_df.resample('H').bfill(num)# 线性填充所有缺失值time_df = time_df.resample('H').interplate('linear') 1.4 滑动窗口 # 以 20 为单位做滑动窗口roll_windows = time_df.rolling(window=20)# 不能直接使用roll_windows,还需要明确观察指标roll_windows.mean() # 均值roll_windows.std() # 方差roll_windows.max() # 最大roll_windows.min() # 最小roll_windows.median() # 中位数roll_windows.var() # 方差roll_windows.skew() # 偏度 1.5 差分 # 一阶差分dataframe['列名'] = dataframe['列名'].diff(1)# 二阶差分:在一阶差分的基础上再做差分 2.自回归ARIMA模型 1.平稳性(差分) data = data.diff() # 一阶差分data = data.dropna() # 去除NaN 2. ACF与PACF import statsmodels.tsa.api as smtimport seaborn as snssns.set(style='ticks', context='poster')# ACF 曲线smt.graphics.plot_acf(train_data, lags=20)# PACF 曲线smt.graphics.plot_pacf(train_data, lags=20) 3. ARIMA建模 import statsmodels.api as smarima_model = sm.tsa.SARIMAX(train_data, order=(4, 1, 2))arima_result = model.fit() 4. 模型预测 arima_predict = arima_result.predict('起始时间', '终止时间',dynamic=True, typ='levels') 5. 模型评估 # ARIMA各种指标arima_result.summary()# AIC:赤池信息准则,衡量数据与参数之间的关系,越小越好aic = arima_result.aic# BIC:贝叶斯信息准则,同上,都是判断模型的简易性bic = arima_result.bic