File: 08_filter_outliers.t

package info (click to toggle)
libstatistics-basic-perl 1.6611-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 392 kB
  • sloc: perl: 947; makefile: 2
file content (47 lines) | stat: -rw-r--r-- 932 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

use t::locale_hack;
use strict;
use Test;
use Statistics::Basic qw(:all ignore_env);

plan tests => 11;

my @a  = (((1,2,3) x 7), 15);
my @b  = (((1,2,3) x 7));
my $v1 = vector(@a);
my $v2 = vector(@b);
my $c  = computed($v1);
   $c->set_filter(sub {
       my $s = stddev($v1);
       my $m = mean($v1);

       grep { abs( $_-$m ) <= $s } @_
   });

ok( $c, $v2 );
ok( mean($c), mean($v2) );
ok( mean($c), 2 );
ok( median($c), 2 );
ok( mode($c), "[1, 2, 3]" );

$v1->set_vector([6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36]);

my $Q2 = median($v1);
my $lh = computed($v1); $lh->set_filter(sub { grep {$_<$Q2} @_ });
my $uh = computed($v1); $uh->set_filter(sub { grep {$_>$Q2} @_ });
my $Q1 = median( $lh );
my $Q3 = median( $uh );

ok( $Q1, 15 );
ok( $Q2, 40 );
ok( $Q3, 43 );

$v1->set_vector([7, 15, 36, 39, 40, 41]);

$Q2 = median( $v1 );
$Q1 = median( $lh );
$Q3 = median( $uh );

ok( $Q1, 15 );
ok( $Q2, 37.5 );
ok( $Q3, 43 );