Stationarity
Note: We are using
complaints.csvas an example here, with the following columns:date,complaints. Thedatecolumn is used as the time index andcomplaintsas the target variable.
The Stationarity class provides methods to test and visualize the stationarity of univariate time series data. Stationarity is a key assumption in many time series models, and these tools help you assess and transform your data accordingly.
Features
- Performs the Augmented Dickey-Fuller (ADF) test for stationarity.
- Plots rolling mean and standard deviation for visual inspection.
- Supports both instance-based and standalone usage.
- Optionally logs results and plots to HTML reports.
Class: Stationarity
Initialization
Stationarity(df: pd.DataFrame = None, target_col: str = None, window: int = 12, output_filepath: str = None)
- df: The time series DataFrame (indexed by the time column).
- target_col: The column name of the univariate time series to analyze.
- window: Window size for rolling statistics (default: 12).
- output_filepath: Path prefix for saving HTML reports and plots.
Note: Your DataFrame should have a time-based index (e.g., "date", "timestamp").
Methods
adf_test(data: pd.Series = None, verbose: bool = True, save: bool = True, output_filepath: str = None)
Performs the Augmented Dickey-Fuller test for stationarity on the specified time series.
- data: Optional. A pandas Series to test. If not provided, uses the instance's DataFrame and target column.
- verbose: Whether to print and log the test summary (default: True).
- save: Whether to save the results to an HTML report (default: True).
- output_filepath: Optional. Path for saving the report.
Standalone Example:
from dynamicts.stationarity import Stationarity
# Instance-based usage
stat = Stationarity(df, target_col="complaints", window=12, output_filepath="report")
adf_result = stat.adf_test()
# Standalone usage
stat = Stationarity()
adf_result = stat.adf_test(data=df["complaints"], verbose=True, output_filepath="report")
plot_rolling_stats(data: pd.Series = None, window: int = None, save: bool = True, output_filepath: str = None)
Plots the rolling mean and standard deviation for the specified time series and window size.
- data: Optional. A pandas Series to plot. If not provided, uses the instance's DataFrame and target column.
- window: Optional. Window size for rolling statistics. Defaults to the instance's
window. - save: Whether to save the plot to an HTML report (default: True).
- output_filepath: Optional. Path for saving the report.
Standalone Example:
from dynamicts.stationarity import Stationarity
# Instance-based usage
stat = Stationarity(df, target_col="complaints", window=12, output_filepath="report")
fig = stat.plot_rolling_stats()
fig.show()
# Standalone usage
stat = Stationarity()
fig = stat.plot_rolling_stats(data=df["complaints"], window=12, output_filepath="report")
fig.show()
Notes
- The DataFrame should be indexed by the time column for proper time series analysis.
- Results and plots can be logged to HTML reports if
save=Trueandoutput_filepathis provided.