• Stars
    star
    362
  • Rank 117,671 (Top 3 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Calculates various features from time series data. Python implementation of the R package tsfeatures.

Build PyPI version fury.io Downloads Python 3.6+ License: MIT

tsfeatures

Calculates various features from time series data. Python implementation of the R package tsfeatures.

Installation

You can install the released version of tsfeatures from the Python package index with:

pip install tsfeatures

Usage

The tsfeatures main function calculates by default the features used by Montero-Manso, Talagala, Hyndman and Athanasopoulos in their implementation of the FFORMA model.

from tsfeatures import tsfeatures

This function receives a panel pandas df with columns unique_id, ds, y and optionally the frequency of the data.

tsfeatures(panel, freq=7)

By default (freq=None) the function will try to infer the frequency of each time series (using infer_freq from pandas on the ds column) and assign a seasonal period according to the built-in dictionary FREQS:

FREQS = {'H': 24, 'D': 1,
         'M': 12, 'Q': 4,
         'W':1, 'Y': 1}

You can use your own dictionary using the dict_freqs argument:

tsfeatures(panel, dict_freqs={'D': 7, 'W': 52})

List of available features

Features
acf_features heterogeneity series_length
arch_stat holt_parameters sparsity
count_entropy hurst stability
crossing_points hw_parameters stl_features
entropy intervals unitroot_kpss
flat_spots lumpiness unitroot_pp
frequency nonlinearity
guerrero pacf_features

See the docs for a description of the features. To use a particular feature included in the package you need to import it:

from tsfeatures import acf_features

tsfeatures(panel, freq=7, features=[acf_features])

You can also define your own function and use it together with the included features:

def number_zeros(x, freq):

    number = (x == 0).sum()
    return {'number_zeros': number}

tsfeatures(panel, freq=7, features=[acf_features, number_zeros])

tsfeatures can handle functions that receives a numpy array x and a frequency freq (this parameter is needed even if you don't use it) and returns a dictionary with the feature name as a key and its value.

R implementation

You can use this package to call tsfeatures from R inside python (you need to have installed R, the packages forecast and tsfeatures; also the python package rpy2):

from tsfeatures.tsfeatures_r import tsfeatures_r

tsfeatures_r(panel, freq=7, features=["acf_features"])

Observe that this function receives a list of strings instead of a list of functions.

Comparison with the R implementation (sum of absolute differences)

Non-seasonal data (100 Daily M4 time series)

feature diff feature diff feature diff feature diff
e_acf10 0 e_acf1 0 diff2_acf1 0 alpha 3.2
seasonal_period 0 spike 0 diff1_acf10 0 arch_acf 3.3
nperiods 0 curvature 0 x_acf1 0 beta 4.04
linearity 0 crossing_points 0 nonlinearity 0 garch_r2 4.74
hw_gamma 0 lumpiness 0 diff2x_pacf5 0 hurst 5.45
hw_beta 0 diff1x_pacf5 0 unitroot_kpss 0 garch_acf 5.53
hw_alpha 0 diff1_acf10 0 x_pacf5 0 entropy 11.65
trend 0 arch_lm 0 x_acf10 0
flat_spots 0 diff1_acf1 0 unitroot_pp 0
series_length 0 stability 0 arch_r2 1.37

To replicate this results use:

python -m tsfeatures.compare_with_r --results_directory /some/path
                                    --dataset_name Daily --num_obs 100

Sesonal data (100 Hourly M4 time series)

feature diff feature diff feature diff feature diff
series_length 0 seas_acf1 0 trend 2.28 hurst 26.02
flat_spots 0 x_acf1 0 arch_r2 2.29 hw_beta 32.39
nperiods 0 unitroot_kpss 0 alpha 2.52 trough 35
crossing_points 0 nonlinearity 0 beta 3.67 peak 69
seasonal_period 0 diff1_acf10 0 linearity 3.97
lumpiness 0 x_acf10 0 curvature 4.8
stability 0 seas_pacf 0 e_acf10 7.05
arch_lm 0 unitroot_pp 0 garch_r2 7.32
diff2_acf1 0 spike 0 hw_gamma 7.32
diff2_acf10 0 seasonal_strength 0.79 hw_alpha 7.47
diff1_acf1 0 e_acf1 1.67 garch_acf 7.53
diff2x_pacf5 0 arch_acf 2.18 entropy 9.45

To replicate this results use:

python -m tsfeatures.compare_with_r --results_directory /some/path \
                                    --dataset_name Hourly --num_obs 100

Authors

More Repositories

1

statsforecast

Lightning ⚡️ fast forecasting with statistical and econometric models.
Python
3,846
star
2

neuralforecast

Scalable and user friendly neural 🧠 forecasting algorithms.
Python
3,001
star
3

nixtla

TimeGPT-1: production ready pre-trained Time Series Foundation Model for forecasting and anomaly detection. Generative pretrained transformer for time series trained on over 100B data points. It's capable of accurately predicting various domains such as retail, electricity, finance, and IoT with just a few lines of code 🚀.
Jupyter Notebook
2,208
star
4

hierarchicalforecast

Probabilistic Hierarchical forecasting 👑 with statistical and econometric methods.
Python
568
star
5

mlforecast

Scalable machine 🤖 learning for time series forecasting.
Python
501
star
6

Nixtla

Automated time series processing and forecasting.
Python
253
star
7

transfer-learning-time-series

Transfer 🤗 Learning for Time Series Forecasting
Jupyter Notebook
123
star
8

datasetsforecast

Datasets for time series forecasting
Jupyter Notebook
38
star
9

fpp3-python

Forecasting: principles and practice in python
Jupyter Notebook
13
star
10

timegpt-forecaster-streamlit

TimeGPT forecaster example using streamlit
Python
12
star
11

vantage

Use TimeGPT to predict cloud costs and detect anomalies.
Python
11
star
12

public-slides

Nixtla Public Slides
Python
6
star
13

nixtlats

6
star
14

popol-vuh

Popol Vuh: Nixtla's operating system
Python
6
star
15

utilsforecast

Python
4
star
16

nixtlar

R SDK for TimeGPT
R
3
star
17

m4-forecasts

ZIP version of M4 forecasts uploaded to https://github.com/Mcompetitions/M4-methods/tree/master/Point%20Forecasts.
2
star
18

m5-forecasts

ZIP version of dataset and forecasts uploaded to https://drive.google.com/drive/folders/1D6EWdVSaOtrP1LEFh1REjI3vej6iUS_4.
2
star
19

nixtla-commons

Nixtla shared assets
CSS
2
star
20

blog

Jupyter Notebook
1
star
21

docs

MDX
1
star
22

how-to-contribute-nixtlaverse

Instruction to contribute to the Nixtla libraries
1
star