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::None
Matrix::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