Fits ====C:Usersp20529Downloadsnumpydoc-0.5.tardistnumpydoc-0.5numpydoc-0.5

# Functions

- `fits.demo_ransac()` ... RANSAC fit of best circle in image
- `fits.fit_circle()` ... basic circle fit
- `fits.fit_ellipse()` ... ellipse fit (Taubin’s method)
- `fits.fit_exp()` ... exponential fit
- `fits.fit_line()` ... linear regression fit, complete with confidence intervals for mean and values, and with plotting
- `fits.fit_sin()` ... sine fit
- `fits.regress()` ... regression fit, similar to MATLAB

# Details

Collection of fitting functions

`fits.``demo_ransac`()

  Find the best-fit circle in an image, using the RANSAC algorithm

`fits.``fit_circle`(x, y)

  Determine the best-fit circle to given datapoints.

  Parameters: | x : array (N,) x-values. y : array (N,) corresponding y-values.
  Returns: | center : array (2,) x/y coordinates of center of the circle radius : float Circle radius.

  Examples

      >>> r = 2
      >>> center = np.r_[5,5]
      >>> theta = np.r_[0:2*np.pi:10j]
      >>> x = r*np.cos(theta)+center[0]
      >>> y = r*np.sin(theta)+center[1]
      >>> cFit,rFit = thLib.fits.fit_circle(x,y)

`fits.``fit_ellipse`(x, y)

  Ellipse fit by Taubin’s Method

  Parameters: | x : array x-coordinates of the ellipse points y : array y-coordinates of the ellipse points
  Returns: | A : array Ellipse parameters A = [a b c d e f] is the vector of algebraic parameters of thefitting ellipse: ax^2 + bxy + cy^2 +dx + ey + f = 0 The vector A is normed, so that ||A||=1.

  Notes

  Among fast non-iterative ellipse fitting methods, this is perhaps the most accurate and robust.

  This method fits a quadratic curve (conic) to a set of points; if points are better approximated by a hyperbola, this fit will return a hyperbola. To fit ellipses only, use “Direct Ellipse Fit”.

  Published in G. Taubin, “Estimation Of Planar Curves, Surfaces And Nonplanar Space Curves Defined By Implicit Equations, With Applications To Edge And Range Image Segmentation”, IEEE Trans. PAMI, Vol. 13, pages 1115-1138, (1991)

`fits.``fit_exp`(tFit, yFit, plotFlag=False)

  Calculates best-fit parameters for the exponential decay to an offset. This can serve as an example for a general non-linear fit.

  Parameters: | tFit : array (N,) Time values. yFit : array (N,) Function values
  Returns: | offset : float Function offset/bias. amp : float Amplitude of exponential function tau : float Decay time.

  Examples

      >>> t = np.arange(10)
      >>> tau = 2.
      >>> amp = 1.
      >>> offset = 2.
      >>> x = offset + amp*np.exp(-t/tau)
      >>> fitted =  thLib.fits.fit_exp(t,x)

`fits.``fit_line`(x, y, alpha=0.05, newx=[], plotFlag=False)

  Linear regression fit.

  Parameters: | x : ndarray Input / Predictor. y : ndarray Input / Estimator. alpha : float Confidence limit [default=0.05] newx : float or ndarray Values for which the fit and the prediction limits are calculated (optional) plotFlag: int, optional 1 = plot, 0 = no_plot [default]
  Returns: | a : float Intercept b : float Slope ci : ndarray Lower and upper confidence interval for the slope info : dictionary contains return information on - residuals - var_res - sd_res - alpha - tval - df newy : list(ndarray) Predictions for (newx, newx-ciPrediction, newx+ciPrediction)

  Notes

  Example data and formulas are taken from D. Altman, “Practical Statistics for Medicine”

  Examples

      >>> x = np.r_[0:10:11j]
      >>> y = x**2
      >>> (a,b,(ci_a, ci_b),_) = thLib.fits.fit_line(x,y)
      Summary: a=-15.0000+/-12.4590, b=10.0000+/-2.1060
      Confidence intervals: ci_a=(-27.4590 - -2.5410), ci_b=(7.8940 - 12.1060)
      Residuals: variance = 95.3333, standard deviation = 9.7639
      alpha = 0.050, tval = 2.2622, df=9

`fits.``fit_sin`(tList, yList, freq)

  Fit a sine wave with a known frequency to a given set of data.

  y = amplitude * sin(2*pi*freq * tList + phase*pi/180) + bias

  Parameters: | yList : array datapoints tList : float time base, in sec freq : float in Hz
  Returns: | phase : float in degrees amplitude : float bias : float

  Examples

      >>> np.random.seed(1234)
      >>> t = np.arange(0,10,0.1)
      >>> x = 3 + 4*np.sin(2*np.pi*t + 5*np.pi/180) + np.random.randn(len(t))
      >>> (phase, amp, offset) = thLib.fits.fit_sin(t, x, 1)

`fits.``regress`(y, X, alpha=0.05, intercept=True)

  Multilinear regression and confidence intervals. Note that by default, an intercept is added to the design matrix!

  Parameters: | X : ndarray (N,) or (N,p) predictors at each of N observations y : ndarray(N,) observed responses alpha : float, optional Defines the 100*(1-alpha)% confidence level in ci. Default alpha=0.05 intercept : boolean If ‘True’, an intercept is automatically added to the design matrix. If ‘False’, the behavior is like the Matlab “regress” function, and no intercept is added.
  Returns: | fit : float best fit intercept and regression parameters ci : ndarray (2,) confidence intervals for the coefficient estimates at the given alpha level (default: 95%-level)

  See also

  `fit_line`

  Examples

      >>> x = np.array([0, 0, 10, 10])
      >>> y = np.array([1, 3, 11, 13])
      >>> (fit,ci) = thLib.fits.regress(y,x)

      >>> X = np.random.randn(10,2)
      >>> mat = np.hstack( (np.ones( (len(X),1) ), X) )
      >>> pars = np.c_[[2, 4, 5]]
      >>> y = mat.dot(pars)
      >>> y += 0.1*np.random.randn(*y.shape)
      >>> (fit,ci) = thLib.fits.regress(y, mat)