samplics 0.1.0

A rust library for fitting statistical models
Documentation
use samplics::sampling::{EqualProbability, Population, UnstratifiedSample};

#[test]
fn srs_sample() {
    let y: Vec<f32> = vec![10.0, 20.0, 30.0, 40.0, 50.0];
    let pop = Population::new(y, None, None);

    let samp_size1 = 2;
    let mut srs_sample1 = UnstratifiedSample::new(samp_size1, false, None);
    assert!(srs_sample1.samp_size == 2);
    assert!(srs_sample1.pop_size == None);
    assert!(srs_sample1.fpc == 0.0);
    assert!(srs_sample1.with_replacement == false);

    srs_sample1.select(&pop, Some(7));
    assert!(srs_sample1.index == vec![1, 4]);
    assert!(srs_sample1.y == vec![20.0, 50.0]);
    assert!(srs_sample1.pop_size == Some(pop.y.len()));
    assert!(srs_sample1.fpc == samp_size1 as f64 / srs_sample1.pop_size.unwrap() as f64);

    srs_sample1.calculate_probs();
    assert!(srs_sample1.probs.unwrap() == vec![2f64 / 5f64, 1f64 / 5f64]);

    let samp_size2 = 3;
    let mut srs_sample2: UnstratifiedSample<f32> = UnstratifiedSample::new(samp_size2, true, None);
    assert!(srs_sample2.samp_size == 3);
    assert!(srs_sample2.pop_size == None);
    assert!(srs_sample2.fpc == 0.0);
    assert!(srs_sample2.with_replacement == true);

    srs_sample2.select(&pop, Some(15));
    assert!(srs_sample2.index == vec![3, 1, 3]);
    assert!(srs_sample2.y == vec![40.0, 20.0, 40.0]);
    assert!(srs_sample2.pop_size == Some(pop.y.len()));
    assert!(srs_sample2.fpc == samp_size2 as f64 / srs_sample2.pop_size.unwrap() as f64);
}