OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
NonLinearLeastSquares Class Reference

#include <newmatnl.h>

Inheritance diagram for NonLinearLeastSquares:
FindMaximum2

Public Member Functions

 NonLinearLeastSquares (R1_Col_I_D &pred, int lim=1000, Real crit=0.0001)
 
void Fit (const ColumnVector &, ColumnVector &)
 
Real ResidualVariance () const
 
void GetResiduals (ColumnVector &Z) const
 
void GetStandardErrors (ColumnVector &)
 
void GetCorrelations (SymmetricMatrix &)
 
void GetHatDiagonal (DiagonalMatrix &) const
 
- Public Member Functions inherited from FindMaximum2
void Fit (ColumnVector &, int)
 
virtual ~FindMaximum2 ()
 

Private Member Functions

void Value (const ColumnVector &, bool, Real &, bool &)
 
bool NextPoint (ColumnVector &, Real &)
 
Real LastDerivative (const ColumnVector &)
 
void MakeCovariance ()
 

Private Attributes

Matrix X
 
ColumnVector Y
 
UpperTriangularMatrix U
 
ColumnVector M
 
Real errorvar
 
Real criterion
 
int n_obs
 
int n_param
 
const ColumnVectorDataPointer
 
RowVector Derivs
 
SymmetricMatrix Covariance
 
DiagonalMatrix SE
 
R1_Col_I_DPred
 
int Lim
 

Detailed Description

Definition at line 211 of file newmatnl.h.

Constructor & Destructor Documentation

◆ NonLinearLeastSquares()

NonLinearLeastSquares::NonLinearLeastSquares ( R1_Col_I_D pred,
int  lim = 1000,
Real  crit = 0.0001 
)
inline

Definition at line 232 of file newmatnl.h.

233  : criterion(crit), Pred(pred), Lim(lim) {}
R1_Col_I_D & Pred
Definition: newmatnl.h:228

Member Function Documentation

◆ Fit()

void NonLinearLeastSquares::Fit ( const ColumnVector Data,
ColumnVector Parameters 
)

Definition at line 169 of file newmatnl.cpp.

References FindMaximum2::Fit(), and GeneralMatrix::Nrows().

171 {
172  Tracer tr("NonLinearLeastSquares::Fit");
173  n_param = Parameters.Nrows(); n_obs = Data.Nrows();
174  DataPointer = &Data;
175  FindMaximum2::Fit(Parameters, Lim);
176  cout << "\nConverged" << endl;
177 }
void Fit(ColumnVector &, int)
Definition: newmatnl.cpp:21
const ColumnVector * DataPointer
Definition: newmatnl.h:224
int Nrows() const
Definition: newmat.h:430

◆ GetCorrelations()

void NonLinearLeastSquares::GetCorrelations ( SymmetricMatrix Corr)

Definition at line 193 of file newmatnl.cpp.

References BaseMatrix::i().

194  { MakeCovariance(); Corr << SE.i() * Covariance * SE.i(); }
InvertedMatrix i() const
Definition: newmat6.cpp:325
SymmetricMatrix Covariance
Definition: newmatnl.h:226
DiagonalMatrix SE
Definition: newmatnl.h:227

◆ GetHatDiagonal()

void NonLinearLeastSquares::GetHatDiagonal ( DiagonalMatrix Hat) const

Definition at line 196 of file newmatnl.cpp.

References DiagonalMatrix::ReSize(), BaseMatrix::Row(), and BaseMatrix::SumSquare().

197 {
198  Hat.ReSize(n_obs);
199  for (int i = 1; i<=n_obs; i++) Hat(i) = X.Row(i).SumSquare();
200 }
GetSubMatrix Row(int) const
Definition: submat.cpp:45
virtual Real SumSquare() const
Definition: newmat8.cpp:433
void ReSize(int)
Definition: newmat4.cpp:256

◆ GetResiduals()

void NonLinearLeastSquares::GetResiduals ( ColumnVector Z) const
inline

Definition at line 236 of file newmatnl.h.

236 { Z = Y; }
ColumnVector Y
Definition: newmatnl.h:219

◆ GetStandardErrors()

void NonLinearLeastSquares::GetStandardErrors ( ColumnVector SEX)

Definition at line 190 of file newmatnl.cpp.

References BaseMatrix::AsColumn().

191  { MakeCovariance(); SEX = SE.AsColumn(); }
ColedMatrix AsColumn() const
Definition: newmat6.cpp:332
DiagonalMatrix SE
Definition: newmatnl.h:227

◆ LastDerivative()

Real NonLinearLeastSquares::LastDerivative ( const ColumnVector H)
privatevirtual

Implements FindMaximum2.

Definition at line 166 of file newmatnl.cpp.

167 { return (Derivs * H).AsScalar(); }

◆ MakeCovariance()

void NonLinearLeastSquares::MakeCovariance ( )
private

Definition at line 179 of file newmatnl.cpp.

References BaseMatrix::i(), and BaseMatrix::t().

180 {
181  if (Covariance.Nrows()==0)
182  {
183  UpperTriangularMatrix UI = U.i();
184  Covariance << UI * UI.t() * errorvar;
185  SE << Covariance; // get diagonals
186  for (int i = 1; i<=n_param; i++) SE(i) = sqrt(SE(i));
187  }
188 }
InvertedMatrix i() const
Definition: newmat6.cpp:325
SymmetricMatrix Covariance
Definition: newmatnl.h:226
DiagonalMatrix SE
Definition: newmatnl.h:227
UpperTriangularMatrix U
Definition: newmatnl.h:220
int Nrows() const
Definition: newmat.h:430
TransposedMatrix t() const
Definition: newmat6.cpp:316

◆ NextPoint()

bool NonLinearLeastSquares::NextPoint ( ColumnVector Adj,
Real &  test 
)
privatevirtual

Implements FindMaximum2.

Definition at line 154 of file newmatnl.cpp.

References BaseMatrix::i(), and QRZ().

155 {
156  Tracer tr("NonLinearLeastSquares::NextPoint");
157  QRZ(X, U); QRZ(X, Y, M); // do the QR decomposition
158  test = M.SumSquare();
159  cout << " " << setw(15) << setprecision(10)
160  << test << " " << Y.SumSquare() / (n_obs - n_param);
161  Adj = U.i() * M;
162  if (test < errorvar * criterion) return true;
163  else return false;
164 }
InvertedMatrix i() const
Definition: newmat6.cpp:325
ColumnVector M
Definition: newmatnl.h:221
Real SumSquare() const
Definition: newmat8.cpp:152
UpperTriangularMatrix U
Definition: newmatnl.h:220
void QRZ(Matrix &, UpperTriangularMatrix &)
Definition: hholder.cpp:111
ColumnVector Y
Definition: newmatnl.h:219

◆ ResidualVariance()

Real NonLinearLeastSquares::ResidualVariance ( ) const
inline

Definition at line 235 of file newmatnl.h.

235 { return errorvar; }

◆ Value()

void NonLinearLeastSquares::Value ( const ColumnVector Parameters,
bool  ,
Real &  v,
bool &  oorg 
)
privatevirtual

Implements FindMaximum2.

Definition at line 133 of file newmatnl.cpp.

134 {
135  Tracer tr("NonLinearLeastSquares::Value");
137  // put the fitted values in Y, the derivatives in X.
138  Pred.Set(Parameters);
139  if (!Pred.IsValid()) { oorg=true; return; }
140  for (int i=1; i<=n_obs; i++)
141  {
142  Y(i) = Pred(i);
143  X.Row(i) = Pred.Derivatives();
144  }
145  if (!Pred.IsValid()) { oorg=true; return; } // check afterwards as well
146  Y = *DataPointer - Y; Real ssq = Y.SumSquare();
147  errorvar = ssq / (n_obs - n_param);
148  cout << endl;
149  cout << setw(15) << setprecision(10) << " " << errorvar;
150  Derivs = Y.t() * X; // get the derivative and stash it
151  oorg = false; v = -0.5 * ssq;
152 }
double Real
Definition: include.h:57
virtual void Set(const ColumnVector &X)
Definition: newmatnl.h:197
virtual ReturnMatrix Derivatives()=0
virtual void ReSize(int, int)
Definition: newmat4.cpp:233
R1_Col_I_D & Pred
Definition: newmatnl.h:228
Real SumSquare() const
Definition: newmat8.cpp:152
GetSubMatrix Row(int) const
Definition: submat.cpp:45
virtual bool IsValid()
Definition: newmatnl.h:194
const ColumnVector * DataPointer
Definition: newmatnl.h:224
TransposedMatrix t() const
Definition: newmat6.cpp:316
ColumnVector Y
Definition: newmatnl.h:219
void ReSize(int)
Definition: newmat4.cpp:262

Member Data Documentation

◆ Covariance

SymmetricMatrix NonLinearLeastSquares::Covariance
private

Definition at line 226 of file newmatnl.h.

◆ criterion

Real NonLinearLeastSquares::criterion
private

Definition at line 222 of file newmatnl.h.

◆ DataPointer

const ColumnVector* NonLinearLeastSquares::DataPointer
private

Definition at line 224 of file newmatnl.h.

◆ Derivs

RowVector NonLinearLeastSquares::Derivs
private

Definition at line 225 of file newmatnl.h.

◆ errorvar

Real NonLinearLeastSquares::errorvar
private

Definition at line 222 of file newmatnl.h.

◆ Lim

int NonLinearLeastSquares::Lim
private

Definition at line 229 of file newmatnl.h.

◆ M

ColumnVector NonLinearLeastSquares::M
private

Definition at line 221 of file newmatnl.h.

◆ n_obs

int NonLinearLeastSquares::n_obs
private

Definition at line 223 of file newmatnl.h.

◆ n_param

int NonLinearLeastSquares::n_param
private

Definition at line 223 of file newmatnl.h.

◆ Pred

R1_Col_I_D& NonLinearLeastSquares::Pred
private

Definition at line 228 of file newmatnl.h.

◆ SE

DiagonalMatrix NonLinearLeastSquares::SE
private

Definition at line 227 of file newmatnl.h.

◆ U

UpperTriangularMatrix NonLinearLeastSquares::U
private

Definition at line 220 of file newmatnl.h.

◆ X

Matrix NonLinearLeastSquares::X
private

Definition at line 218 of file newmatnl.h.

◆ Y

ColumnVector NonLinearLeastSquares::Y
private

Definition at line 219 of file newmatnl.h.


The documentation for this class was generated from the following files: