# PowerFit

Advanced Analysis Library Only

AnalysisLibErrType PowerFit (double arrayX[], double arrayY[], double weight[], int numberOfElements, int fitMethod, double tolerance, double fittedData[], double *amplitude, double *power, double *residue);

## Purpose

Fits the data set (x, y) to the power model using the Least Square, Least Absolute Residual, or Bisquare method. The following equation represents the power model:

where a is the amplitude of the model and b is the power. If fitMethod is LEAST_SQUARE, the function finds the amplitude and power of the power model by minimizing the residue as follows:

where | numberOfElements is numberOfElements
| wi is the i-th element of weight
| fi is the i-th element of fittedData
| yi is the i-th element of arrayY

If fitMethod is LEAST_ABSOLUTE_RESIDUAL, the function finds the amplitude and power of the power model by minimizing the residue as follows:

If fitMethod is BISQUARE, the function finds the amplitude and power of the power model by using reweighted least square fitting iteratively, as shown in the following flowchart:

## Parameters

Input
Name | Type | Description
arrayX | double-precision array | The x value of the data set (x, y).
arrayY | double-precision array | The y value of the data set (x, y). If fittedData is NULL, the best fitted array overwrites arrayY.
weight | double-precision array | The weight of each data point. If weight is NULL, the function sets all the elements of weight to 1.
numberOfElements | integer | The length of arrayX, arrayY, and weight.
fitMethod | integer | The fitting method. fitMethod must be one of the following values: LEAST_SQUARE (0) LEAST_ABSOLUTE_RESIDUAL (1) BISQUARE (2) The Least Square method is preferable if the noise of arrayY is Gaussian distributed. The Least Absolute Residual and Bisquare methods are robust fit methods. They are preferable if there are outliers in the observations. In most cases, the Bisquare method is less sensitive to outliers than the Least Absolute Residual method.
tolerance | double-precision | The stop criteria. The function adjusts the amplitude and power iteratively. If the relative difference of residue in two successive iterations is less than tolerance, the function returns the resulting amplitude and power. If tolerance is less than or equal to 0, the function sets tolerance to 0.0001.
Output
Name | Type | Description
fittedData | double-precision array | The y values calculated using the fitted power model. If fittedData is NULL, the best fit array overwrites arrayY.
amplitude | double-precision | The amplitude of the fitted power model.
power | double-precision | The power of the fitted power model.
residue | double-precision | The weighted mean error of the power fit. If fitMethod is LEAST_ABSOLUTE_RESIDUAL, residue is the weighted mean absolute error, as follows: If fitMethod is LEAST_SQUARE or BISQUARE, residue is the weighted mean square error, as follows:

## Return Value

Name | Type | Description
status | AnalysisLibErrType | A value that specifies the type of error that occurred. Refer to analysis.h for definitions of these constants.