yat/regression/Polynomial.h

Code
Comments
Other
Rev Date Author Line
681 11 Oct 06 jari 1 #ifndef _theplu_yat_regression_polynomial_
681 11 Oct 06 jari 2 #define _theplu_yat_regression_polynomial_
383 12 Aug 05 jari 3
616 31 Aug 06 jari 4 // $Id$
616 31 Aug 06 jari 5
675 10 Oct 06 jari 6 /*
4359 23 Aug 23 peter 7   Copyright (C) 2005, 2006 Jari Häkkinen, Peter Johansson
4359 23 Aug 23 peter 8   Copyright (C) 2007 Peter Johansson
4359 23 Aug 23 peter 9   Copyright (C) 2008 Jari Häkkinen, Peter Johansson
383 12 Aug 05 jari 10
1437 25 Aug 08 peter 11   This file is part of the yat library, http://dev.thep.lu.se/yat
383 12 Aug 05 jari 12
675 10 Oct 06 jari 13   The yat library is free software; you can redistribute it and/or
675 10 Oct 06 jari 14   modify it under the terms of the GNU General Public License as
1486 09 Sep 08 jari 15   published by the Free Software Foundation; either version 3 of the
675 10 Oct 06 jari 16   License, or (at your option) any later version.
675 10 Oct 06 jari 17
675 10 Oct 06 jari 18   The yat library is distributed in the hope that it will be useful,
675 10 Oct 06 jari 19   but WITHOUT ANY WARRANTY; without even the implied warranty of
675 10 Oct 06 jari 20   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
675 10 Oct 06 jari 21   General Public License for more details.
675 10 Oct 06 jari 22
675 10 Oct 06 jari 23   You should have received a copy of the GNU General Public License
1487 10 Sep 08 jari 24   along with yat. If not, see <http://www.gnu.org/licenses/>.
675 10 Oct 06 jari 25 */
675 10 Oct 06 jari 26
680 11 Oct 06 jari 27 #include "OneDimensional.h"
680 11 Oct 06 jari 28 #include "MultiDimensional.h"
675 10 Oct 06 jari 29
383 12 Aug 05 jari 30 namespace theplu {
680 11 Oct 06 jari 31 namespace yat {
747 11 Feb 07 peter 32 namespace utility {
1019 01 Feb 08 peter 33   class VectorBase;
747 11 Feb 07 peter 34 }
383 12 Aug 05 jari 35 namespace regression {
383 12 Aug 05 jari 36
713 21 Dec 06 peter 37   /**
713 21 Dec 06 peter 38      @brief Polynomial regression
4200 19 Aug 22 peter 39
713 21 Dec 06 peter 40      Data are modeled as \f$ y = \alpha + \beta x + \gamma x^2 +
4200 19 Aug 22 peter 41      ... + \delta x_i^{\textrm{power}} + \epsilon_i \f$
713 21 Dec 06 peter 42   */
383 12 Aug 05 jari 43   class Polynomial : public OneDimensional
383 12 Aug 05 jari 44   {
383 12 Aug 05 jari 45   public:
383 12 Aug 05 jari 46
383 12 Aug 05 jari 47     ///
648 14 Sep 06 peter 48     /// @param power degree of polynomial, e.g. 1 for a linear model
383 12 Aug 05 jari 49     ///
703 18 Dec 06 jari 50     explicit Polynomial(size_t power);
383 12 Aug 05 jari 51
383 12 Aug 05 jari 52     ///
383 12 Aug 05 jari 53     /// @brief Destructor
383 12 Aug 05 jari 54     ///
703 18 Dec 06 jari 55     ~Polynomial(void);
383 12 Aug 05 jari 56
383 12 Aug 05 jari 57     ///
726 04 Jan 07 peter 58     /// @brief covariance of parameters
726 04 Jan 07 peter 59     ///
1121 22 Feb 08 peter 60     const utility::Matrix& covariance(void) const;
726 04 Jan 07 peter 61
726 04 Jan 07 peter 62     ///
713 21 Dec 06 peter 63     /// Fit the model by minimizing the mean squared deviation between
648 14 Sep 06 peter 64     /// model and data.
383 12 Aug 05 jari 65     ///
1019 01 Feb 08 peter 66     void fit(const utility::VectorBase& x, const utility::VectorBase& y);
383 12 Aug 05 jari 67
383 12 Aug 05 jari 68     ///
648 14 Sep 06 peter 69     /// @return parameters of the model
383 12 Aug 05 jari 70     ///
713 21 Dec 06 peter 71     /// @see MultiDimensional
713 21 Dec 06 peter 72     ///
1120 21 Feb 08 peter 73     const utility::Vector& fit_parameters(void) const;
383 12 Aug 05 jari 74
429 08 Dec 05 peter 75     ///
4200 19 Aug 22 peter 76     /// @return value in @a x of model
429 08 Dec 05 peter 77     ///
586 19 Jun 06 peter 78     double predict(const double x) const;
383 12 Aug 05 jari 79
728 04 Jan 07 peter 80     /**
728 04 Jan 07 peter 81        \f$ \frac{\sum \epsilon_i^2}{N-\textrm{DF}} \f$
728 04 Jan 07 peter 82        where DF is number of parameters in model.
728 04 Jan 07 peter 83
728 04 Jan 07 peter 84        @return variance of residuals
728 04 Jan 07 peter 85     */
728 04 Jan 07 peter 86     double s2(void) const;
728 04 Jan 07 peter 87
429 08 Dec 05 peter 88     ///
727 04 Jan 07 peter 89     /// @return squared error of model value in @a x
586 19 Jun 06 peter 90     ///
727 04 Jan 07 peter 91     double standard_error2(const double x) const;
385 13 Aug 05 jari 92
383 12 Aug 05 jari 93   private:
386 14 Aug 05 jari 94     MultiDimensional md_;
386 14 Aug 05 jari 95     size_t power_;
383 12 Aug 05 jari 96
383 12 Aug 05 jari 97   };
383 12 Aug 05 jari 98
681 11 Oct 06 jari 99 }}} // of namespaces regression, yat, and theplu
383 12 Aug 05 jari 100
383 12 Aug 05 jari 101 #endif