2个版本
| 0.1.1 | 2024年1月9日 |
|---|---|
| 0.1.0 | 2024年1月9日 |
#551 in 算法
55KB
770 行
Hyte 🦀
Hyte是一个支持Z、T和Pearson卡方检验的Rust假设检验库crate。
安装
在您的 Cargo.toml 文件中包含以下内容。
[dependencies]
hyte = "0.1.0"
快速入门
以下内容可折叠,每个都包含帮助您入门的片段。
执行Z检验
单样本Z检验
您可以使用 z::test 函数执行单样本Z检验,该函数接受以下参数
- data:
Vec<Number> - expected_mean:
Number - tail:
Tails::LOWER、Tails::UPPER或Tails::BOTH - print_output:
bool
其中 Number 是一个泛型,接受整数和浮点数。以下是一个如何执行下尾单样本Z检验的示例
use hyte::z;
use hyte::utils::Tails;
fn main() {
let data = vec![1, 2, 3, 4, 5];
let results = z::test(data, 3.5, Tails::LOWER, true).unwrap();
}
如果您需要执行上尾或双尾Z检验,只需将 Tails::UPPER 或 Tails::BOTH 变体传递给 tail 即可。
基于数值摘要的单样本Z检验
您还可以使用 z::test_dataless 函数执行Z检验,该函数接受包括观察到的均值、样本大小和总体标准差在内的数值摘要,所有这些都代替了数据。函数 z::test_dataless 接受以下参数
- observed_mean:
Number - expected_mean:
Number - sample_size:
u32 - pop_sd:
Number - tail:
Tails::LOWER、Tails::UPPER或Tails::BOTH - print_output:
bool
以下是一个示例
use hyte::z;
use hyte::utils::Tails;
fn main() {
let results = z::test_dataless(1.2, 1.0, 30, 0.5, Tails::LOWER, true).unwrap();
}
执行T检验
单样本T检验
您可以使用 t::test 函数进行单样本T检验,该函数需要以下参数
- data:
Vec<Number> - expected_mean:
Number - tail:
Tails::LOWER、Tails::UPPER或Tails::BOTH - print_output:
bool
其中 Number 是一个泛型,可以接受整数和浮点数。以下是一个如何进行单样本T检验的例子
use hyte::t;
use hyte::utils::Tails;
fn main() {
let data = vec![2.5, 2.9, 3.1, 2.6, 2.7, 2.8, 3.0, 3.2];
let results = t::test(data, 3, Tails::LOWER, true).unwrap();
}
基于数值摘要的单样本T检验
您还可以使用 t::test_dataless 函数进行T检验,该函数接受数值摘要,包括观察均值、样本大小和总体标准差,这些都可以代替数据。该 t::test_dataless 函数需要以下参数
- observed_mean:
Number - expected_mean:
Number - sample_size:
u32 - pop_sd:
Number - tail:
Tails::LOWER、Tails::UPPER或Tails::BOTH - print_output:
bool
以下是一个示例
use hyte::t;
use hyte::utils::Tails;
fn main() {
let results = t::test_dataless(1.2, 1.0, 30, 0.5, Tails::LOWER, true).unwrap();
}
双样本T检验
Hyte提供了 t::test_two_samples 函数,用于执行双样本T检验。它需要以下参数
- data1:
Vec<Number> - data2:
Vec<Number> - print_output:
bool
以下是一个例子
use hyte::t;
fn main() {
let group1 = vec![20, 22, 19, 20, 21, 20, 19, 21, 22, 18];
let group2 = vec![22, 24, 23, 24, 25, 23, 24, 23, 22, 24];
let results = t::test_two_samples(group1, group2, true).unwrap();
}
执行皮尔逊卡方检验
chisquare 模块仅包含一个函数 chisquare::test,该函数可用于执行皮尔逊卡方检验的独立性和拟合优度。它需要以下参数
- test_type:
&str - observed_matrix:
Matrix<Number> - gof_probabilities:
Option<Vec<f64>> - print_output:
bool
其中 Matrix<Number> 是一个枚举,有两个变体:Matrix::TwoDimensional(Vec<Vec<Number>>) 和 Matrix::OneDimensional(Vec<Number>).
独立性检验
要执行独立性检验,必须在 test_type 中传递
"toi"Option::NoneMatrix::TwoDimensional(Vec<Vec<Number>>)
以下是一个例子
use hyte::chisquare;
use hyte::utils::Matrix;
fn main() {
let observed_frequencies = Matrix::TwoDimensional(vec![vec![762, 327, 468],
vec![484, 239, 477]]);
let results = chisquare::test(
"toi",
observed_frequencies,
None,
true
).unwrap();
}
拟合优度
要执行拟合优度检验,必须在 test_type 中传递
"gof"Option::Some(f64)矩阵::一维(Vec<Number>)到observed_matrix
以下是一个例子
use hyte::chisquare;
use hyte::utils::Matrix;
fn main() {
let results = chisquare::test(
"gof",
Matrix::OneDimensional(vec![30, 40, 30]),
Some(vec![0.25, 0.5, 0.25]),
true
).unwrap();
}
结束测试
使用 conclude 结束,并自定义显著性水平
所有测试结果的实例,如 ZResult、TResult 和 ChiSquareResult,都有一个返回 Conclusion 变体(Reject 或 DoNotReject 之一)的 conclude 方法。该方法接受两个参数
- 显著性水平:
f64 - print_output:
bool
use hyte::z;
use hyte::utils::Tails;
fn main() {
let results = z::test(vec![1, 2, 3, 4, 5], 3.5, Tails::LOWER, true).unwrap();
let conclusion = results.conclude(0.1, true);
}
conclude 会检查分配给 self.p 的 p 值是否超过了显著性水平。如果 self.p < significance_level,则 conclude 将返回 Reject 变体。否则,它将返回 DoNotReject 变体。
使用 conclude_by_convention 习惯性地结束
conclude_by_convention 是 conclude 的一个替代方案。它假设显著性水平为 0.05,这在统计学中被广泛认为是合适的默认值。
use hyte::z;
use hyte::utils::Tails;
fn main() {
let results = z::test(vec![1, 2, 3, 4, 5], 3.5, Tails::LOWER, true).unwrap();
let conclusion = results.conclude_by_convention(true);
}
获取帮助
该crate的文档可在 docs.rs/hyte 找到。或者,您可以通过调用 help 函数将简短的说明书打印到标准输出。
use hyte::help;
fn main() {
help();
}
依赖关系
~5MB
~95K SLoC