Synopsis
Sample the fit statistic by taking the parameter values from a normal distribution.
Syntax
normal_sample(num: int = 1, scale: float = 1, correlate: bool = True, id: int | str | None = None, otherids: Sequence[int | str] = (), numcores: int | None = None, clip: Literal['none'] | Literal['hard'] | Literal['soft'] = 'none') Returns: np.ndarray
Description
For each iteration (sample), change the thawed parameters by drawing values from a uni- or multi-variate normal (Gaussian) distribution, and calculate the fit statistic.
Examples
Example 1
The model fit to the default data set has three free parameters. The median value of the statistic calculated by `normal_sample` is returned:
>>> ans = normal_sample(num=10000) >>> ans.shape (1000, 5) >>> np.median(ans[:,0]) 119.82959326927781
Example 2
Sample the thawed parameters using the covariance matrix, to account for correlations between the parameters:
>>> ans = normal_sample(num=1000, correlate=True)
Example 3
Ensure that the sampling is repeatable by fixing the random number generator (RNG), and then plot the statistic value (y axis) against the first thawed parmeter (x axis):
>>> set_rng(np.random.default_rng(2462357)) >>> res = normal_sample(id=1000) >>> plot_scatter(res[:, 1], res[:, 0], ylabel="scatter")
Example 4
Compare the PDF of the first thawed parameter when using the calculated errors versus twice them:
>>> res1 = normal_sample(id=1000) >>> res2 = normal_sample(id=1000, scale=2) >>> plot_pdf(res1[:, 1], bins=20) >>> plot_pdf(res2[:, 1], bins=20, overplot=True)
Example 5
Sample the model fits for datasets 1, 2, and 3:
>>> res = normal_sample(num=1000, correlate=True, id=1, otherids=(2, 3))
PARAMETERS
The parameters for this function are:
| Parameter | Type information | Definition |
|---|---|---|
| num | int, optional | The number of samples to use (default is 1). |
| scale | number, optional | Scale factor applied to the sigma values from the fit before sampling the normal distribution. |
| correlate | bool, optional | Should a multi-variate normal be used, with parameters set by the covariance matrix ( True ) or should a uni-variate normal be used ( False )? |
| id | int, str, or None, optional | The data set that provides the data. If not given then all data sets with an associated model are used simultaneously. |
| otherids | sequence of int or str, optional | Other data sets to use in the calculation. |
| numcores | optional | The number of CPU cores to use. The default is to use all the cores on the machine. |
| clip | {'hard', 'soft', 'none'}, optional | What clipping strategy should be applied to the sampled parameters. The default ('none') applies no clipping, 'hard' uses the hard parameter limits, and 'soft' the soft limits. |
Return value
The return value from this function is:
A NumPy array table with the first column representing the statistic, the later columns the parameters used, and the last column indicating whether any parameter in the row was clipped. The number of rows is given by the num argument.
Notes
It is expected that the model has already been fit to the data.
All thawed model parameters are sampled from the Gaussian distribution. The mean is set as the current parameter values. The variance is calculated from the covariance matrix of the fit multiplied by scale * scale. When correlate is False the diagonal of the matrix is used, so the parameters are uncorrelated. When correlate is True the full matrix is used, allowing for correlations between the parameters.
Changes in CIAO
Changed in CIAO 4.18
The sigma parameter has been renamed to scale, and the code has been updated so that changing it will change the sampled values. The random state returned by get_rng is now used for the sampling. The clip parameter has been added, and the return array now ends in a column indicating whether any parameter in the row was clipped.
Bugs
See the bugs pages on the Sherpa website for an up-to-date listing of known bugs.
See Also
- contrib
- get_data_prof, get_data_prof_prefs, get_delchi_prof, get_delchi_prof_prefs, get_fit_prof, get_model_prof, get_model_prof_prefs, get_resid_prof, get_resid_prof_prefs, get_source_prof, get_source_prof_prefs, plot_chart_spectrum, plot_marx_spectrum, prof_data, prof_delchi, prof_fit, prof_fit_delchi, prof_fit_resid, prof_model, prof_resid, prof_source
- data
- get_arf_plot, get_bkg_chisqr_plot, get_bkg_delchi_plot, get_bkg_fit_plot, get_bkg_model_plot, get_bkg_plot, get_bkg_ratio_plot, get_bkg_resid_plot, get_bkg_source_plot
- info
- list_model_ids, show_bkg_model, show_bkg_source
- modeling
- add_model, add_user_pars, clean, create_model_component, delete_bkg_model, delete_model, delete_model_component, get_model, get_model_autoassign_func, get_model_component, get_model_component_image, get_model_component_plot, get_model_plot, get_num_par, get_num_par_frozen, get_num_par_thawed, get_order_plot, get_par, get_pileup_model, get_source, get_source_component_image, get_source_component_plot, get_source_contour, get_source_image, get_source_plot, image_model, image_model_component, image_source, image_source_component, integrate, link, load_table_model, load_template_interpolator, load_template_model, load_user_model, reset, save_model, save_source, set_bkg_model, set_bkg_source, set_full_model, set_model, set_model_autoassign_func, set_pileup_model, set_source, t_sample, uniform_sample
- plotting
- get_cdf_plot, get_energy_flux_hist, get_pdf_plot, get_photon_flux_hist, get_pvalue_plot, get_pvalue_results, get_split_plot, plot, plot_arf, plot_bkg, plot_bkg_chisqr, plot_bkg_delchi, plot_bkg_fit, plot_bkg_fit_delchi, plot_bkg_fit_resid, plot_bkg_model, plot_bkg_ratio, plot_bkg_resid, plot_bkg_source, plot_cdf, plot_chisqr, plot_data, plot_delchi, plot_energy_flux, plot_fit, plot_fit_delchi, plot_fit_resid, plot_model, plot_model_component, plot_order, plot_pdf, plot_photon_flux, plot_pvalue, plot_ratio, plot_resid, plot_scatter, plot_source, plot_source_component, plot_trace, set_xlinear, set_xlog, set_ylinear, set_ylog
- psfs
- delete_psf, load_conv, plot_kernel
- saving
- save_delchi, save_resid
- statistics
- get_chisqr_plot, get_delchi_plot
- utilities
- calc_chisqr, calc_energy_flux, calc_model_sum, calc_photon_flux, calc_source_sum, calc_stat, eqwidth
- visualization
- contour_model, contour_ratio, contour_resid