9 releases

Uses old Rust 2015

0.2.2 Jul 8, 2024
0.2.1 Feb 8, 2022
0.2.0 May 17, 2021
0.1.5 Dec 23, 2020
0.1.1 Aug 29, 2018

#275 in Algorithms

Download history 6/week @ 2024-07-23 4/week @ 2024-07-30 1/week @ 2024-08-20 19/week @ 2024-08-27 105/week @ 2024-09-03 38/week @ 2024-09-10 13/week @ 2024-09-17 53/week @ 2024-09-24 14/week @ 2024-10-01 95/week @ 2024-10-08 31/week @ 2024-10-15 4/week @ 2024-10-29 6/week @ 2024-11-05

89 downloads per month
Used in kders

MIT license

18KB
327 lines

kendalls

crates.io docs.rs codecov

Kendall's rank correlation coefficient

Usage

Add this to your Cargo.toml:

[dependencies]
kendalls = "0.2.2"

and this to your crate root:

extern crate kendalls;

Example:

fn main() -> Result<(), kendalls::Error> {
    let (tau_b, significance) = kendalls::tau_b(&[1, 2, 3], &[3, 4, 5])?;
    assert_eq!(tau_b, 1.0);
    assert_eq!(significance, 1.5666989036012806);

    Ok(())
}

lib.rs:

Kendall's tau rank correlation. At this point this is basically a copy-paste from Apache Commons Math library with some additions taken from scipy and R cor.test function

Example usage:

let (tau_b, significance) = kendalls::tau_b(&[1, 2, 3], &[3, 4, 5]).unwrap();
assert_eq!(tau_b, 1.0);
assert_eq!(significance, 1.5666989036012806);

If you want to compute correlation, let's say, for f64 type, then you will have to provide either a custom comparator function or declare Ord trait for your custom floating point numbers type (see float crate).

use std::cmp::Ordering;

let (tau_b, _significance) = kendalls::tau_b_with_comparator(
    &[1.0, 2.0],
    &[3.0, 4.0],
    |a: &f64, b: &f64| a.partial_cmp(&b).unwrap_or(Ordering::Greater),
).unwrap();
assert_eq!(tau_b, 1.0);

The function will return an error if you pass empty arrays into it or x and y arrays' dimensions are not equal.

No runtime deps