Rust统计分析库statistical的使用:高效数据计算与统计建模工具

Statistical

一个用Rust编写的简单统计库。它从Python标准库统计模块中汲取灵感。

用法

将此添加到您的Cargo.toml

[dependencies]
statistical = "1.0.0"

并将此添加到您的crate根目录:

extern crate statistical;

贡献

欢迎提交Pull Requests和Issues!

以下是一个使用statistical库的完整示例demo:

extern crate statistical;

fn main() {
    // 创建一个数据样本
    let data = [1.0, 2.0, 3.0, 4.0, 5.0];
    
    // 计算平均值
    let mean = statistical::mean(&data);
    println!("Mean: {}", mean);
    
    // 计算中位数
    let median = statistical::median(&data);
    println!("Median: {}", median);
    
    // 计算标准差
    let std_dev = statistical::standard_deviation(&data, None);
    println!("Standard Deviation: {}", std_dev);
    
    // 计算方差
    let variance = statistical::variance(&data, None);
    println!("Variance: {}", variance);
    
    // 计算最小值
    let min = statistical::min(&data);
    println!("Min: {}", min);
    
    // 计算最大值
    let max = statistical::max(&data);
    println!("Max: {}", max);
}

1 回复

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);
}

性能优化建议

  1. 对于大型数据集,使用par_iter()进行并行计算
  2. 预分配内存以避免重复分配
  3. 使用f64类型以获得最佳精度

注意事项

  • 确保输入数据不包含NaN或无限值
  • 对于小样本数据,建议使用校正后的统计量
  • 检查统计假设是否满足(如正态性、方差齐性等)

该库提供了丰富的统计功能,适合数据科学、机器学习和科学研究等领域的使用。

回到顶部