如何获取ETS模型拟合值的标准差与置信区间?
获取ETS模型拟合值的标准差与置信区间
问题背景
已为航空乘客时间序列应用ETS乘法模型,当前能输出拟合值,但需要获取拟合值对应的标准差与置信区间,现有实现代码如下:
import os import numpy as np import pandas as pd import datetime as dt import matplotlib.pyplot as plt from statsmodels.tsa.exponential_smoothing.ets import ETSModel df_air = pd.read_csv('https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv', parse_dates=['Month'], date_parser=lambda x: pd.to_datetime(x, format='%Y-%m', errors = 'coerce')) df_air = df_air.set_index('Month') data = df_air['#Passengers'] model_mul = ETSModel(data, error="mul", trend="mul", seasonal="mul", damped_trend=True, seasonal_periods=12) fit_mul = model_mul.fit(maxiter=10000) print(fit_mul.fittedvalues)
解决方案
使用statsmodels提供的get_prediction()方法,针对样本内区间获取拟合值的完整统计信息,包括标准差和置信区间,具体步骤如下:
- 获取样本内预测结果:调用
fit_mul.get_prediction()并指定样本的起始和结束索引,得到包含拟合统计量的结果对象 - 提取所需统计量:从结果对象中提取标准差、置信区间,同时可验证拟合值与原
fittedvalues的一致性
完整代码示例
import os import numpy as np import pandas as pd import datetime as dt import matplotlib.pyplot as plt from statsmodels.tsa.exponential_smoothing.ets import ETSModel df_air = pd.read_csv('https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv', parse_dates=['Month'], date_parser=lambda x: pd.to_datetime(x, format='%Y-%m', errors = 'coerce')) df_air = df_air.set_index('Month') data = df_air['#Passengers'] model_mul = ETSModel(data, error="mul", trend="mul", seasonal="mul", damped_trend=True, seasonal_periods=12) fit_mul = model_mul.fit(maxiter=10000) # 获取样本内的预测(拟合)结果 prediction = fit_mul.get_prediction(start=data.index[0], end=data.index[-1]) # 提取拟合值(与fit_mul.fittedvalues完全一致) fitted_values = prediction.predicted_mean # 提取拟合值的标准差 fitted_std = prediction.se_mean # 提取95%置信区间(alpha=0.05对应95%,可调整为0.1获取90%置信区间) fitted_ci = prediction.conf_int(alpha=0.05) # 输出结果示例 print("拟合值标准差:") print(fitted_std.head()) print("\n95%置信区间:") print(fitted_ci.head())
关键说明
get_prediction()默认针对样本内数据,指定start和end确保覆盖全部拟合区间se_mean对应每个拟合值的标准误差(即标准差)conf_int(alpha=...)中的alpha为显著性水平,可根据需求调整置信水平- 拟合值
predicted_mean与原fit_mul.fittedvalues完全一致,可用于验证结果正确性
内容的提问来源于stack exchange,提问作者TheonofAlexandria
相关产品推荐
相关产品推荐

