Fit
- class sherpa.fit.Fit(data, model, stat=None, method=None, estmethod=None, itermethod_opts=None)[source] [edit on github]
Bases:
NoNewAttributesAfterInit
Fit a model to a data set.
Changed in version 4.17.0: Changing the stat field now changes the internal IterFit object as well.
- Parameters:
data (
sherpa.data.Data
orsherpa.data.DataSimulFit
) – The data to be fit.model (
sherpa.models.model.Model
orsherpa.models.model.SimulFitModel
) – The model to fit to the data. It should match thedata
parameter (i.e. be aSimulFitModel
object when data is aDataSimulFit
).stat (
sherpa.stats.Stat
orNone
, optional) – The statistic object to use. If not given thenChi2Gehrels
is used.method (
sherpa.optmethods.OptMethod
instance or None, optional) – The optimiser to use. If not given thensherpa.optmethods.LevMar
is used.estmethod (
sherpa.estmethods.EstMethod
or None, optional) – The class used to calculate errors. If not given thensherpa.estmethods.Covariance
is used.itermethod_opts (dict or None, optional) – If set, defines the iterated-fit method and options to use. It is passed through to
IterFit
.
Attributes Summary
Return the statistic value
Methods Summary
Calculate the per-bin chi-squared statistic.
Calculate the statistic value.
Calculate the statistic value and related information.
est_errors
([methoddict, parlist])Estimate errors.
fit
([outfile, clobber, numcores])Fit the model to the data.
guess
(**kwargs)Guess parameter values and limits.
simulfit
(*others)Fit multiple data sets and models simultaneously.
Attributes Documentation
- stat
Return the statistic value
Methods Documentation
- calc_chisqr()[source] [edit on github]
Calculate the per-bin chi-squared statistic.
Evaluate the per-bin statistic for the current model and data settings (e.g. parameter values and data filters).
- Returns:
chisq – The chi-square value for each bin of the data, using the current statistic. A value of
None
is returned if the statistic is not a chi-square distribution.- Return type:
array or None
See also
- calc_stat()[source] [edit on github]
Calculate the statistic value.
Evaluate the statistic for the current model and data settings (e.g. parameter values and data filters).
- Returns:
stat – The current statistic value.
- Return type:
number
See also
- calc_stat_info()[source] [edit on github]
Calculate the statistic value and related information.
Evaluate the statistic for the current model and data settings (e.g. parameter values and data filters).
- Returns:
statinfo – The current statistic value.
- Return type:
StatInfoResults
instance
See also
- est_errors(methoddict=None, parlist=None)[source] [edit on github]
Estimate errors.
Calculate the low and high errors for one or more of the thawed parameters in the fit.
- Parameters:
methoddict (dict or None, optional) – A dictionary mapping from lower-cased method name to the associated optimisation method instance to use. This is only used if the method is changed, as described in the Notes section below.
parlist (sequence of
sherpa.models.parameter.Parameter
or None, optional) – The names of the parameters for which the errors should be calculated. If set toNone
then all the thawed parameters are used.
- Returns:
res
- Return type:
- Raises:
sherpa.utils.err.EstErr – If any parameter in parlist is not valid (i.e. is not thawed or is not a member of the model expression being fit), or if the statistic is
LeastSq
, or if the reduced chi-square value of the current parameter values is larger than themax_rstat
option (for chi-square statistics).
See also
Notes
If a new minimum is found for any parameter then the calculation is automatically started for all the parameters using this new best-fit location. This can repeat until the
maxfits
option is reached.Unless the
Covariance
estimator is being used, or thefast
option is unset, then the method will be changed toNelderMead
(for likelihood-based statistics) orLevMar
(for chi-square based statistics) whilst calculating the errors.
- fit(outfile: str | Path | WriteableTextFile | None = None, clobber: bool = False, numcores: int | None = 1) FitResults [source] [edit on github]
Fit the model to the data.
Changed in version 4.17.0: The outfile parameter can now be sent a Path object or a file handle instead of a string.
- Parameters:
outfile (str, Path, IO object, or None, optional) – If not
None
then information on the fit is written to this file (as defined by a filename, path, or file handle).clobber (bool, optional) – Determines if the output file can be overwritten. This is only used when
outfile
is a string orPath
object.numcores (int or None, optional) – The number of cores to use in fitting simultaneous data.
- Returns:
fitres
- Return type:
- Raises:
sherpa.utils.err.FitErr – This is raised if
clobber
isFalse
andoutfile
already exists or if all the bins have been masked out of the fit.
See also
Notes
The file created when
outfile
is set is a simple ASCII file with a header line containing the text “# nfev statistic” and then a list of the thawed parameters, and then one line for each iteration, with the values separated by spaces. Ifoutfile
is sent a file handle it is not closed by this routine.Examples
Fit a very-simple model (a constant value) to a small 1D dataset:
>>> from sherpa.data import Data1D >>> from sherpa.models.basic import Const1D >>> from sherpa.stats import LeastSq >>> d = Data1D("x", [-3, 5, 17, 22], [12, 3, 8, 5]) >>> m = Const1D() >>> s = LeastSq() >>> f = Fit(d, m, stat=s) >>> out = f.fit() >>> if not out.succeeded: print("Fit failed") >>> print(out.format()) Method = levmar Statistic = leastsq Initial fit statistic = 190 Final fit statistic = 46 at function evaluation 4 Data points = 4 Degrees of freedom = 3 Change in statistic = 144 const1d.c0 7 +/- 0.5
>>> print(m) const1d Param Type Value Min Max Units ----- ---- ----- --- --- ----- const1d.c0 thawed 7 -3.40282e+38 3.40282e+38
Repeat the fit, after resetting the model, so we can see how the optimiser searched the parameter space:
>>> from io import StringIO >>> m.reset() >>> optdata = StringIO() >>> out2 = f.fit(outfile=optdata) >>> print(optdata.getvalue()) # nfev statistic const1d.c0 0.000000e+00 1.900000e+02 1.000000e+00 1.000000e+00 1.900000e+02 1.000000e+00 2.000000e+00 1.899834e+02 1.000345e+00 3.000000e+00 4.600000e+01 7.000000e+00 4.000000e+00 4.600002e+01 7.002417e+00 5.000000e+00 4.600000e+01 7.000000e+00
- guess(**kwargs)[source] [edit on github]
Guess parameter values and limits.
The model’s
sherpa.models.model.Model.guess
method is called with the data values (the dependent axis of the data set) and thekwargs
arguments.
- simulfit(*others)[source] [edit on github]
Fit multiple data sets and models simultaneously.
The current fit object is combined with the other fit objects and a simultaneous fit is made, using the object’s statistic and optimisation method.
- Parameters:
*others (
sherpa.fit.Fit
instances) – Thedata
andmodel
attributes of these arguments are used, along with those from the object.- Returns:
fitres
- Return type:
See also