poisson_df = INARGenerator(
engine="polars",
min_length=200,
max_length=200,
freq="D",
p=1,
alpha=[0.5],
innovation_type="poisson",
innovation_mean=3.0,
seed=42,
).generate(n_series=1)
negative_binomial_df = INARGenerator(
engine="polars",
min_length=200,
max_length=200,
freq="D",
p=1,
alpha=[0.5],
innovation_type="negative_binomial",
innovation_mean=3.0,
innovation_dispersion=2.0,
seed=42,
).generate(n_series=1)
fig, axes = plt.subplots(2, 1, figsize=(12, 6), sharex=True)
panels = [("poisson", poisson_df), ("negative binomial", negative_binomial_df)]
for ax, (label, df) in zip(axes, panels):
counts = df["y"].to_list()
mean = sum(counts) / len(counts)
variance = sum((count - mean) ** 2 for count in counts) / len(counts)
ax.step(df["ds"].to_list(), counts, where="mid", alpha=0.85)
ax.set(
ylabel="Count",
title=f"{label} innovations (mean {mean:.2f}, variance {variance:.2f})",
)
axes[-1].set_xlabel("Timestamp")
plt.tight_layout()
plt.show()