
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_examples/ts_utils/plot_rolling_variance.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_auto_examples_ts_utils_plot_rolling_variance.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_examples_ts_utils_plot_rolling_variance.py:


=================
Rolling variance
=================

This example computes the rolling variance of a single time series
using a time-based window.

.. GENERATED FROM PYTHON SOURCE LINES 11-47



.. image-sg:: /auto_examples/ts_utils/images/sphx_glr_plot_rolling_variance_001.png
   :alt: Time series with rolling variance
   :srcset: /auto_examples/ts_utils/images/sphx_glr_plot_rolling_variance_001.png
   :class: sphx-glr-single-img





.. code-block:: Python

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd

    from matplotlib.dates import DateFormatter

    from indsl.ts_utils.rolling_stats import rolling_variance


    # Generate a synthetic time series
    rng = np.random.default_rng(12345)
    num_datapoints = 200
    index = pd.date_range(start="1970-01-01", periods=num_datapoints, freq="1min")

    # Random walk with a small seasonal component
    y = np.cumsum(rng.standard_normal(num_datapoints)) + 0.1 * np.sin(np.linspace(0, 10 * np.pi, num_datapoints))
    data = pd.Series(y, index=index)

    # Compute rolling variance over a 5-minute window
    window = pd.Timedelta(minutes=5)
    var_series = rolling_variance(data, time_window=window, min_periods=1)

    # Plot both on the same axes (overlaid)
    fig, ax = plt.subplots(figsize=[15, 6])
    ax.plot(data, label="Time series")
    ax.plot(var_series, color="tab:orange", label="Rolling variance (5 min window)")
    ax.set_title("Time series with rolling variance")
    ax.legend(loc="best")

    # Formatting
    date_fmt = DateFormatter("%b %d, %H:%M")
    ax.xaxis.set_major_formatter(date_fmt)
    _ = plt.setp(ax.get_xticklabels(), rotation=45)

    plt.tight_layout()
    plt.show()


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 0.213 seconds)


.. _sphx_glr_download_auto_examples_ts_utils_plot_rolling_variance.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_rolling_variance.ipynb <plot_rolling_variance.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_rolling_variance.py <plot_rolling_variance.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: plot_rolling_variance.zip <plot_rolling_variance.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
