Changeset 17602
- Timestamp:
- May 9, 2008, 11:02:21 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm
r17431 r17602 1 1 # Copyright (c) 2006 Paul Price, Joshua Hoblitt 2 2 # 3 # $Id: Stats.pm,v 1.2 7 2008-04-11 07:37:14eugene Exp $3 # $Id: Stats.pm,v 1.28 2008-05-09 21:02:21 eugene Exp $ 4 4 5 5 package PS::IPP::Metadata::Stats; … … 109 109 } 110 110 111 # calculate a 3-sigma clipped mean (if Nvalues > 8, reject > 3sigma outliers) 112 if ($type eq "clipmean") { 113 if (scalar @$data > 0) { 114 # Get statistics on the value 115 my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator 116 $stats->add_data(@$data); 117 my $rawMean = $stats->mean(); 118 my $rawStdev = $stats->standard_deviation(); 119 my $rawLimit = 3.0*$rawStdev; 120 121 # clip, if we can 122 if (scalar @$data > 8) { 123 my @clipdata = (); 124 foreach my $value (@$data){ 125 my $delta = abs($value - $rawMean); 126 if ($delta > $rawLimit) { next; } 127 push @clipdata, $value; 128 } 129 my $clipstats = Statistics::Descriptive::Sparse->new(); # Statistics calculator 130 $clipstats->add_data(@clipdata); 131 $entry->{value} = $clipstats->mean(); 132 } else { 133 $entry->{value} = $stats->mean(); 134 } 135 } else { 136 $self->_null_for_type ($entry); 137 } 138 next; 139 } 140 111 141 if ($type eq "stdev") { 112 142 if (scalar @$data > 1) { … … 122 152 } 123 153 $self->_null_for_type ($entry); 154 next; 155 } 156 157 # calculate a 3-sigma clipped stdev (if Nvalues > 8, reject > 3sigma outliers) 158 if ($type eq "clipstdev") { 159 if (scalar @$data > 0) { 160 # Get statistics on the value 161 my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator 162 $stats->add_data(@$data); 163 my $rawMean = $stats->mean(); 164 my $rawStdev = $stats->standard_deviation(); 165 my $rawLimit = 3.0*$rawStdev; 166 167 # clip, if we can 168 if (scalar @$data > 8) { 169 my @clipdata = (); 170 foreach my $value (@$data){ 171 my $delta = abs($value - $rawMean); 172 if ($delta > $rawLimit) { next; } 173 push @clipdata, $value; 174 } 175 my $clipstats = Statistics::Descriptive::Sparse->new(); # Statistics calculator 176 $clipstats->add_data(@clipdata); 177 $entry->{value} = $clipstats->standard_deviation(); 178 } else { 179 $entry->{value} = $stats->standard_deviation(); 180 } 181 } else { 182 $self->_null_for_type ($entry); 183 } 124 184 next; 125 185 } … … 270 330 } 271 331 332 if ($type eq 'clipmean') { 333 push @$data, $value; 334 next; 335 } 336 272 337 if ($type eq 'stdev') { 338 push @$data, $value; 339 next; 340 } 341 342 if ($type eq 'clipstdev') { 273 343 push @$data, $value; 274 344 next;
Note:
See TracChangeset
for help on using the changeset viewer.
