LinearModel.h
Go to the documentation of this file.
1 #ifndef WIRECELLRESS_LINEARMODEL_H
2 #define WIRECELLRESS_LINEARMODEL_H
3 
4 #include <Eigen/Dense>
5 #include <string>
6 
7 namespace WireCell {
8 
9 class LinearModel {
10 public:
11  LinearModel();
12  virtual ~LinearModel();
13 
14  Eigen::VectorXd& Gety() { return _y; }
15  Eigen::MatrixXd& GetX() { return _X; }
16  Eigen::VectorXd& Getbeta() { return _beta; }
17 
18  virtual void SetData(Eigen::MatrixXd X, Eigen::VectorXd y) { SetX(X); Sety(y); }
19  virtual void Sety(Eigen::VectorXd y) { _y = y; }
20  virtual void SetX(Eigen::MatrixXd X) { _X = X; _beta = Eigen::VectorXd::Zero(X.cols());}
21  virtual void Setbeta(Eigen::VectorXd beta) { _beta = beta; }
22 
23  virtual void Fit() {};
24  Eigen::VectorXd Predict();
25  double chi2_base();
26  double MeanResidual();
28 
29 protected:
30  // Fit: y = X * beta
31  // convention: lowercase: vector, uppercase matrix.
32  Eigen::VectorXd _y;
33  Eigen::MatrixXd _X;
34  Eigen::VectorXd _beta;
35 
36 };
37 
38 }
39 
40 #endif
Eigen::MatrixXd _X
Definition: LinearModel.h:33
Eigen::MatrixXd & GetX()
Definition: LinearModel.h:15
virtual void Setbeta(Eigen::VectorXd beta)
Definition: LinearModel.h:21
std::string string
Definition: nybbler.cc:12
Eigen::VectorXd _beta
Definition: LinearModel.h:34
virtual void SetX(Eigen::MatrixXd X)
Definition: LinearModel.h:20
double y
Eigen::VectorXd Predict()
Definition: LinearModel.cxx:12
Eigen::VectorXd & Gety()
Definition: LinearModel.h:14
Eigen::VectorXd & Getbeta()
Definition: LinearModel.h:16
virtual void SetData(Eigen::MatrixXd X, Eigen::VectorXd y)
Definition: LinearModel.h:18
Definition: Main.h:22
Eigen::VectorXd _y
Definition: LinearModel.h:32
virtual void Fit()
Definition: LinearModel.h:23
virtual void Sety(Eigen::VectorXd y)
Definition: LinearModel.h:19