Lsq2topb: Difference between revisions
Jump to navigation
Jump to search
imported>Jeremy (Importing text file) |
imported>Jeremy (Importing text file) |
||
Line 1: | Line 1: | ||
===Purpose=== | ===Purpose=== | ||
Fits a polynomial to the top/(bottom) of data. | Fits a polynomial to the top/(bottom) of data. | ||
===Synopsis=== | ===Synopsis=== | ||
:[yi,resnorm,residual,options] = lsq2topb(x,y,order,res,options) | :[yi,resnorm,residual,options] = lsq2topb(x,y,order,res,options) | ||
===Description=== | ===Description=== | ||
For order=1 and fitting to top of data cloud, LSQ2TOPB finds (yi) that minimizes sum( (W\*( y - yi )).\^2 ) where W is a diagonal weighting matrix given by: | For order=1 and fitting to top of data cloud, LSQ2TOPB finds (yi) that minimizes sum( (W\*( y - yi )).\^2 ) where W is a diagonal weighting matrix given by: | ||
>> tsq = residual/res; % (res) is an input | >> tsq = residual/res; % (res) is an input | ||
>> tsqst = ttestp(1-options.tsqlim,5000,2); % T-test limit from table | >> tsqst = ttestp(1-options.tsqlim,5000,2); % T-test limit from table | ||
>> ii = find(tsq<-tsqst); % finds residuals below the line | >> ii = find(tsq<-tsqst); % finds residuals below the line | ||
>> w(ii) = 1./(0.5+tsq(ii)/tsqst); %de-weights pts significantly below line | >> w(ii) = 1./(0.5+tsq(ii)/tsqst); %de-weights pts significantly below line | ||
i.e. w(ii) is smaller for residuals far below/(above) the fit line. | i.e. w(ii) is smaller for residuals far below/(above) the fit line. | ||
====INPUTS==== | ====INPUTS==== | ||
* '''x''' = independent variable Mx1 vector. | * '''x''' = independent variable Mx1 vector. | ||
* '''y''' = dependent variable, Mx1 vector. | * '''y''' = dependent variable, Mx1 vector. | ||
* '''order''' = order of polynomial [scalar] for polynomial function of input (x). If (order) is empty, (options.p) must contain a MxK matrix of basis vectors to fit in lieu of polynomials of (x). | * '''order''' = order of polynomial [scalar] for polynomial function of input (x). If (order) is empty, (options.p) must contain a MxK matrix of basis vectors to fit in lieu of polynomials of (x). | ||
* '''res''' = approximate fit residual [scalar]. | * '''res''' = approximate fit residual [scalar]. | ||
*'''OPTIONAL''' INPUTS: | *'''OPTIONAL''' INPUTS: | ||
* '''''k''' '' = number of components {default = rank of X-block}, and | * '''''k''' '' = number of components {default = rank of X-block}, and | ||
====OUTPUTS==== | ====OUTPUTS==== | ||
* '''yi''' = the fit to input (y). | * '''yi''' = the fit to input (y). | ||
* '''resnorm''' = squared 2-norm of the residual. | * '''resnorm''' = squared 2-norm of the residual. | ||
* '''residual''' = y - yi. | * '''residual''' = y - yi. | ||
===Options=== | ===Options=== | ||
* '''options''' = structure array with the following fields : | * '''options''' = structure array with the following fields : | ||
* '''p''': [ ] If (options.p) is empty, input (order) must be >0. Otherwise, options.p is a MxK matrix of basis vectors. | * '''p''': [ ] If (options.p) is empty, input (order) must be >0. Otherwise, options.p is a MxK matrix of basis vectors. | ||
* '''smooth''': [ ] if >0 this adds smoothing by adding a penalty to the magnitude of the 2nd derivative. (empty or <=0 means no smooth). | * '''smooth''': [ ] if >0 this adds smoothing by adding a penalty to the magnitude of the 2nd derivative. (empty or <=0 means no smooth). | ||
* '''display''': [ 'off' | {'on'} ] governs level of display to command window. | * '''display''': [ 'off' | {'on'} ] governs level of display to command window. | ||
* '''trbflag''': [{'top'} | 'bottom' | 'middle'] flag that tells algorithm to fit (yi) to the top, bottom, or middle of the data cloud. | * '''trbflag''': [{'top'} | 'bottom' | 'middle'] flag that tells algorithm to fit (yi) to the top, bottom, or middle of the data cloud. | ||
* '''tsqlim''': [0.99] limit that govers whether a data point is outside the fit residual defined by input (res). | * '''tsqlim''': [0.99] limit that govers whether a data point is outside the fit residual defined by input (res). | ||
* '''stopcrit''': [1e-4 1e-4 1000 360] stopping criteria, iteration is continued until one of the stopping criterion is met [(rel tol) (abs tol) (max \# iterations) (max time [seconds])]. | * '''stopcrit''': [1e-4 1e-4 1000 360] stopping criteria, iteration is continued until one of the stopping criterion is met [(rel tol) (abs tol) (max \# iterations) (max time [seconds])]. | ||
* '''initwt''': [ ] empty or Mx1 vector of initial weights (0<=w<=1). | * '''initwt''': [ ] empty or Mx1 vector of initial weights (0<=w<=1). | ||
===See Also=== | ===See Also=== | ||
[[baseine]], [[baselinew]], [[fastnnls]] | [[baseine]], [[baselinew]], [[fastnnls]] |
Revision as of 15:25, 3 September 2008
Purpose
Fits a polynomial to the top/(bottom) of data.
Synopsis
- [yi,resnorm,residual,options] = lsq2topb(x,y,order,res,options)
Description
For order=1 and fitting to top of data cloud, LSQ2TOPB finds (yi) that minimizes sum( (W\*( y - yi )).\^2 ) where W is a diagonal weighting matrix given by:
>> tsq = residual/res; % (res) is an input
>> tsqst = ttestp(1-options.tsqlim,5000,2); % T-test limit from table
>> ii = find(tsq<-tsqst); % finds residuals below the line
>> w(ii) = 1./(0.5+tsq(ii)/tsqst); %de-weights pts significantly below line
i.e. w(ii) is smaller for residuals far below/(above) the fit line.
INPUTS
- x = independent variable Mx1 vector.
- y = dependent variable, Mx1 vector.
- order = order of polynomial [scalar] for polynomial function of input (x). If (order) is empty, (options.p) must contain a MxK matrix of basis vectors to fit in lieu of polynomials of (x).
- res = approximate fit residual [scalar].
- OPTIONAL INPUTS:
- k = number of components {default = rank of X-block}, and
OUTPUTS
- yi = the fit to input (y).
- resnorm = squared 2-norm of the residual.
- residual = y - yi.
Options
- options = structure array with the following fields :
- p: [ ] If (options.p) is empty, input (order) must be >0. Otherwise, options.p is a MxK matrix of basis vectors.
- smooth: [ ] if >0 this adds smoothing by adding a penalty to the magnitude of the 2nd derivative. (empty or <=0 means no smooth).
- display: [ 'off' | {'on'} ] governs level of display to command window.
- trbflag: [{'top'} | 'bottom' | 'middle'] flag that tells algorithm to fit (yi) to the top, bottom, or middle of the data cloud.
- tsqlim: [0.99] limit that govers whether a data point is outside the fit residual defined by input (res).
- stopcrit: [1e-4 1e-4 1000 360] stopping criteria, iteration is continued until one of the stopping criterion is met [(rel tol) (abs tol) (max \# iterations) (max time [seconds])].
- initwt: [ ] empty or Mx1 vector of initial weights (0<=w<=1).