ROI Optimization and Fitting¶
Source fitting with fermipy is generally performed with the
optimize
and
fit
methods.
Fitting¶
fit
is a wrapper on the pyLikelihood
fit method and performs a likelihood fit of all free parameters of the
model. This method can be used to manually optimize of the model by
calling it after freeing one or more source parameters. The following
example demonstrates the commands that would be used to fit the
normalizations of all sources within 3 deg of the ROI center:
>>> gta.free_sources(distance=2.0,pars='norm')
>>> gta.print_params(True)
idx parname value error min max scale free
--------------------------------------------------------------------------------
3FGL J1104.4+3812
18 Prefactor 1.77 0 1e-05 100 1e-11 *
3FGL J1109.6+3734
24 Prefactor 0.33 0 1e-05 100 1e-14 *
galdiff
52 Prefactor 1 0 0.1 10 1 *
isodiff
55 Normalization 1 0 0.001 1e+03 1 *
>>> o = gta.fit()
2016-04-19 14:07:55 INFO GTAnalysis.fit(): Starting fit.
2016-04-19 14:08:56 INFO GTAnalysis.fit(): Fit returned successfully.
2016-04-19 14:08:56 INFO GTAnalysis.fit(): Fit Quality: 3 LogLike: -77279.869 DeltaLogLike: 501.128
>>> gta.print_params(True)
2016-04-19 14:10:02 INFO GTAnalysis.print_params():
idx parname value error min max scale free
--------------------------------------------------------------------------------
3FGL J1104.4+3812
18 Prefactor 2.13 0.0161 1e-05 100 1e-11 *
3FGL J1109.6+3734
24 Prefactor 0.342 0.0904 1e-05 100 1e-14 *
galdiff
52 Prefactor 0.897 0.0231 0.1 10 1 *
isodiff
55 Normalization 1.15 0.016 0.001 1e+03 1 *
By default fit
will repeat the fit
until a fit quality of 3 is obtained. After the fit returns all
sources with free parameters will have their properties (flux, TS,
NPred, etc.) updated in the ROIModel
instance.
The return value of the method is a dictionary containing the
following diagnostic information about the fit:
Key | Type | Description |
---|---|---|
fit_quality |
int | Fit quality parameter for MINUIT and NEWMINUIT optimizers (3 - Full accurate covariance matrix, 2 - Full matrix, but forced positive-definite (i.e. not accurate), 1 - Diagonal approximation only, not accurate, 0 - Error matrix not calculated at all) |
errors |
ndarray |
Vector of parameter errors (unscaled). |
loglike |
float |
Post-fit log-likehood value. |
correlation |
ndarray |
Correlation matrix between free parameters of the fit. |
config |
dict |
Copy of input configuration to this method. |
values |
ndarray |
Vector of best-fit parameter values (unscaled). |
dloglike |
float |
Improvement in log-likehood value. |
fit_status |
int | Optimizer return code (0 = ok). |
covariance |
ndarray |
Covariance matrix between free parameters of the fit. |
edm |
float |
Estimated distance to maximum of log-likelihood function. |
The fit
also accepts keyword
arguments which can be used to configure its behavior at runtime:
>>> o = gta.fit(min_fit_quality=2,optimizer='NEWMINUIT',reoptimize=True)
Reference/API¶
-
GTAnalysis.
fit
(update=True, **kwargs)[source] Run the likelihood optimization. This will execute a fit of all parameters that are currently free in the model and update the charateristics of the corresponding model components (TS, npred, etc.). The fit will be repeated N times (set with the
retries
parameter) until a fit quality greater than or equal tomin_fit_quality
and a fit status code of 0 is obtained. If the fit does not succeed after N retries then all parameter values will be reverted to their state prior to the execution of the fit.Parameters: - update (bool) – Update the model dictionary for all sources with free parameters.
- tol (float) – Set the optimizer tolerance.
- verbosity (int) – Set the optimizer output level.
- optimizer (str) – Set the likelihood optimizer (e.g. MINUIT or NEWMINUIT).
- retries (int) – Set the number of times to rerun the fit when the fit quality is < 3.
- min_fit_quality (int) – Set the minimum fit quality. If the fit quality is smaller than this value then all model parameters will be restored to their values prior to the fit.
- reoptimize (bool) – Refit background sources when updating source properties (TS and likelihood profiles).
Returns: fit – Dictionary containing diagnostic information from the fit (fit quality, parameter covariances, etc.).
Return type:
ROI Optimization¶
The optimize
method performs an
automatic optimization of the ROI by fitting all sources with an
iterative strategy.
>>> o = gta.optimize()
It is generally good practice to run this method once at the start of your analysis to ensure that all parameters are close to their global likelihood maxima.
Key | Type | Description |
---|---|---|
loglike1 |
float |
Post-optimization log-likelihood value. |
loglike0 |
float |
Pre-optimization log-likelihood value. |
config |
dict |
Copy of input configuration to this method. |
dloglike |
float |
Improvement in log-likehood value. |
Reference/API¶
-
GTAnalysis.
optimize
(**kwargs)[source] Iteratively optimize the ROI model. The optimization is performed in three sequential steps:
- Free the normalization of the N largest components (as
determined from NPred) that contain a fraction
npred_frac
of the total predicted counts in the model and perform a simultaneous fit of the normalization parameters of these components. - Individually fit the normalizations of all sources that were
not included in the first step in order of their npred
values. Skip any sources that have NPred <
npred_threshold
. - Individually fit the shape and normalization parameters of
all sources with TS >
shape_ts_threshold
where TS is determined from the first two steps of the ROI optimization.
To ensure that the model is fully optimized this method can be run multiple times.
Parameters: - npred_frac (float) – Threshold on the fractional number of counts in the N largest components in the ROI. This parameter determines the set of sources that are fit in the first optimization step.
- npred_threshold (float) – Threshold on the minimum number of counts of individual sources. This parameter determines the sources that are fit in the second optimization step.
- shape_ts_threshold (float) – Threshold on source TS used for determining the sources that will be fit in the third optimization step.
- max_free_sources (int) – Maximum number of sources that will be fit simultaneously in the first optimization step.
- skip (list) – List of str source names to skip while optimizing.
- optimizer (dict) – Dictionary that overrides the default optimizer settings.
- Free the normalization of the N largest components (as
determined from NPred) that contain a fraction