.. _sphx_glr_auto_examples_arima_example_seasonal_decomposition.py: ========================================== Seasonal decomposition of your time-series ========================================== This example demonstrates how we can use the ``decompose`` function to extract the trend, seasonal, and random components of the time series and then plot them all using the ``decomposed_plot`` function. We'll be plotting both ``additive`` and ``multiplicative`` examples of seasonality. To see the R equivalent that inspired this example go `here `_. .. raw:: html
.. rst-class:: sphx-glr-horizontal * .. image:: /auto_examples/arima/images/sphx_glr_example_seasonal_decomposition_001.png :scale: 47 * .. image:: /auto_examples/arima/images/sphx_glr_example_seasonal_decomposition_002.png :scale: 47 .. code-block:: python print(__doc__) # Author: Charles Drotar from pmdarima import arima from pmdarima import datasets from pmdarima import utils # ############################################################################# # So what is happening when we call `decomposed`? # 1) The trend is extracted from the signal via a convolution using either a # SMA or a user-defined filter. # 2) We remove the effects of the trend from the original signal by either # subtracting its effects or dividing out its effects for `additive` or # 'multiplicative' types of decompositions, respectively. We then take the # mean across all seasons to get the values for a single season. For m=4, we # expect 4 values for a single season. # 3) We then create the seasonal series by replicating the single season # until it is the same length of the trend signal. # 4) Lastly to get the random/noise elements of the signal we remove the effects # of both the trend and seasonal series and we are now left with the # variation of the original signal that is neither explainable by seasonal # nor trend effects. # # This logic produces a named tuple of the original signal, trend, seasonal, # and random components. It is this named tuple that is passed to # `decomposed_plot` figure_kwargs = {'figsize': (6, 6)} # set figure size for both examples # # ADDITIVE EXAMPLE : ausbeer # # Decompose the ausbeer dataset into trend, seasonal and random parts. # We subset to a small window of the time series. head_index = 17*4+2 tail_index = 17*4-4 first_index = head_index - tail_index last_index = head_index ausbeer = datasets.load_ausbeer() timeserie_beer = ausbeer[first_index:last_index] decomposed = arima.decompose(timeserie_beer, 'additive', m=4) # Plot the decomposed signal of ausbeer as a subplot axes = utils.decomposed_plot(decomposed, figure_kwargs=figure_kwargs, show=False) axes[0].set_title("Ausbeer Seasonal Decomposition") # # MULTIPLICATIVE EXAMPLE: airpassengers # # Decompose the airpassengers dataset into trend, seasonal and random parts. decomposed = arima.decompose(datasets.load_airpassengers(), 'multiplicative', m=12) # Plot the decomposed signal of airpassengers as a subplot axes = utils.decomposed_plot(decomposed, figure_kwargs=figure_kwargs, show=False) axes[0].set_title("Airpassengers Seasonal Decomposition") **Total running time of the script:** ( 0 minutes 0.058 seconds) .. only :: html .. container:: sphx-glr-footer .. container:: sphx-glr-download :download:`Download Python source code: example_seasonal_decomposition.py ` .. container:: sphx-glr-download :download:`Download Jupyter notebook: example_seasonal_decomposition.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_