dynamicts / docs /stationarity.md
Captain-Slow's picture
Upload 23 files
f5407b6 verified

Stationarity

Note: We are using complaints.csv as an example here, with the following columns: date, complaints. The date column is used as the time index and complaints as 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=True and output_filepath is provided.