鉴于
nixtla
的文档,y没有找到任何方法来计算非样本预测(训练数据)的预测区间,而只是用于未来的预测。
我举了一个例子来说明我可以实现什么,但只是为了预测(未来)。
from statsforecast.models import SeasonalExponentialSmoothing, ADIDA, ARIMA
from statsforecast.utils import ConformalIntervals
# Create a list of models and instantiation parameters
intervals = ConformalIntervals(h=24, n_windows=2)
models = [
SeasonalExponentialSmoothing(season_length=24,alpha=0.1, prediction_intervals=intervals),
ADIDA(prediction_intervals=intervals),
ARIMA(order=(24,0,12), season_length=24, prediction_intervals=intervals),
]
sf = StatsForecast(
df=train,
models=models,
freq='H',
)
levels = [80, 90] # confidence levels of the prediction intervals
forecasts = sf.forecast(h=24, level=levels)
forecasts = forecasts.reset_index()
forecasts.head()
所以我的目标是做类似的事情:
forecasts = sf.forecast(df_x, level=levels)
所以我们可以在训练集中有任何预测区间。
StatsForecast
对象本身只有方法forecast
、cross_validation
和内部方法_is_native
。
AFAICT 根据您的要求,似乎您应该能够使用
cross_validation
方法并提供 prediction_intervals
参数来给出您想要的范围。
所以你应该能够做类似的事情
validation_forecast = sf.cross_validation(df_x, prediction_intervals=levels)
我尚未验证这一点,但请尝试一下,看看是否对您有帮助。