Panel Data¶
PanelForecaster fits a model independently to each group in a pandas DataFrame.
Usage¶
import pandas as pd
from durbyn import AutoARIMA, PanelForecaster
# Panel data with multiple groups
data = pd.DataFrame({
"store": ["A"] * 48 + ["B"] * 48 + ["C"] * 48,
"date": list(range(48)) * 3,
"sales": [...], # sales data for each store
})
# Create a panel forecaster
pf = PanelForecaster(model=AutoARIMA(), groupby="store")
# Fit to each group
pf.fit(data, y_col="sales", m=12, date_col="date")
# Forecast all groups
result = pf.forecast(h=12, level=[80, 95])
# Long-format DataFrame
df = result.to_dataframe()
print(df)
PanelForecaster¶
Constructor¶
| Parameter | Type | Description |
|---|---|---|
model |
BaseForecaster |
Template model (deep-copied per group) |
groupby |
str \| list[str] |
Column(s) to group by |
.fit(data, y_col="y", m=1, date_col=None)¶
| Parameter | Type | Default | Description |
|---|---|---|---|
data |
pd.DataFrame |
required | Panel data |
y_col |
str |
"y" |
Target column name |
m |
int |
1 |
Seasonal period |
date_col |
str \| None |
None |
Date column for sorting within groups |
Returns self for method chaining.
.forecast(h=10, level=None)¶
| Parameter | Type | Default | Description |
|---|---|---|---|
h |
int |
10 |
Forecast horizon |
level |
list[int] \| None |
None |
Confidence levels |
Returns a PanelForecastResult.
PanelForecastResult¶
Attributes¶
| Attribute | Type | Description |
|---|---|---|
groups |
dict[Any, ForecastResult] |
Forecast result per group key |
.to_dataframe()¶
Returns a long-format pandas.DataFrame with a group column and all forecast columns (step, mean, lower/upper intervals).
Multi-Group Keys¶
When grouping by multiple columns, group keys are tuples:
pf = PanelForecaster(model=AutoARIMA(), groupby=["region", "product"])
pf.fit(data, y_col="sales", m=12)
result = pf.forecast(h=6)
# Access individual group
fc = result.groups[("East", "Widget")]
Error Handling¶
If a model fails to fit or forecast for a group, a warning is issued and that group is skipped.