Skip to main content

online-stats — Online algorithm for mean, variance, and covariance

The online-stats Python package contains a single function online_stats.add_sample() which updates a sample mean given a new sample, as well as optionally the sample variance and the sample covariance matrix.

The package has no dependencies, as the online_stats.add_sample() function works with any input data type that supports in-place addition and fancy slicing.

Usage

>>> import numpy as np
>>>
>>> # the package
>>> import online_stats
>>>
>>> # online algorithm for the mean
>>> # start from zero
>>> mu = np.zeros(4)
>>>
>>> # generate samples and compute their mean
>>> for i in range(1000):
...     x = np.random.normal([0.1, 0.3, 0.5, 0.7])
...     online_stats.add_sample(i, x, mu)
...
>>> # the mean is computed in place
>>> print(mu)
[0.08804402 0.25896929 0.44891264 0.73418769]
>>>
>>> # compute the variance
>>> mu = np.zeros(4)
>>> var = np.zeros(4)
>>> for i in range(1000):
...     x = np.random.normal([0.1, 0.3, 0.5, 0.7], [0.2, 0.4, 0.6, 0.8])
...     online_stats.add_sample(i, x, mu, var=var)
...
>>> print(mu)
[0.09854301 0.29509305 0.4777673  0.70008311]
>>> print(var**0.5)
[0.19900518 0.4012857  0.59267129 0.81856542]
>>>
>>> # compute the covariance matrix
>>> mu = np.zeros(4)
>>> cov = np.zeros((4, 4))
>>> for i in range(100_000):
...     x = np.random.multivariate_normal([0.1, 0.3, 0.5, 0.7],
...             [[0.2, 0.02, 0.04, 0.06],
...              [0.02, 0.4, 0.06, 0.08],
...              [0.04, 0.06, 0.6, 0.10],
...              [0.06, 0.08, 0.10, 0.8]])
...     online_stats.add_sample(i, x, mu, cov=cov)
...
>>> print(mu)
[0.10095607 0.30486108 0.50113141 0.69912377]
>>> print(cov)
[[0.20101406 0.02105503 0.0382198  0.06220174]
 [0.02105503 0.39909545 0.06192678 0.0791239 ]
 [0.0382198  0.06192678 0.59960537 0.1082596 ]
 [0.06220174 0.0791239  0.1082596  0.80071002]]

Metadata

Release files for online-stats 2023.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for online-stats 2023.6
File Size Uploaded
online_stats-2023.6.tar.gz 2.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for online-stats 2023.6
File Interpreter ABI Platform
online_stats-2023.6-py3-none-any.whl Python 3 none any Details

Total release size: 5.4 kB

Release files / online_stats-2023.6.tar.gz

Download URL online_stats-2023.6.tar.gz
Size 2.4 kB
Tags Source
SHA-256 checksum
How to use checksums
fe824878afc4f20a05895142e1c3e5169b0962f607b9a7891a3747077cae46fe
BLAKE2b-256 checksum
How to use checksums
70ee6f3c3095a1712b8cc31ce64404c22302049fe6b13c3d6ccfa32724125d00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.1 CPython/3.11.4

Release files / online_stats-2023.6-py3-none-any.whl

Download URL online_stats-2023.6-py3-none-any.whl
Size 3.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5cf15b049fd6d1c2c93dd7ec31501c06922d93f7b16914a0c61ff6cf9068593a
BLAKE2b-256 checksum
How to use checksums
7b8d44f8ee8aaf48d052674fd4e96407bd453550be8c71808f1d8251ea33b8ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.1 CPython/3.11.4

Release history Release notifications | RSS feed

This release

2023.6 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page