https://github.com/brendanartley/regressio
A python library for univariate regression, interpolation, and smoothing.
https://github.com/brendanartley/regressio
interpolation python regression smoothing time-series
Last synced: 9 months ago
JSON representation
A python library for univariate regression, interpolation, and smoothing.
- Host: GitHub
- URL: https://github.com/brendanartley/regressio
- Owner: brendanartley
- License: mit
- Created: 2022-07-15T17:14:18.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-12T16:00:10.000Z (about 3 years ago)
- Last Synced: 2025-05-01T20:37:11.002Z (about 1 year ago)
- Topics: interpolation, python, regression, smoothing, time-series
- Language: Python
- Homepage:
- Size: 938 KB
- Stars: 342
- Watchers: 5
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Regressio is a python module for univariate regression, interpolation, and smoothing.
The available models are:
- Linear regression
- Ridge regression
- Linear spline
- Isotonic regression
- Bin regression
- Cubic spline
- Natural cubic spline
- Exponential moving average
- Kernel functions (Gaussian, KNN, Weighted average)
There are also functions implemented to generate data samples.
The available data generators are:
- Random walk
- Isotonic sample
## Installation
Regressio is supported in Python 3.8+ and requires only NumPy and Matplotlib.
```python
pip install regressio --upgrade
```
or
```python
pip install git+https://github.com/brendanartley/Regressio
```
## Example Usage
Cubic spline.
```python
# Import modules + classes
from regressio.models import cubic_spline
from regressio.datagen import generate_random_walk
import numpy as np
import matplotlib.pyplot as plt
# Set figsize and seed
plt.rcParams['figure.figsize'] = (10, 5)
np.random.seed(0)
# Generate data sample
x, y = generate_random_walk(150)
# Fit model and plot result
model = cubic_spline(pieces=15)
model.fit(x, y, plot=True, confidence_interval=0.99)
```

Linear regression.
```python
# Import modules + classes
from regressio.models import linear_regression
from regressio.datagen import generate_random_walk
import numpy as np
import matplotlib.pyplot as plt
# Set figsize and seed
plt.rcParams['figure.figsize'] = (10, 5)
np.random.seed(1)
# Generate data sample
x, y = generate_random_walk(100)
# Fit model and plot result
model = linear_regression(degree=5)
model.fit(x, y, plot=True, confidence_interval=0.95)
```

Exponential moving average.
```python
# Import modules + classes
from regressio.models import exp_moving_average
from regressio.datagen import generate_isotonic_sample
import numpy as np
import matplotlib.pyplot as plt
# Set figsize and seed
plt.rcParams['figure.figsize'] = (10, 5)
np.random.seed(6)
# Generate data sample
x, y = generate_isotonic_sample(100)
# Fit model and plot result
model = exp_moving_average(alpha=0.2)
model.fit(x, y, plot=True, confidence_interval=0.90)
```

For more examples, navigate to the [examples.ipynb](https://github.com/brendanartley/Regressio/blob/main/examples.ipynb) file in this repository.
## Contributions
We welcome all to contribute their expertise to the Regressio library. If you are new to open source contributions, [this guide](https://opensource.guide/how-to-contribute/) gives some great tips on how to get started.
If you have a complex feature in mind or find a large bug in the code, please create a detailed issue and we will get to work on it.
## References
- Hyndman, R.J., & Athanasopoulos, G. (2021) Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. OTexts.com/fpp3. Accessed July 2022.
- Kong, Qingkai, et al. Python Programming and Numerical Methods: A Guide for Engineers and Scientists. Academic Press, an Imprint of Elsevier, pythonnumericalmethods.berkeley.edu, Accessed July 2022.
- Li, Bao, (2022). Stat 508: Applied Data Mining, Statistical Learning: Stat Online. PennState: Statistics Online Courses, online.stat.psu.edu/stat508, Accessed July 2022.
- Brett, M. (2014, October 26). An introduction to smoothing. Tutorials on imaging, computing and mathematics. matthew-brett.github.io/teaching, Accessed July 2022.
## BibText
```
@misc{Regressio,
title={Regressio: A python module for univariate regression, interpolation, and smoothing},
author={Brendan Artley},
year={2022},
publisher={GitHub},
journal={GitHub repository},
Howpublished = {\url{https://github.com/brendanartley/Regressio}}
}
```