|
"""
|
|
smoothing.py
|
|
Simple exponential smoothing and plotting for time series data.
|
|
"""
|
|
|
|
import pandas as pd
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from statsmodels.tsa.holtwinters import SimpleExpSmoothing
|
|
|
|
def simple_exponential_smoothing(series, smoothing_level=None, optimized=True):
|
|
"""Apply Simple Exponential Smoothing to a pandas Series."""
|
|
model = SimpleExpSmoothing(series.dropna())
|
|
fit = model.fit(smoothing_level=smoothing_level, optimized=optimized)
|
|
return fit.fittedvalues, fit
|
|
|
|
def plot_ses(series, smoothing_level=None, optimized=True, title='Simple Exponential Smoothing'):
|
|
"""Plot original series and SES smoothed series."""
|
|
fitted_values, _ = simple_exponential_smoothing(series, smoothing_level, optimized)
|
|
plt.figure(figsize=(10,6))
|
|
plt.plot(series, label='Original', color='blue')
|
|
plt.plot(fitted_values, label='SES Smoothed', color='green')
|
|
plt.title(title)
|
|
plt.legend(loc='best')
|
|
plt.show()
|
|
|