Skip to main content

Space-time interpolation and forecasting

Project description

STIF

PyPI - Version Test Test coverage Flake8

"Space-time interpolation and forecasting"

Package for predicting spatio-temporally distributed variables via space-time regression Kriging, using numpy and numba.

Resources

What you can do with this package:

  • create space-time variograms (even on very large datasets)
  • fit space-time variogram models (e.g. using product_sum or sum_metric models)
  • fit regression models on covariates
  • perform space-time variogram Kriging to interpolate/extrapolate from the input data
  • do all this with binary (presence/absence) indicators, e.g. for dynamic species distribution modeling

Examples

Example variogram models

Example PM10 predictions for 2015-03-01 for Germany

Space-time regression Kriging

Using this package, you can do space-time regression Kriging. But what is it exactly? Imagine you have measurements on different days and distributed over a geographical region (basically a table with latitude, longitude, time and the measured variable of interest). And now you want to estimate the value of this variable at locations and dates, at which you didn't measure. This can be the future (forecasting) or just some day in between, where no measurement was taken (interpolation). You may have some other variables (external covariates), that can explain some of the variation of you variable of interest via some form of regression. In this case, it makes sense to do the Kriging only on the residuals of this regression (i.e. regression Kriging). All of this, you can do using this package (and hopefully as simple as possible).

Why this package?

To my knowledge, there is no other Python package for space-time variogram Kriging on unstructured spatio-temporal data. While the R package gstat [^1] can do space-time Kriging, there can be problems with large datasets. Furthermore, the R package obviously doesn't play well with the Python ecosystem, e.g. using Keras/tensorflow for the regression part of regression Kriging.

There is the excellent scikit-gstat [^2], but as for now it can not create variograms for unstructured spatio-temporal data and I didn't have the time yet to dive into it and add this feature. So perhaps for now, you may find this package useful.

You can also do something like space-time regression Kriging using one of the more mature Gaussian process libraries out there (since Kriging is actually just Gaussian process regression), but they won't provide you with nice variograms and all the other geostats stuff.

Installation

Via pip:

pip install .                   # for the core package
pip install .[tensorflow]       # for using tensorflow/keras models for covariate regression
pip install .[geo]              # for using coordinate transformations and geo I/O
pip install .[interactive]      # for running the example jupyter notebooks
pip install .[dev]              # for all the development tools used in this project

Development

Installing via pip for development:

pip install -e .[dev]

Testing:

pytest --cov=stif --junitxml=docs/source/_static/reports/junit/junit.xml --html=docs/source/_static/reports/junit/report.html

Reports and badges:

coverage html -d docs/source/_static/reports/htmlcov
coverage xml -o docs/source/_static/reports/coverage.xml
flake8 --statistics --tee --output-file docs/source/_static/reports/flake8stats.txt
flake8 --format=html --htmldir=docs/source/_static/reports/flake8
genbadge tests -i docs/source/_static/reports/junit/junit.xml -o docs/source/_static/tests-badge.svg
genbadge coverage -i docs/source/_static/reports/coverage.xml -o docs/source/_static/coverage-badge.svg
genbadge flake8 -i docs/source/_static/reports/flake8stats.txt -o docs/source/_static/flake8-badge.svg

Check dependencies:

tox

Build sphinx documentation:

sphinx-build -M html docs/source/ docs/build/

Build package:

python -m build

Publish package on PyPI:

twine upload dist/*

Acknowledgements

Heavily inspired by [^3] and the space-time variogram implementation in the R package gstat. Thanks a lot to Sytze de Bruin from Wageningen University for a lot of help with the geostatistics.

[^1]: B. Graeler, E. Pebesma, and G. Heuvelink, “Spatio-Temporal Interpolation using gstat,” The R Journal, vol. 8, pp. 204–218, Jan. 2016, doi: 10.32614/RJ-2016-014.

[^2]: M. Mälicke, “SciKit-GStat 1.0: a SciPy-flavored geostatistical variogram estimation toolbox written in Python,” Geoscientific Model Development, vol. 15, no. 6, pp. 2505–2532, Mar. 2022, doi: 10.5194/gmd-15-2505-2022.

[^3]: G. B. M. Heuvelink, E. Pebesma, and B. Gräler, “Space-Time Geostatistics,” in Encyclopedia of GIS, S. Shekhar, H. Xiong, and X. Zhou, Eds., Cham: Springer International Publishing, 2017, pp. 1919–1926. doi: 10.1007/978-3-319-17885-1_1647.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stif-1.0.1.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

stif-1.0.1-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file stif-1.0.1.tar.gz.

File metadata

  • Download URL: stif-1.0.1.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.2

File hashes

Hashes for stif-1.0.1.tar.gz
Algorithm Hash digest
SHA256 dd5e6de879cb2765be9691f80bf5ea7b01ad6172f40fa50b8754e930e92e1ba3
MD5 6b94cfed8fe935c70eafc1fb2839c7fd
BLAKE2b-256 34e3f2460e77baeda87a90c7135f54e452aba4afde542c245f62602edac67d39

See more details on using hashes here.

File details

Details for the file stif-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: stif-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.2

File hashes

Hashes for stif-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a66d35da04fba1d40c8a838cf9a38bdf49f74dbf6fcfcad23cfebc6ca9e8c7b1
MD5 7b61fc3e80d1807174c1f2bb4be25964
BLAKE2b-256 f039fbee0c5854ff8a9312c2a4bf37f7bd05952ce8ac0d48b2339254f3196635

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page