#statistical #distribution #data #statistics #compare #sample #test

bin+lib kolmogorov_smirnov

Rust 库中柯尔莫哥罗夫-斯米尔诺夫统计检验的实现

4 个版本 (稳定)

使用旧 Rust 2015

1.1.0 2015 年 12 月 27 日
1.0.1 2015 年 12 月 20 日
1.0.0 2015 年 12 月 19 日
0.1.0 2015 年 12 月 16 日

#370科学

Download history 40/week @ 2024-03-08 31/week @ 2024-03-15 28/week @ 2024-03-22 56/week @ 2024-03-29 34/week @ 2024-04-05 28/week @ 2024-04-12 32/week @ 2024-04-19 30/week @ 2024-04-26 33/week @ 2024-05-03 30/week @ 2024-05-10 32/week @ 2024-05-17 27/week @ 2024-05-24 27/week @ 2024-05-31 18/week @ 2024-06-07 41/week @ 2024-06-14 659/week @ 2024-06-21

751 每月下载次数
8 crates 中使用

Apache-2.0

59KB
1K SLoC

Build Status

作为 Rust 库实现的柯尔莫哥罗夫-斯米尔诺夫统计检验。在此处阅读关于此项目、Rust 和柯尔莫哥罗夫-斯米尔诺夫检验的简介 here

入门指南

Kolmogorov-Smirnov 库作为 crate 提供,因此很容易将其集成到您的程序中。将依赖项添加到您的 Cargo.toml 文件中。

[dependencies]
kolmogorov_smirnov = "1.1.0"

有关最新发布的 crate 的信息可在 crates.io 上找到。

使用测试也很简单,调用带有要比较的两个样本和所需置信水平的 kolmogorov_smirnov::test 函数。

extern crate kolmogorov_smirnov as ks;

let xs = vec!(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
let ys = vec!(12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
let confidence = 0.95;

let result = ks::test(&xs, &ys, confidence);

if !result.is_rejected {
    // Woot! Samples are from the same distribution with 0.95 confidence.
}

或者,如果您有要测试的浮点数或整数数据,可以使用包含的测试运行器,例如 ks_f64.rsks_i32.rs。这些在单列无标题数据文件上运行,并在 0.95 置信水平下测试样本。

$ cargo run -q --bin ks_f64 dat/normal_0_1.tsv dat/normal_0_1.1.tsv
Samples are from the same distribution.
test statistic = 0.0399169921875
critical value = 0.08550809323787689
reject probability = 0.18365715210599798

$ cargo run -q --bin ks_f64 dat/normal_0_1.tsv dat/normal_1_1.1.tsv
Samples are from different distributions.
test statistic = 0.361572265625
critical value = 0.08550809323787689
reject probability = 1

开发柯尔莫哥罗夫-斯米尔诺夫

如果您系统上还没有安装,请安装 Rust 开发工具。然后使用以下方式构建和测试库

cargo test

Docker

提供了包含用于开发软件的工具的 Docker 容器定义。如果尚未安装 Docker,请先安装 Docker,然后启动 Docker 终端。然后在存储库源树顶层运行以下构建命令以创建容器

docker build --rm=true -t statistics .

构建完成后,可以在容器中使用以下命令运行交互式 shell

docker run -it -v "$(pwd):/statistics" --workdir=/statistics statistics /bin/bash

主机机器的当前工作目录在容器中可用作为当前目录,因此可以像前面描述的那样构建和测试库。

cargo test

要查看有关恐慌的更多详细信息,请包含 RUST_BACKTRACE 环境变量。

RUST_BACKTRACE=1 cargo test

构建文档

doc 下的 RestructuredText 格式 Sphinx 文档可以使用 Makefile 编译。

cd doc
make clean html

请参阅此RestructuredText 初学者指南以获取编写 RestructuredText 的指导。

Docker 容器提供了进行此构建所需的 Python、Sphinx 和 LaTeX 的安装。为了在没有中间 shell 的情况下直接在容器中制作文档,请使用

docker run -v "$(pwd):/statistics" --workdir=/statistics/doc statistics make clean html

编译后的文档写入共享位置,并在主机机器上的 doc/_build 下可用。它使用 Github Pageshttp://daithiocrualaoich.github.io/kolmogorov_smirnov 上发布。

要重新发布更新后的文档,首先构建 html。然后创建存储库的副本并检出 gh-pages 分支。创建单独的副本很有用,因为 mastergh-pages 分支非常不同,在它们之间切换带有未提交更改是繁琐的。

cd ..
cp -r kolmogorov_smirnov kolmogorov_smirnov_ghpages
cd kolmogorov_smirnov_ghpages
git reset --hard HEAD
git clean -fdx
git checkout gh-pages

现在从最近生成的文档重新制作此分支的内容。

rm -fr *
cp -r ../kolmogorov_smirnov/doc/_build/html/* .

还需要一个 .nojekyll 文件,以防止 Github 忽略 Sphinx CSS 文件。

touch .nojekyll

提交更改并将 gh-pages 分支推送到 origin 以执行发布。

git push origin gh-pages

要重新生成图表,请运行以下命令。

docker run -v "$(pwd):/statistics" --workdir=/statistics/dat statistics R -e "rmarkdown::render('images.Rmd')"

在 crates.io 上发布

有关上传到 crates.io 仓库的说明在这里。首先使用以下方式登录到网站

cargo login <token>

令牌可以从 crates.io/me 获取。为了发布版本,首先清理并构建软件包

git stash
cargo clean
cargo package

target/package/kolmogorov_smirnov-<版本> 下检查构建的软件包。当满意发布时

cargo publish

并检查 crates.io/crates/kolmogorov_smirnov 上的新更新。

许可协议

Copyright [2015] [Daithi O Crualaoich]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://apache.ac.cn/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

依赖关系

~320–540KB