1 个不稳定版本
0.17.0 | 2022年9月17日 |
---|
#1463 in 数学
用于 mixturs
715KB
14K SLoC
statrs
当前版本: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分布、指数分布、威布尔分布等。常见用法是设置分布并从中采样,这依赖于Rand
crate进行随机数生成。
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);
以及包括erf
、gamma
、ln_gamma
、beta
等在内的实用函数。
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 *.rs
在 src
目录中运行格式化工具。
提交信息
请确保提交信息清晰、明确。
不好
Modify test code
好
test: Update statrs::distribution::Normal test_cdf
依赖项
约4MB
约82K SLoC