Ignore:
Timestamp:
Dec 13, 2008, 1:23:39 AM (13 years ago)
Author:
Jari Häkkinen
Message:

Addresses #466 and #425. Added cubic spline interpolation (not complete interface to GSL interpolation stuff).

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/yat/regression/GSLInterpolation.h

    r1637 r1643  
    1 #ifndef _theplu_yat_regression_linear_
    2 #define _theplu_yat_regression_linear_
     1#ifndef _theplu_yat_regression_gslinterpolation_
     2#define _theplu_yat_regression_gslinterpolation_
    33
    44// $Id$
    55
    66/*
    7   Copyright (C) 2004, 2005, 2006, 2007 Jari Häkkinen, Peter Johansson
    8   Copyright (C) 2008 Peter Johansson
     7  Copyright (C) 2008 Jari Häkkinen
    98
    109  This file is part of the yat library, http://dev.thep.lu.se/yat
     
    2423*/
    2524
    26 #include "OneDimensional.h"
    27 
    28 #include <cmath>
     25#include <gsl/gsl_interp.h>
    2926
    3027namespace theplu {
    3128namespace yat {
    32   namespace utility {
    33     class VectorBase;
    34   }
     29namespace utility {
     30  class VectorConstView;
     31}
    3532namespace regression {
    3633
    3734  /**
    38      @brief linear regression.   
    39      
    40      Data are modeled as \f$ y_i = \alpha + \beta (x_i-m_x) +
    41      \epsilon_i \f$.
     35     @brief Documentation please.
    4236  */
    43   class Linear : public OneDimensional
    44   {
    45  
    46   public:
    47     ///
    48     /// @brief The default constructor
    49     ///
    50     Linear(void);
     37  class GSLInterpolation
     38  {
    5139
    52     ///
    53     /// @brief The destructor
    54     ///
    55     virtual ~Linear(void);
    56          
    57     /**
    58        The parameter \f$ \alpha \f$ is estimated as \f$
    59        \frac{1}{n}\sum y_i \f$
    60        
    61        @return the parameter \f$ \alpha \f$
    62     */
    63     double alpha(void) const;
     40  public:
    6441
    6542    /**
    66        The standard deviation is estimated as \f$ \sqrt{\frac{s^2}{n}}
    67        \f$ where \f$ s^2 = \frac{\sum \epsilon^2}{n-2} \f$
    68        
    69        @return standard deviation of parameter \f$ \alpha \f$
     43       @brief Documentation please.
    7044    */
    71     double alpha_var(void) const;
     45    double evaluate(const double x) const;
     46
     47  protected:
     48    /**
     49       @brief The default constructor
     50    */
     51    GSLInterpolation(const gsl_interp_type*, const utility::VectorConstView& x,
     52                     const utility::VectorConstView& y);
    7253
    7354    /**
    74        The parameter \f$ \beta \f$ is estimated as \f$
    75        \frac{\textrm{Cov}(x,y)}{\textrm{Var}(x)} \f$
    76        
    77        @return the parameter \f$ \beta \f$
     55       @brief The destructor
    7856    */
    79     double beta(void) const;
     57    virtual ~GSLInterpolation(void);
    8058
     59  private:
    8160    /**
    82        The standard deviation is estimated as \f$ \frac{s^2}{\sum
    83        (x-m_x)^2} \f$ where \f$ s^2 = \frac{\sum \epsilon^2}{n-2} \f$
     61       Copy Constructor. (not implemented)
     62    */
     63    GSLInterpolation(const GSLInterpolation&);
    8464
    85        @return standard deviation of parameter \f$ \beta \f$
    86     */
    87     double beta_var(void) const;
    88 
    89     /**
    90        Model is fitted by minimizing \f$ \sum{(y_i - \alpha - \beta
    91        (x-m_x))^2} \f$. By construction \f$ \alpha \f$ and \f$ \beta \f$
    92        are independent.
    93     */
    94     void fit(const utility::VectorBase& x, const utility::VectorBase& y) ;
    95    
    96     ///
    97     /// @return \f$ \alpha + \beta x \f$
    98     ///
    99     double predict(const double x) const;
    100 
    101     /**
    102        \f$ \frac{\sum \epsilon_i^2}{N-2} \f$
    103 
    104        @return variance of residuals
    105     */
    106     double s2(void) const;
    107 
    108     /**
    109        The error of the model is estimated as \f$
    110        \textrm{alpha\_err}^2+\textrm{beta\_err}^2*(x-m_x)*(x-m_x)\f$
    111    
    112        @return estimated error of model in @a x
    113     */
    114     double standard_error2(const double x) const;
    115 
    116 
    117   private:
    118     ///
    119     /// Copy Constructor. (not implemented)
    120     ///
    121     Linear(const Linear&);
    122 
    123     double alpha_;
    124     double alpha_var_;
    125     double beta_;
    126     double beta_var_;
     65    gsl_interp_accel* accelerator_;
     66    gsl_interp* interpolator_;
     67    double* x_;
     68    double* y_;
    12769  };
    12870
Note: See TracChangeset for help on using the changeset viewer.