solarwindpy.fitfunctions.core.FitFunctionο
- class FitFunction(xobs, yobs, xmin=None, xmax=None, xoutside=None, ymin=None, ymax=None, youtside=None, weights=None, wmin=None, wmax=None, logx=False, logy=False)[source]ο
Bases:
ABCAssuming that you donβt want special formatting, call order is:
fit_function = FitFunction(function, TeX_string) fit_function.make_fit()
Instances are callable. If the fit fails, calling the instance will return an array of NaNs the same shape as the x-values.
- __init__(xobs, yobs, xmin=None, xmax=None, xoutside=None, ymin=None, ymax=None, youtside=None, weights=None, wmin=None, wmax=None, logx=False, logy=False)[source]ο
Initialize fit function with observed data.
- Parameters:
xobs (array-like) β Observed x values (independent variable). Shape must match yobs.
yobs (array-like) β Observed y values (dependent variable). Shape must match xobs.
xmin (float, optional) β Range limits for x used in fitting. Values outside this range are excluded from the fit. All boundaries are inclusive (>= or <=).
xmax (float, optional) β Range limits for x used in fitting. Values outside this range are excluded from the fit. All boundaries are inclusive (>= or <=).
xmax β The description is missing.
xoutside (tuple(float, float), optional) β Include only data outside this range in the fit. Useful for excluding a central region. Format: (lower, upper) where lower < upper.
ymin (float, optional) β Range limits for y used in fitting. Values outside this range are excluded from the fit.
ymax (float, optional) β Range limits for y used in fitting. Values outside this range are excluded from the fit.
ymax β The description is missing.
youtside (tuple(float, float), optional) β Include only data outside this range. Format: (lower, upper) where lower < upper.
weights (array-like, optional) β Uncertainties (1-sigma) associated with y values. Used for weighted least squares fitting. If 1-d array, interpreted as diagonal covariance matrix. If 2-d, must be positive definite covariance matrix.
wmin (float, optional) β Weight limits. Observations with weights outside this range are excluded from the fit.
wmax (float, optional) β Weight limits. Observations with weights outside this range are excluded from the fit.
wmax β The description is missing.
logx (bool, default False) β Whether to interpret x or y on a log10 scale. If logy=True, weight selection uses w/(y*ln(10)) for proper error propagation in log space.
logy (bool, default False) β Whether to interpret x or y on a log10 scale. If logy=True, weight selection uses w/(y*ln(10)) for proper error propagation in log space.
logy β The description is missing.
Notes
The fitting procedure uses scipy.optimize.least_squares with robust loss functions (Huber by default) to handle outliers. The initial parameter guess is provided by the p0 property, which must be implemented by subclasses.
All subclasses inherit this documentation automatically through the docstring-inheritance metaclass.
Examples
>>> import numpy as np >>> from solarwindpy.fitfunctions import Gaussian >>> x = np.linspace(-5, 5, 100) >>> y = 3 * np.exp(-0.5 * x**2) + np.random.normal(0, 0.1, 100) >>> fit = Gaussian(x, y, xmin=-3, xmax=3) >>> fit.make_fit() >>> print(f"Fitted mu: {fit.popt['mu']:.3f}")
- property loggerο
- abstract property functionο
Get the function that`curve_fit` fits.
The function is set at instantiation. It doesnβt make sense to change it unless you redefine the entire FitFunction, so there is no new kwarg.
- abstract property p0ο
The initial guess for the FitFunction.
- abstract property TeX_functionο
Function written in LaTeX.
- property argnamesο
The names of the actual function arguments pulled by getfullargspec.
- property fit_boundsο
Bounds used when running the fit.
- property chisq_dofο
Chisq per degree of freedom \(\chi^2_\nu\).
If None, not calculated by make_fit_old. If np.nan, fit failed.
- property dofο
Degrees of freedom in the fit.
- property fit_resultο
- property initial_guess_infoο
- property nobsο
The total number of observations used in the fit.
- property observationsο
- property plotterο
- property poptο
Optimized fit parameters.
- property psigmaο
- property combined_popt_psigmaο
Return optimized parameters and uncertainties as a DataFrame.
- Returns:
DataFrame with columns βpoptβ and βpsigmaβ, indexed by parameter names. Relative uncertainty can be computed as: df[βpsigmaβ] / df[βpoptβ]
- Return type:
pd.DataFrame
- property pcovο
Returns a copy so that the matrix isnβt accidentally edited.
- property rsqο
Coefficient of determination.
Source: <en.wikipedia.org/wiki/Coefficient_of_determination#Definitions>
- property sufficient_dataο
Ensure that we can fit the data before doing any computations.
- property TeX_infoο
- residuals(pct=False, use_all=False)[source]ο
Calculate fit residuals.
- Parameters:
- Returns:
Residuals as observed - fitted.
- Return type:
Examples
>>> # Create FitFunction with constraints >>> ff = Gaussian(x, y, xmin=3, xmax=7) >>> ff.make_fit() >>> >>> # Residuals for fitted region only >>> r_fit = ff.residuals() >>> >>> # Residuals for all original data >>> r_all = ff.residuals(use_all=True) >>> >>> # Percentage residuals >>> r_pct = ff.residuals(pct=True)
Notes
Addresses TODO: βcalculate with all valuesβ¦including those excluded by set_extremaβ (though set_extrema doesnβt exist - constraints are passed in __init__).
- set_fit_obs(xobs_raw, yobs_raw, weights_raw, xmin=None, xmax=None, xoutside=None, ymin=None, ymax=None, youtside=None, wmin=None, wmax=None, logx=False, logy=False)[source]ο
Set the observed values weβll actually use in the fit.
By applying limits to xobs_raw and yobs_raw and checking for finite values.
All boundaries are inclusive <= or >=.
If logy, then make selection of wmin and wmax based on \(w/(y \ln(10))\).
- Parameters:
xobs_raw β The description is missing.
yobs_raw β The description is missing.
weights_raw β The description is missing.
xmin β The description is missing.
xmax β The description is missing.
xoutside β The description is missing.
ymin β The description is missing.
ymax β The description is missing.
youtside β The description is missing.
wmin β The description is missing.
wmax β The description is missing.
logx β The description is missing.
logy β The description is missing.
- make_fit(return_exception=False, **kwargs)[source]ο
Fit the function with the independent xobs and dependent yobs.
Uses least_squares and returns the OptimizeResult object, but treats weights as in curve_fit.
- Parameters:
return_exception (bool) β If True, return exceptions from fitting routine, instead of raising. This is useful when looping through many fits and wanting to identify failed fits after the fact.
**kwargs β The description is missing.