Dew Stats Master .NET
FracFit Routine
Summary
Fits rational fraction equation to data.

Unit
RegModels

Declaration
Procedure FracFit(B: TVec; X, Y: TVec; DegNom, DegDenom: Integer; Constant: boolean = false; Weights: TVec = nil);
 Parameter  Description 
Vector of independent variable. 
Vector of dependent variable. 
DegNom Nominator degree. 
DegDenom Denominator degree. 
Constant If false, B[0] i.e. constant term in nominator is set to 0.0. 
Weights Weights (optional). Weights are used only if they are set. 
Returns regression coefficients for rational function. 

Description
The routine fits equations to data by minimizing the sum of squared residuals. The observed values obey the following equation:

where n and d are nominator and denominator polynomial degrees.

Categories
Linearizable regression models
 See Also 
FracEval 

Example 1

In the following example we generate some data. Then we fit power function to this data and retreive it's regression coefficients.

Uses MathExpr, MtxVecTee, Series, RegModels; procedure Example(Series1: TLineSeries); var Y,YHat,B,X: Vector; begin X.Size(100); Y.Size(X); X.Ramp(-5,0.05); // X = (-5, -4.95, ...-0.05) Y.RandGauss(3.5,0.12); // populate sample data FracFit(B,X,Y,2,4); // calculate coefficients, no constant term // evaluate y by using calculated coefficients FracEval(B.Values,X,YHat,2); DrawValues(X,Y,Series1); // draw original data DrawValues(X,YHat,Series2); // draw fitted data end;
#include "MtxVecCpp.h" #include "Math387.hpp" #include "RegModels.hpp" #include "MtxVecTee.hpp" void __fastcall Example(TLineSeries* Series1, TLineSeries* Series2); { Vector X,Y; Vector B, YHat; X->Size(100,false); Y->Size(X); X->Ramp(-5.0, 0.05); // x= -5, -4.95, ...-0.05 Y->RandGauss(3.5, 0.12); // sample data FracFit(B,X,Y,2,4); // calculate coefficients // evaluate y by using calculated coefficients LineEval(B->Values,X, YHat,2,false,NULL); DrawValues(X,Y,Series1,false); // draw original data DrawValues(X,YHat,Series2,false); // draw fitted data }
using Dew.Math; using Dew.Stats.Units; namespace Dew.Examples { private void Example(Steema.TeeChart.Styles.Line line1, Steema.TeeChart.Styles.Line line2) { Vector X = new Vector(100); Vector Y = new Vector(100); Vector B = new Vector(0); Vector YHat = new Vector(0); X.Ramp(-5.0, 0.05); // x= -5.0, -4.95, ... -0.05 Y.RandGauss(3.5, 0.12); // sample data // calculate coefficients RegModels.FracFit(B,X,Y,2,4,false,null); // evaluate y by using calculated coefficients RegModels.FracEval(B.Values,X, YHat,2); MtxVecTee.DrawValues(X,Y,line1,false); MtxVecTee.DrawValues(X,YHat,line2,false); } }


Copyright 2008 Dew Research
http://www.dewresearch.com