Rust统计分析库statistical的使用指南
库简介
statistical是一个高效的Rust统计分析库,专注于提供快速、准确的数据计算和统计建模功能。该库支持多种统计操作,包括描述性统计、概率分布、假设检验和回归分析等。
主要特性
- 描述性统计(均值、中位数、方差、标准差等)
- 概率分布(正态分布、t分布、卡方分布等)
- 假设检验(t检验、方差分析等)
- 回归分析(线性回归、逻辑回归等)
- 高性能计算,支持并行处理
安装方法
在Cargo.toml中添加依赖:
[dependencies]
statistical = "0.4"
使用示例
基础统计计算
use statistical::{mean, median, standard_deviation};
fn main() {
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
println!("均值: {}", mean(&data));
println!("中位数: {}", median(&data));
println!("标准差: {}", standard_deviation(&data));
}
概率分布使用
use statistical::{NormalDistribution, TDistribution};
fn main() {
// 正态分布
let normal = NormalDistribution::new(0.0, 1.0);
println!("正态分布概率: {}", normal.pdf(1.96));
// t分布
let t_dist = TDistribution::new(10);
println!("t分布概率: {}", t_dist.pdf(2.0));
}
假设检验示例
use statistical::{t_test, TTestType};
fn main() {
let sample1 = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let sample2 = vec![2.0, 3.0, 4.0, 5.0, 6.0];
let result = t_test(&sample1, &sample2, TTestType::TwoSample);
println!("t检验结果: p值 = {}", result.p_value);
}
回归分析
use statistical::linear_regression;
fn main() {
let x = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let y = vec![2.0, 4.0, 5.0, 4.0, 5.0];
let model = linear_regression(&x, &y);
println!("回归系数: {}", model.slope);
println!("截距: {}", model.intercept);
println!("R平方: {}", model.r_squared);
}
完整示例代码
// 导入统计库相关模块
use statistical::{mean, median, standard_deviation, NormalDistribution, TDistribution, t_test, TTestType, linear_regression};
fn main() {
println!("=== 基础统计计算示例 ===");
// 创建测试数据
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
// 计算并输出基本统计量
println!("数据: {:?}", data);
println!("均值: {}", mean(&data));
println!("中位数: {}", median(&data));
println!("标准差: {}", standard_deviation(&data));
println!();
println!("=== 概率分布使用示例 ===");
// 创建正态分布实例(均值为0,标准差为1)
let normal = NormalDistribution::new(0.0, 1.0);
println!("正态分布在1.96处的概率密度: {}", normal.pdf(1.96));
// 创建t分布实例(自由度为10)
let t_dist = TDistribution::new(10);
println!("t分布在2.0处的概率密度: {}", t_dist.pdf(2.0));
println!();
println!("=== 假设检验示例 ===");
// 创建两个样本数据
let sample1 = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let sample2 = vec![2.0, 3.0, 4.0, 5.0, 6.0];
// 执行双样本t检验
let result = t_test(&sample1, &sample2, TTestType::TwoSample);
println!("样本1: {:?}", sample1);
println!("样本2: {:?}", sample2);
println!("t检验p值: {}", result.p_value);
println!();
println!("=== 回归分析示例 ===");
// 创建自变量和因变量数据
let x = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let y = vec![2.0, 4.0, 5.0, 4.0, 5.0];
// 执行线性回归分析
let model = linear_regression(&x, &y);
println!("自变量X: {:?}", x);
println!("因变量Y: {:?}", y);
println!("回归系数(斜率): {}", model.slope);
println!("截距: {}", model.intercept);
println!("R平方: {}", model.r_squared);
}
性能优化建议
- 对于大型数据集,使用
par_iter()
进行并行计算
- 预分配内存以避免重复分配
- 使用
f64
类型以获得最佳精度
注意事项
- 确保输入数据不包含NaN或无限值
- 对于小样本数据,建议使用校正后的统计量
- 检查统计假设是否满足(如正态性、方差齐性等)
该库提供了丰富的统计功能,适合数据科学、机器学习和科学研究等领域的使用。