Farzad E
06/06/2024, 1:49 AMmodels = [
AutoCES(model='S', season_length=52)
]
sf = StatsForecast(
df=df_train,
models=models,
freq='W',
fallback_model=SeasonalNaive(season_length=52)
)
frcst_df = sf.forecast(h=52, level=[95], X_df=df_test)
José Morales
06/06/2024, 2:38 AMTyler Blume
06/06/2024, 9:47 AMFarzad E
06/06/2024, 12:01 PMFarzad E
06/06/2024, 12:04 PMJosé Morales
06/06/2024, 4:31 PMFarzad E
06/11/2024, 2:58 PMmodels = [
AutoMFLES(
season_length = [52],
test_size = 52,
metric = 'smape')
]
sf = StatsForecast(
df=df_train,
models=models,
freq='W'
)
frcst_df = sf.forecast(h=52, X_df=df_test)
Is there something else in mfles settings that is really critical for prediction with exogenous features?Tyler Blume
06/11/2024, 5:50 PMGuillaume GALIE
06/13/2024, 7:26 AMTyler Blume
06/13/2024, 11:42 AMimport pandas as pd
import numpy as np
from statsforecast.models import AutoMFLES
import matplotlib.pyplot as plt
df = pd.read_csv(r'<https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv>')
y = df['Passengers'].values # make array
X = np.zeros((len(y), 1))
X[20] = 1
y[20] = y[20] + 500
X_future = np.zeros((12, 1))
X_future[8] = 1
mfles_model = AutoMFLES(
season_length = [12],
test_size = 12,
metric = 'smape',
)
mfles_model.fit(y=y, X=X)
predicted = mfles_model.predict(12, X=X_future)['mean']
fitted = mfles_model.predict_in_sample()['fitted']
@José Morales This does seem like a bug!Tyler Blume
06/13/2024, 11:44 AMGuillaume GALIE
06/13/2024, 3:51 PMTyler Blume
06/13/2024, 4:11 PMGuillaume GALIE
06/13/2024, 4:19 PMJosé Morales
06/13/2024, 4:24 PMimport os
os.environ['NIXTLA_ID_AS_COL'] = '1'
from mlforecast.utils import generate_series, generate_prices_for_series
from statsforecast import StatsForecast
from statsforecast.models import AutoMFLES
series = generate_series(5, equal_ends=True)
prices = generate_prices_for_series(series)
series_wp = series.merge(prices, on=['unique_id', 'ds'])
X_df = prices[prices['ds'].gt(series['ds'].max())]
sf = StatsForecast(
models=[AutoMFLES(test_size=7, season_length=7)],
freq='D'
)
print('Forecast no exog: ', sf.forecast(df=series, h=7)['AutoMFLES'].mean())
print('Forecast exog: ', sf.forecast(df=series_wp, h=7, X_df=X_df)['AutoMFLES'].mean())
sf.fit(df=series)
print('Fit predict no exog: ', sf.predict(h=7)['AutoMFLES'].mean())
sf.fit(df=series_wp)
print('Fit predict exog: ', sf.predict(h=7, X_df=X_df)['AutoMFLES'].mean())
Guillaume GALIE
06/13/2024, 4:32 PMTyler Blume
06/13/2024, 4:35 PMFarzad E
06/13/2024, 8:36 PMTyler Blume
06/13/2024, 8:44 PMGuillaume GALIE
06/14/2024, 1:18 PM