Changeset 1687 for trunk


Ignore:
Timestamp:
Dec 30, 2008, 11:00:24 PM (12 years ago)
Author:
Peter
Message:

fixes #455

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/kolmogorov_smirnov_test.cc

    r1626 r1687  
    3535void test_p_value(test::Suite&);
    3636void test_reset(test::Suite&);
     37void test_ties(test::Suite&);
    3738
    3839int main(int argc, char* argv[])
     
    4445  test_p_value(suite);
    4546  test_reset(suite);
     47  test_ties(suite);
    4648
    4749  return suite.return_value();
     
    150152  suite.add(suite.equal(ks.p_value(), p));
    151153}
     154
     155
     156void test_ties(test::Suite& suite)
     157{
     158  suite.err() << "test ties" << std::endl;
     159  statistics::KolmogorovSmirnov ks;
     160  for (size_t i=0; i<5; ++i)
     161    ks.add(i, true);
     162  ks.add(0, false);
     163  suite.equal(ks.score(), 1.0-0.2);
     164}
  • trunk/yat/statistics/KolmogorovSmirnov.cc

    r1626 r1687  
    143143    double f1=0;
    144144    double f2=0;
    145     // Peter, we should take care of ties!
    146145    while(iter!=data_.end()){
    147       if (iter->second)
    148         f1 += iter->first.second;
    149       else
    150         f2 += iter->first.second;
    151       res.push_back(f1/sum_w1_-f2/sum_w2_);
    152       ++iter;
     146      size_t count=0;
     147      double value = iter->first.first;
     148      while (iter!=data_.end() && iter->first.first==value) {
     149        if (iter->second) {
     150          f1 += iter->first.second;
     151        }
     152        else {
     153          f2 += iter->first.second;
     154        }
     155        ++count;
     156        ++iter;
     157      }
     158      res.resize(res.size()+count, f1/sum_w1_-f2/sum_w2_);
    153159    }
    154160  }
Note: See TracChangeset for help on using the changeset viewer.