1 个不稳定版本

0.17.0 2022年9月17日

#1463 in 数学


用于 mixturs

MIT 协议

715KB
14K SLoC

statrs

Build Status MIT licensed Crates.io

当前版本:v0.16.0

适用于nightly和稳定版Rust。

注意:虽然我会尽量保持向后兼容,但由于这是一个0.x.x项目,API不被视为稳定,因此可能存在破坏性更改,直到v1.0.0。

描述

Statrs为Rust科学计算提供了一系列统计实用工具。包括许多可以采样的常见分布(例如正态分布、指数分布、学生t分布、伽马分布、均匀分布等),以及常见的统计函数,如伽马函数、贝塔函数和误差函数。

该库是将C# Math.NET库中的统计功能迁移到Rust过程中的一个正在进行的工作。尽可能从Math.NET借用库中的所有单元测试,并在必要时填充。

该库是一个正在进行中的项目,尚未完成。未来版本计划继续实现分布以及迁移更多的统计工具。

请查看这里的文档。

使用方法

将最新版本添加到您的Cargo.toml文件中。

[dependencies]
statrs = "0.16"

示例

Statrs包含许多常用分布,包括正态分布、伽马分布、学生t分布、指数分布、威布尔分布等。常见用法是设置分布并从中采样,这依赖于Randcrate进行随机数生成。

use statrs::distribution::Exp;
use rand::distributions::Distribution;

let mut r = rand::rngs::OsRng;
let n = Exp::new(0.5).unwrap();
print!("{}", n.sample(&mut r));

Statrs还包含一些有用的实用特性,用于更详细地检查分布。

use statrs::distribution::{Exp, Continuous, ContinuousCDF};
use statrs::statistics::Distribution;

let n = Exp::new(1.0).unwrap();
assert_eq!(n.mean(), Some(1.0));
assert_eq!(n.variance(), Some(1.0));
assert_eq!(n.entropy(), Some(1.0));
assert_eq!(n.skewness(), Some(2.0));
assert_eq!(n.cdf(1.0), 0.6321205588285576784045);
assert_eq!(n.pdf(1.0), 0.3678794411714423215955);

以及包括erfgammaln_gammabeta等在内的实用函数。

use statrs::statistics::Distribution;
use statrs::distribution::FisherSnedecor;

let n = FisherSnedecor::new(1.0, 1.0).unwrap();
assert!(n.variance().is_none());

贡献

想贡献吗?查看一些标记为帮助所需的问题。

如何贡献

克隆仓库

git clone https://github.com/statrs-dev/statrs

创建一个功能分支

git checkout -b <feature_branch> master

提交代码后

git push -u origin <feature_branch>

然后提交一个PR,最好引用相关的问题。

风格

这个仓库使用 rustfmt,配置文件在 rustfmt.toml 中指定。有关安装和使用说明,请参阅 https://github.com/rust-lang-nursery/rustfmt,并在提交前使用 rustfmt --write-mode overwrite *.rssrc 目录中运行格式化工具。

提交信息

请确保提交信息清晰、明确。

不好

Modify test code

test: Update statrs::distribution::Normal test_cdf

依赖项

约4MB
约82K SLoC