online-stats


Nameonline-stats JSON
Version 2023.6 PyPI version JSON
download
home_page
SummaryOnline algorithm for mean, variance, and covariance.
upload_time2023-06-13 08:39:29
maintainer
docs_urlNone
author
requires_python>=3.6
license
keywords online algorithm online mean online variance online covariance online statistics
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            *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
-----

```py
>>> 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]]

```


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "online-stats",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "online algorithm,online mean,online variance,online covariance,online statistics",
    "author": "",
    "author_email": "Nicolas Tessore <n.tessore@ucl.ac.uk>",
    "download_url": "https://files.pythonhosted.org/packages/70/ee/6f3c3095a1712b8cc31ce64404c22302049fe6b13c3d6ccfa32724125d00/online_stats-2023.6.tar.gz",
    "platform": null,
    "description": "*online-stats* \u2014 Online algorithm for mean, variance, and covariance\n====================================================================\n\nThe *online-stats* Python package contains a single function\n`online_stats.add_sample()` which updates a sample mean given a new sample, as\nwell as optionally the sample variance and the sample covariance matrix.\n\nThe package has no dependencies, as the `online_stats.add_sample()` function\nworks with any input data type that supports in-place addition and fancy\nslicing.\n\nUsage\n-----\n\n```py\n>>> import numpy as np\n>>>\n>>> # the package\n>>> import online_stats\n>>>\n>>> # online algorithm for the mean\n>>> # start from zero\n>>> mu = np.zeros(4)\n>>>\n>>> # generate samples and compute their mean\n>>> for i in range(1000):\n...     x = np.random.normal([0.1, 0.3, 0.5, 0.7])\n...     online_stats.add_sample(i, x, mu)\n...\n>>> # the mean is computed in place\n>>> print(mu)\n[0.08804402 0.25896929 0.44891264 0.73418769]\n>>>\n>>> # compute the variance\n>>> mu = np.zeros(4)\n>>> var = np.zeros(4)\n>>> for i in range(1000):\n...     x = np.random.normal([0.1, 0.3, 0.5, 0.7], [0.2, 0.4, 0.6, 0.8])\n...     online_stats.add_sample(i, x, mu, var=var)\n...\n>>> print(mu)\n[0.09854301 0.29509305 0.4777673  0.70008311]\n>>> print(var**0.5)\n[0.19900518 0.4012857  0.59267129 0.81856542]\n>>>\n>>> # compute the covariance matrix\n>>> mu = np.zeros(4)\n>>> cov = np.zeros((4, 4))\n>>> for i in range(100_000):\n...     x = np.random.multivariate_normal([0.1, 0.3, 0.5, 0.7],\n...             [[0.2, 0.02, 0.04, 0.06],\n...              [0.02, 0.4, 0.06, 0.08],\n...              [0.04, 0.06, 0.6, 0.10],\n...              [0.06, 0.08, 0.10, 0.8]])\n...     online_stats.add_sample(i, x, mu, cov=cov)\n...\n>>> print(mu)\n[0.10095607 0.30486108 0.50113141 0.69912377]\n>>> print(cov)\n[[0.20101406 0.02105503 0.0382198  0.06220174]\n [0.02105503 0.39909545 0.06192678 0.0791239 ]\n [0.0382198  0.06192678 0.59960537 0.1082596 ]\n [0.06220174 0.0791239  0.1082596  0.80071002]]\n\n```\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Online algorithm for mean, variance, and covariance.",
    "version": "2023.6",
    "project_urls": {
        "Home": "https://github.com/ntessore/online-stats",
        "Issues": "https://github.com/ntessore/online-stats/issues"
    },
    "split_keywords": [
        "online algorithm",
        "online mean",
        "online variance",
        "online covariance",
        "online statistics"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7b8d44f8ee8aaf48d052674fd4e96407bd453550be8c71808f1d8251ea33b8ee",
                "md5": "a1b607d41f83f5ca69b514145eb8a129",
                "sha256": "5cf15b049fd6d1c2c93dd7ec31501c06922d93f7b16914a0c61ff6cf9068593a"
            },
            "downloads": -1,
            "filename": "online_stats-2023.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a1b607d41f83f5ca69b514145eb8a129",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 2968,
            "upload_time": "2023-06-13T08:39:28",
            "upload_time_iso_8601": "2023-06-13T08:39:28.877694Z",
            "url": "https://files.pythonhosted.org/packages/7b/8d/44f8ee8aaf48d052674fd4e96407bd453550be8c71808f1d8251ea33b8ee/online_stats-2023.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "70ee6f3c3095a1712b8cc31ce64404c22302049fe6b13c3d6ccfa32724125d00",
                "md5": "bdccb91c6f0d175af8769975585657e1",
                "sha256": "fe824878afc4f20a05895142e1c3e5169b0962f607b9a7891a3747077cae46fe"
            },
            "downloads": -1,
            "filename": "online_stats-2023.6.tar.gz",
            "has_sig": false,
            "md5_digest": "bdccb91c6f0d175af8769975585657e1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 2438,
            "upload_time": "2023-06-13T08:39:29",
            "upload_time_iso_8601": "2023-06-13T08:39:29.915533Z",
            "url": "https://files.pythonhosted.org/packages/70/ee/6f3c3095a1712b8cc31ce64404c22302049fe6b13c3d6ccfa32724125d00/online_stats-2023.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-13 08:39:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ntessore",
    "github_project": "online-stats",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "online-stats"
}
        
Elapsed time: 0.11363s