Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
package SDAccum;
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
$self->{sum} = 0.0;
|
||||
$self->{sum2} = 0.0;
|
||||
$self->{num} = 0;
|
||||
bless $self, $class;
|
||||
return $self;
|
||||
}
|
||||
sub count {
|
||||
my $self = shift;
|
||||
return $self->{num};
|
||||
}
|
||||
sub mean {
|
||||
my $self = shift;
|
||||
return ($self->{num}>0) ? $self->{sum}/$self->{num} : 0.0;
|
||||
}
|
||||
sub variance {
|
||||
my $self = shift;
|
||||
my $m = $self->mean;
|
||||
return ($self->{num}>0) ? $self->{sum2}/$self->{num} - $m * $m : 0.0;
|
||||
}
|
||||
sub stddev {
|
||||
my $self = shift;
|
||||
return sqrt($self->variance);
|
||||
}
|
||||
sub value {
|
||||
my $self = shift;
|
||||
my $v = shift;
|
||||
$self->{sum} += $v;
|
||||
$self->{sum2} += $v * $v;
|
||||
$self->{num}++;
|
||||
return $self->stddev;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
my $sdacc = SDAccum->new;
|
||||
my $sd;
|
||||
|
||||
foreach my $v ( 2,4,4,4,5,5,7,9 ) {
|
||||
$sd = $sdacc->value($v);
|
||||
}
|
||||
print "std dev = $sd\n";
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# <(x - <x>)²> = <x²> - <x>²
|
||||
{
|
||||
my $num, $sum, $sum2;
|
||||
sub stddev {
|
||||
my $x = shift;
|
||||
$num++;
|
||||
return sqrt(
|
||||
($sum2 += $x**2) / $num -
|
||||
(($sum += $x) / $num)**2
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
print stddev($_), "\n" for qw(2 4 4 4 5 5 7 9);
|
||||
|
|
@ -0,0 +1 @@
|
|||
perl -MMath::StdDev -e '$d=new Math::StdDev;foreach my $v ( 2,4,4,4,5,5,7,9 ) {$d->Update($v); print $d->variance(),"\n"}'
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
use Math::StdDev;
|
||||
$d=new Math::StdDev;
|
||||
foreach my $v ( 2,4,4,4,5,5,7,9 ) {
|
||||
$d->Update($v);
|
||||
print $d->variance(),"\n"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue