damped_df = ETSGenerator(
engine="polars", min_length=120, max_length=120, freq="ME",
error_type="add", trend_type="add", seasonal_type="add", damped=True, phi=0.9,
seasonal_period=12, level=100.0, trend=1.0, noise_std=2.0, seed=42,
).generate(n_series=1)
multiplicative_df = ETSGenerator(
engine="polars", min_length=120, max_length=120, freq="ME",
error_type="mul", trend_type="add", seasonal_type="mul",
seasonal_period=12, level=100.0, trend=1.0, noise_std=0.02, seed=42,
).generate(n_series=1)
level_only_df = ETSGenerator(
engine="polars", min_length=120, max_length=120, freq="ME",
error_type="add", trend_type=None, seasonal_type=None,
level=100.0, noise_std=2.0, seed=42,
).generate(n_series=1)
panels = [
("ETS(A,Ad,A) damped additive Holt-Winters", damped_df),
("ETS(M,A,M) multiplicative Holt-Winters", multiplicative_df),
("ETS(A,N,N) simple exponential smoothing", level_only_df),
]
fig, axes = plt.subplots(3, 1, figsize=(12, 7.5), sharex=True)
for ax, (label, df) in zip(axes, panels):
ax.plot(df["ds"].to_list(), df["y"].to_list(), alpha=0.85, linewidth=1)
ax.set(ylabel="Value", title=label)
axes[-1].set_xlabel("Timestamp")
plt.tight_layout()
plt.show()