A python library for timeseries smoothing and outlier detection in a vectorized way.
Project description
tsmoothie
A python library for time-series smoothing and outlier detection in a vectorized way.
Overview
tsmoothie computes, in a fast and efficient way, the smoothing of single or multiple time-series.
The smoothing techniques available are:
- Exponential Smoothing
- Convolutional Smoothing with various window types (constant, hanning, hamming, bartlett, blackman)
- Polynomial Smoothing
- Spline Smoothing of various kind (linear, cubic, natural cubic)
- Gaussian Smoothing
- Binner Smoothing
- LOWESS
- Kalman Smoothing with customizable components (level, trend, seasonality, long seasonality)
tsmoothie provides the calculation of intervals as result of the smoothing process. This can be useful to identify outliers and anomalies in time-series.
The interval types available are:
- sigma intervals
- confidence intervals
- predictions intervals
- kalman intervals
The adoption of this type of intervals depends on the smoothing method used.
tsmoothie can also carry out a sliding smoothing approach. This is possible splitting the time-series into equal sized pieces and smoothing them independently. As always, this functionality is implemented in a vectorized way through the WindowWrapper class.
Media
Blog Posts:
- Time Series Smoothing for better Clustering
- Time Series Smoothing for better Forecasting (coming soon)
Installation
pip install tsmoothie
The module depends only on NumPy, SciPy and simdkalman. Python 3.6 or above is supported.
Usage
Below a couple of examples of how tsmoothie works. Full examples are available in the notebooks folder.
# import libraries
import numpy as np
import matplotlib.pyplot as plt
from tsmoothie.utils_func import sim_randomwalk
from tsmoothie.smoother import LowessSmoother
# generate 3 randomwalks of lenght 200
np.random.seed(123)
data = sim_randomwalk(n_series=3, timesteps=200,
process_noise=10, measure_noise=30)
# operate smoothing
smoother = LowessSmoother(smooth_fraction=0.1, iterations=1)
smoother.smooth(data)
# generate intervals
low, up = smoother.get_intervals('prediction_interval')
# plot the smoothed timeseries with intervals
plt.figure(figsize=(18,5))
for i in range(3):
plt.subplot(1,3,i+1)
plt.plot(smoother.smooth_data[i], linewidth=3, color='blue')
plt.plot(smoother.data[i], '.k')
plt.title(f"timeseries {i+1}"); plt.xlabel('time')
plt.fill_between(range(len(smoother.data[i])), low[i], up[i], alpha=0.3)
# import libraries
import numpy as np
import matplotlib.pyplot as plt
from tsmoothie.utils_func import sim_seasonal_data
from tsmoothie.smoother import LowessSmoother
# generate 3 periodic timeseries of lenght 300
np.random.seed(123)
data = sim_seasonal_data(n_series=3, timesteps=300,
freq=24, measure_noise=30)
# operate smoothing
smoother = LowessSmoother(smooth_fraction=0.05, iterations=1)
smoother.smooth(data)
# generate intervals
low, up = smoother.get_intervals('prediction_interval')
# plot the smoothed timeseries with intervals
plt.figure(figsize=(18,5))
for i in range(3):
plt.subplot(1,3,i+1)
plt.plot(smoother.smooth_data[i], linewidth=3, color='blue')
plt.plot(smoother.data[i], '.k')
plt.title(f"timeseries {i+1}"); plt.xlabel('time')
plt.fill_between(range(len(smoother.data[i])), low[i], up[i], alpha=0.3)
References
- Polynomial, Spline, Gaussian and Binner smoothing are carried out building a regression on custom basis expansions. These implementations are based on the amazing intuitions of Matthew Drury available here
- Time Series Modelling with Unobserved Components, Matteo M. Pelagatti
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tsmoothie-0.1.7.tar.gz
.
File metadata
- Download URL: tsmoothie-0.1.7.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56db8bf63c4ef5f82b95859d9bd64907832e18212680e2f965627be04619ab3d |
|
MD5 | c7af5050e0d37870ba440c528a0f7068 |
|
BLAKE2b-256 | 9447d2bfb37fe40eeab8766cdc380de0921871102a654f09eed413d5814f71a2 |
File details
Details for the file tsmoothie-0.1.7-py3-none-any.whl
.
File metadata
- Download URL: tsmoothie-0.1.7-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fae6469b50a88fe01da3fb06c22ec5a7438ff7e6e0b7e8bbe8d256f958587d78 |
|
MD5 | 2eb95c47c6eb98d62173269c3f8d4233 |
|
BLAKE2b-256 | cee17f6c5efe1219e29b9de5c1540aede516b8142475258652ebbd45fb0cedbf |