# 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 ```python 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:** ```python 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:** ```python 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. ---