source: trunk/src/RegressionNaive.cc @ 235

Last change on this file since 235 was 235, checked in by Peter, 17 years ago

Major modifications

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.3 KB
Line 
1// $Id: RegressionNaive.cc 235 2005-02-21 14:53:48Z peter $
2
3
4#include "RegressionNaive.h"
5
6#include "Averager.h"
7#include "Regression.h"
8#include "vector.h"
9#include "WeightedAverager.h"
10
11#include <iostream>
12
13
14namespace theplu {
15namespace statistics {
16
17 
18  RegressionNaive::RegressionNaive(void)
19    : Regression(), m_(0.0), m_err_(0.0)
20  {
21  }
22
23  void RegressionNaive::fit(const gslapi::vector& x, const gslapi::vector& y)
24  {
25    Averager a;
26    for (size_t i=0; i<y.size(); i++)
27      a.add(y(i));
28    m_=a.mean();
29    s2_=a.variance();
30    m_err_=a.standard_error();
31  }
32
33  void RegressionNaive::fit(const gslapi::vector& x,
34                            const gslapi::vector& y,
35                            const gslapi::vector& w)
36  {
37    WeightedAverager a;
38    for (size_t i=0; i<y.size(); i++)
39      a.add(y(i), w(i));
40    m_=a.mean();
41    m_err_=a.standard_error();
42    s2_=m_err_*m_err_*w.sum(); 
43  }
44
45  void RegressionNaive::predict(const double x, double& y, double& y_err, 
46                                const double w) 
47  { 
48    x_ = x;
49    y = m_; 
50    y_err = sqrt(m_err_*m_err_ + s2_/w);
51  }
52 
53  std::ostream& RegressionNaive::print(std::ostream& s) const
54  {
55    s << x_ << "\t" 
56      << m_ << "\t"
57      << sqrt(m_err_*m_err_ + s2_);
58    return s;
59  }
60 
61  std::ostream& RegressionNaive::print_header(std::ostream& s) const
62  {
63    s << "# column 1: x\n"
64      << "# column 2: y\n"
65      << "# column 3: y_err";
66    return s;
67  }
68 
69}} // of namespace cpptools and namespace theplu
Note: See TracBrowser for help on using the repository browser.