{ "info": { "author": "Filippo Bovo", "author_email": "bovo.filippo@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3" ], "description": "# Robustats\n\nRobustats is a Python library for high-performance computation of robust statistical estimators.\n\nThe functions that compute the robust estimators are [implemented in C](c) for speed and [called by Python](robustats).\n\nEstimators implemented in the library:\n\n- **Weighted Median** (temporal complexity: `O(n)`) \\[1, 2, 3\\]\n- **Medcouple** (temporal complexity: `O(n * log(n))`) [4, 5, 6, 7]\n- **Mode** (temporal complexity: `O(n * log(n))`) [8]\n\n## How to Install\n\nThis library requires Python 3.\n\nYou can install the library directly from GitHub using the following command.\n\n```shell\npip install -e 'git+https://github.com/FilippoBovo/robustats.git#egg=robustats'\n```\n\nOtherwise, you may clone the repository, and install and test the Robustats package in the following way.\n\n```shell\ngit clone https://github.com/FilippoBovo/robustats.git\ncd robustats\npip install -e .\npython -m unittest\n```\n\n## How to Use\n\nThis is an example of how to use the Robustats library in Python.\n\n```python\nimport numpy as np\nimport robustats\n\n\n# Weighted Median\nx = np.array([1.1, 5.3, 3.7, 2.1, 7.0, 9.9])\nweights = np.array([1.1, 0.4, 2.1, 3.5, 1.2, 0.8])\n\nweighted_median = robustats.weighted_median(x, weights)\n\nprint(\"The weighted median is {}\".format(weighted_median))\n# Output: The weighted median is 2.1\n\n\n# Medcouple\nx = np.array([0.2, 0.17, 0.08, 0.16, 0.88, 0.86, 0.09, 0.54, 0.27, 0.14])\n\nmedcouple = robustats.medcouple(x)\n\nprint(\"The medcouple is {}\".format(medcouple))\n# Output: The medcouple is 0.7692307692307692\n\n\n# Mode\nx = np.array([1., 2., 2., 3., 3., 3., 4., 4., 5.])\n\nmode = robustats.mode(x)\n\nprint(\"The mode is {}\".format(mode))\n# Output: The mode is 3.0\n```\n\n## How to Contribute\n\nIf you wish to contribute to this library, please follow the patterns and style of the rest of the code.\n\nTips:\n\n- In C, use `malloc` to allocate memory to the heap, instead of creating arrays that allocate memory to the stack, as with large array we would incur in a [segmentation fault due to stack overflow](https://stackoverflow.com/a/1847886).\n- Avoid recursions where possible to limit the spatial complexity of the problem. In place of recursions, use loops.\n\n## References\n\n\\[1\\] [Cormen, Leiserson, Rivest, Stein - Introduction to Algorithms (3rd Edition)](https://books.google.co.uk/books?id=aefUBQAAQBAJ&lpg=PR5&ots=dN8rWuZQaW&dq=Cormen%2C%20Leiserson%2C%20Rivest%2C%20Stein%20-%20Introduction%20to%20Algorithms&lr&pg=PP1#v=onepage&q&f=false).\n\n\\[2\\] [Cormen - Introduction to Algorithms (3rd Edition) - Instructor's Manual](https://cdn.manesht.ir/19908/Introduction%20to%20Algorithms.pdf).\n\n\\[3\\] [Weighted median on Wikipedia](https://en.wikipedia.org/wiki/Weighted_median).\n\n\\[4\\] [G. Brys; M. Hubert; A. Struyf (November 2004). \"A Robust Measure of Skewness\". *Journal of Computational and Graphical Statistics*. **13** (4): 996\u20131017.](https://doi.org/10.1198%2F106186004X12632)\n\n\\[5\\] [Donald B. Johnson; Tetsuo Mizoguchi (May 1978). \"Selecting The Kth Element In X + Y And X1 + X2 +...+ Xm\". *SIAM Journal on Computing*. **7** (2): 147\u2013153.](https://doi.org/10.1137%2F0207013)\n\n\\[6\\] [Medcouple implementation in Python by Jordi Guti\u00e9rrez Hermoso.](http://inversethought.com/hg/)\n\n\\[7\\] [Medcouple on Wikipedia.](https://en.wikipedia.org/wiki/Medcouple)\n\n\\[8\\] [David R. Bickel, Rudolf Fr\u00fchwirth. \"On a fast, robust estimator of the mode: Comparisons to other robust estimators with applications\", *Computational Statistics & Data Analysis*, Volume 50, Issue 12, 2006, Pages 3500-3530, ISSN 0167-9473.](https://doi.org/10.1016/j.csda.2005.07.011)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/FilippoBovo/robustats/archive/v0.1.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/FilippoBovo/robustats", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "robustats", "package_url": "https://pypi.org/project/robustats/", "platform": "", "project_url": "https://pypi.org/project/robustats/", "project_urls": { "Download": "https://github.com/FilippoBovo/robustats/archive/v0.1.2.tar.gz", "Homepage": "https://github.com/FilippoBovo/robustats" }, "release_url": "https://pypi.org/project/robustats/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "Robustats is a Python library for high-performance computation of robust statistical estimators.", "version": "0.1.2" }, "last_serial": 5662490, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "5ef7af428420d6ee00b4951c4a170ec2", "sha256": "d773fb7e4d1560acdfa55cd1e6a4772535d881b00254449a8e8e7ee151e365bb" }, "downloads": -1, "filename": "robustats-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5ef7af428420d6ee00b4951c4a170ec2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11528, "upload_time": "2019-08-11T15:19:35", "url": "https://files.pythonhosted.org/packages/7e/a5/b0faef6b30b69f9f8763e544c47e37f0103ba8a9d2fa61159b7957aa63c1/robustats-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5ef7af428420d6ee00b4951c4a170ec2", "sha256": "d773fb7e4d1560acdfa55cd1e6a4772535d881b00254449a8e8e7ee151e365bb" }, "downloads": -1, "filename": "robustats-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5ef7af428420d6ee00b4951c4a170ec2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11528, "upload_time": "2019-08-11T15:19:35", "url": "https://files.pythonhosted.org/packages/7e/a5/b0faef6b30b69f9f8763e544c47e37f0103ba8a9d2fa61159b7957aa63c1/robustats-0.1.2.tar.gz" } ] }