r36650 - in /trunk/libstatistics-basic-perl: Basic.pm Basic/Vector.pm Changes MANIFEST META.yml Makefile.PL debian/changelog lib/Statistics/Basic.pod t/75_filtered_missings.t

ryan52-guest at users.alioth.debian.org ryan52-guest at users.alioth.debian.org
Fri May 29 15:06:20 UTC 2009


Author: ryan52-guest
Date: Fri May 29 15:06:15 2009
New Revision: 36650

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=36650
Log:
New upstream release

Added:
    trunk/libstatistics-basic-perl/t/75_filtered_missings.t
      - copied unchanged from r36649, branches/upstream/libstatistics-basic-perl/current/t/75_filtered_missings.t
Modified:
    trunk/libstatistics-basic-perl/Basic.pm
    trunk/libstatistics-basic-perl/Basic/Vector.pm
    trunk/libstatistics-basic-perl/Changes
    trunk/libstatistics-basic-perl/MANIFEST
    trunk/libstatistics-basic-perl/META.yml
    trunk/libstatistics-basic-perl/Makefile.PL
    trunk/libstatistics-basic-perl/debian/changelog
    trunk/libstatistics-basic-perl/lib/Statistics/Basic.pod

Modified: trunk/libstatistics-basic-perl/Basic.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/Basic.pm?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/Basic.pm (original)
+++ trunk/libstatistics-basic-perl/Basic.pm Fri May 29 15:06:15 2009
@@ -17,7 +17,7 @@
 use Statistics::Basic::Vector;
 use Statistics::Basic::ComputedVector;
 
-our $VERSION = 1.6007;
+our $VERSION = '1.6500';
 our $fmt = new Number::Format;
 
 $ENV{DEBUG} ||= 0;
@@ -39,6 +39,7 @@
     covariance cov
     correlation cor corr
     leastsquarefit LSF lsf
+    handle_missing_values
 ));
 our %EXPORT_TAGS = ( all => \@EXPORT_OK );
 
@@ -57,6 +58,24 @@
 sub correlation    { my $r = eval { Statistics::Basic::Correlation->new( $_[0],$_[1] ) };    croak $@ if $@; $r}
 sub leastsquarefit { my $r = eval { Statistics::Basic::LeastSquareFit->new( $_[0],$_[1] ) }; croak $@ if $@; $r}
 
+sub handle_missing_values {
+    my ($v1,$v2) = @_;
+    my $v3 = eval { computed($v1) }; croak $@ if $@;
+    my $v4 = eval { computed($v2) }; croak $@ if $@;
+
+    $v3->set_filter(sub {
+        my @v = $v2->query;
+        map {$_[$_]} grep { defined $v[$_] and defined $_[$_] } 0 .. $#_;
+    });
+
+    $v4->set_filter(sub {
+        my @v = $v1->query;
+        map {$_[$_]} grep { defined $v[$_] and defined $_[$_] } 0 .. $#_;
+    });
+
+    return ($v3,$v4);
+}
+
 *average = *mean;
 *avg     = *mean;
 *var     = *variance;

Modified: trunk/libstatistics-basic-perl/Basic/Vector.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/Basic/Vector.pm?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/Basic/Vector.pm (original)
+++ trunk/libstatistics-basic-perl/Basic/Vector.pm Fri May 29 15:06:15 2009
@@ -15,7 +15,7 @@
     '""' => sub {
         my $this = $_[0];
         local $" = ", ";
-        my @r = map { $Statistics::Basic::fmt->format_number($_, $ENV{IPRES}) } $this->query;
+        my @r = map { defined $_ ? $Statistics::Basic::fmt->format_number($_, $ENV{IPRES}) : "_" } $this->query;
         $ENV{DEBUG} ? "vector-$this->{tag}:[@r]" : "[@r]";
     },
     fallback => 1; # tries to do what it would have done if this wasn't present.

Modified: trunk/libstatistics-basic-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/Changes?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/Changes (original)
+++ trunk/libstatistics-basic-perl/Changes Fri May 29 15:06:15 2009
@@ -1,3 +1,7 @@
+1.6500: Fri May 29 07:00:10 EDT 2009
+   - I get asked, "does S::B handle missing values?" quite a lot.
+   - YES IT DOES! (now)
+
 1.6007: Sat May  2 07:09:12 EDT 2009
    - fixed copyright information on request
    - fixed various docbugs

Modified: trunk/libstatistics-basic-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/MANIFEST?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/MANIFEST (original)
+++ trunk/libstatistics-basic-perl/MANIFEST Fri May 29 15:06:15 2009
@@ -1,44 +1,45 @@
-MANIFEST
-Basic.pm
-t/05_load_them.t
-t/07_vector.t
-t/10_mean.t
-t/15_variance.t
-t/15_covariance.t
-t/17_stddev.t
-t/20_correlation.t
-t/20_LSF.t
-Makefile.PL
-Changes
-Basic/Vector.pm
+Basic/ComputedVector.pm
+Basic/Correlation.pm
+Basic/Covariance.pm
+Basic/LeastSquareFit.pm
 Basic/Mean.pm
 Basic/Median.pm
 Basic/Mode.pm
+Basic.pm
+Basic/StdDev.pm
 Basic/Variance.pm
-Basic/StdDev.pm
-Basic/Covariance.pm
-Basic/Correlation.pm
-Basic/LeastSquareFit.pm
-t/10_median.t
-t/10_mode.t
-t/53_persistance.t
-t/53_co_persistance.t
-lib/Statistics/Basic.pod
-lib/Statistics/Basic/LeastSquareFit.pod
+Basic/Vector.pm
+Changes
+lib/Statistics/Basic/ComputedVector.pod
 lib/Statistics/Basic/Correlation.pod
 lib/Statistics/Basic/Covariance.pod
+lib/Statistics/Basic/LeastSquareFit.pod
 lib/Statistics/Basic/Mean.pod
 lib/Statistics/Basic/Median.pod
 lib/Statistics/Basic/Mode.pod
+lib/Statistics/Basic.pod
 lib/Statistics/Basic/StdDev.pod
 lib/Statistics/Basic/Variance.pod
 lib/Statistics/Basic/Vector.pod
+Makefile.PL
+MANIFEST
+README
+t/05_load_them.t
+t/07_vector.t
+t/08_cvec.t
+t/08_filter_outliers.t
+t/10_mean.t
+t/10_median.t
+t/10_mode.t
+t/15_covariance.t
+t/15_variance.t
+t/17_stddev.t
+t/19_combo.t
+t/20_correlation.t
+t/20_LSF.t
+t/53_co_persistance.t
+t/53_persistance.t
 t/54_doc_example.t
-t/19_combo.t
-README
-t/08_cvec.t
-Basic/ComputedVector.pm
-t/08_filter_outliers.t
-lib/Statistics/Basic/ComputedVector.pod
 t/60_bigfloats.t
+t/75_filtered_missings.t
 META.yml                                 Module meta-data (added by MakeMaker)

Modified: trunk/libstatistics-basic-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/META.yml?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/META.yml (original)
+++ trunk/libstatistics-basic-perl/META.yml Fri May 29 15:06:15 2009
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:               Statistics-Basic
-version:            1.6007
+version:            1.6500
 abstract:           ~
 author:  []
 license:            LGPL
@@ -11,7 +11,7 @@
     ExtUtils::MakeMaker:  0
 requires:
     Number::Format:  1.61
-    perl:            5.008
+    perl:            5.008001
     Scalar::Util:    0
 resources:
     repository:  http://github.com/jettero/statistics--basic

Modified: trunk/libstatistics-basic-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/Makefile.PL?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/Makefile.PL (original)
+++ trunk/libstatistics-basic-perl/Makefile.PL Fri May 29 15:06:15 2009
@@ -15,7 +15,7 @@
     },
 
     ($ExtUtils::MakeMaker::VERSION ge '6.48'? 
-        (MIN_PERL_VERSION => 5.008,
+        (MIN_PERL_VERSION => 5.008001,
             META_MERGE => {
                 keywords => ['stats','statistics', 'mean', 'average', 'correlation'],
                 resources=> {

Modified: trunk/libstatistics-basic-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/debian/changelog?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/debian/changelog (original)
+++ trunk/libstatistics-basic-perl/debian/changelog Fri May 29 15:06:15 2009
@@ -1,3 +1,9 @@
+libstatistics-basic-perl (1.6500-1) UNRELEASED; urgency=low
+
+  * New upstream release
+
+ -- Ryan Niebur <ryanryan52 at gmail.com>  Fri, 29 May 2009 08:06:06 -0700
+
 libstatistics-basic-perl (1.6007-1) unstable; urgency=low
 
   * Initial Release. (Closes: #526246)

Modified: trunk/libstatistics-basic-perl/lib/Statistics/Basic.pod
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libstatistics-basic-perl/lib/Statistics/Basic.pod?rev=36650&op=diff
==============================================================================
--- trunk/libstatistics-basic-perl/lib/Statistics/Basic.pod (original)
+++ trunk/libstatistics-basic-perl/lib/Statistics/Basic.pod Fri May 29 15:06:15 2009
@@ -158,7 +158,13 @@
 
 =item C<computed()>
 
-Argument must be a blessed vector object.
+Argument must be a blessed vector object.  See the section on
+L<COMPUTED VECTORS> for more information on this.
+
+=item C<handle_missing_values()>
+
+This function should be two vector arguments.  See the section on
+L<MISSING VALUES> for further information on this function.
 
 =back
 
@@ -191,6 +197,52 @@
 
     [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 15]
     [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
+
+=head1 MISSING VALUES
+
+Something I get asked about quite a lot is, "can S::B handle missing values?"
+The answer used to be, "that really depends on your data set, use
+L<grep|perlfunc/grep>," but I recently decided (5/29/09) that it was time to
+just go ahead and add this feature.
+
+Strictly speaking, the feature was already there.  You simply need to add a
+couple filters to your data.  See C<t/75_filtered_missings.t> for the test
+example.
+
+This is what people usually mean when they ask if S::B can "handle" missing
+data:
+
+    my $v1 = vector(1,2,3,undef,4);
+    my $v2 = vector(1,2,3,4, undef);
+    my $v3 = computed($v1);
+    my $v4 = computed($v2);
+
+    $v3->set_filter(sub {
+        my @v = $v2->query;
+        map {$_[$_]} grep { defined $v[$_] and defined $_[$_] } 0 .. $#_;
+    });
+
+    $v4->set_filter(sub {
+        my @v = $v1->query;
+        map {$_[$_]} grep { defined $v[$_] and defined $_[$_] } 0 .. $#_;
+    });
+
+But I've made it even simpler.  Since this is such a common request, I have
+provided a helper function to build the filters automatically:
+
+    my $v1 = vector(1,2,3,undef,4);
+    my $v2 = vector(1,2,3,4, undef);
+
+    my ($f1, $f2) = filter_missing_values($v1, $v2);
+
+Note that in practice, you would still manipulate (insert, and shift) C<$v1> and
+C<$v2>, I<not> the computed vectors!  But for correlations and the like, you
+would use C<$f1> and C<$f2>.
+
+    $v1->insert(5);
+    $v2->insert(6);
+
+    my $correlation = correlation($f1, $f2);
 
 =head1 REUSE DETAILS
 




More information about the Pkg-perl-cvs-commits mailing list