test/ttest.cc

Code
Comments
Other
Rev Date Author Line
822 18 Mar 07 peter 1 // $Id$
822 18 Mar 07 peter 2
822 18 Mar 07 peter 3 /*
2119 12 Dec 09 peter 4   Copyright (C) 2007, 2008 Jari Häkkinen, Peter Johansson
3114 10 Nov 13 peter 5   Copyright (C) 2012, 2013 Peter Johansson
822 18 Mar 07 peter 6
1437 25 Aug 08 peter 7   This file is part of the yat library, http://dev.thep.lu.se/yat
822 18 Mar 07 peter 8
822 18 Mar 07 peter 9   The yat library is free software; you can redistribute it and/or
822 18 Mar 07 peter 10   modify it under the terms of the GNU General Public License as
1486 09 Sep 08 jari 11   published by the Free Software Foundation; either version 3 of the
822 18 Mar 07 peter 12   License, or (at your option) any later version.
822 18 Mar 07 peter 13
822 18 Mar 07 peter 14   The yat library is distributed in the hope that it will be useful,
822 18 Mar 07 peter 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
822 18 Mar 07 peter 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
822 18 Mar 07 peter 17   General Public License for more details.
822 18 Mar 07 peter 18
822 18 Mar 07 peter 19   You should have received a copy of the GNU General Public License
1487 10 Sep 08 jari 20   along with yat. If not, see <http://www.gnu.org/licenses/>.
822 18 Mar 07 peter 21 */
822 18 Mar 07 peter 22
2881 18 Nov 12 peter 23 #include <config.h>
2881 18 Nov 12 peter 24
1248 19 Mar 08 peter 25 #include "Suite.h"
1248 19 Mar 08 peter 26
822 18 Mar 07 peter 27 #include "yat/classifier/Target.h"
822 18 Mar 07 peter 28 #include "yat/statistics/tTest.h"
822 18 Mar 07 peter 29 #include "yat/statistics/utility.h"
1120 21 Feb 08 peter 30 #include "yat/utility/Vector.h"
822 18 Mar 07 peter 31
822 18 Mar 07 peter 32 #include <cmath>
822 18 Mar 07 peter 33 #include <fstream>
822 18 Mar 07 peter 34 #include <iostream>
822 18 Mar 07 peter 35
822 18 Mar 07 peter 36
822 18 Mar 07 peter 37 using namespace theplu::yat;
822 18 Mar 07 peter 38
1248 19 Mar 08 peter 39 int main(int argc, char* argv[])
3043 08 Jun 13 peter 40 {
1248 19 Mar 08 peter 41   test::Suite suite(argc, argv);
822 18 Mar 07 peter 42
1248 19 Mar 08 peter 43   suite.err() << "testing ttest" << std::endl;
1120 21 Feb 08 peter 44   utility::Vector value(31);
822 18 Mar 07 peter 45   std::vector<std::string> label(31,"positive");
3043 08 Jun 13 peter 46   for (size_t i=0; i<16; i++)
822 18 Mar 07 peter 47     label[i] = "negative";
822 18 Mar 07 peter 48   classifier::Target target(label);
822 18 Mar 07 peter 49   target.set_binary(0,false);
822 18 Mar 07 peter 50   target.set_binary(1,true);
3043 08 Jun 13 peter 51   for (size_t i=0; i<value.size(); i++)
822 18 Mar 07 peter 52     value(i)=i;
822 18 Mar 07 peter 53   statistics::tTest test;
1145 25 Feb 08 peter 54   statistics::add(test, value.begin(), value.end(), target);
3043 08 Jun 13 peter 55   double p = test.p_right();
822 18 Mar 07 peter 56   double p2 = test.p_value();
1248 19 Mar 08 peter 57   if (!suite.equal(p2, 2*p) ){
1248 19 Mar 08 peter 58     suite.add(false);
1248 19 Mar 08 peter 59     suite.err() << "Two-sided P-value should equal 2 * one-sided P-value.\n";
822 18 Mar 07 peter 60   }
822 18 Mar 07 peter 61
1248 19 Mar 08 peter 62   return suite.return_value();
822 18 Mar 07 peter 63 }