def _get_log_like_plus_log_factorial(self, obs, bkg, model, bin_id): arrs = obs, bkg, model if self._has_top_hats(): arrs = (np.array((self._top_hat_sum(arr, bin_id),)) for arr in arrs) return log_likelihood(*arrs)
def _compute_likelihood_biases(self): for bin_label in self._maptree: data_analysis_bin = self._maptree[bin_label] this_log_factorial = np.sum(logfactorial(data_analysis_bin.observation_map.as_partial())) self._log_factorials[bin_label] = this_log_factorial # As bias we use the likelihood value for the saturated model obs = data_analysis_bin.observation_map.as_partial() bkg = data_analysis_bin.background_map.as_partial() sat_model = np.clip(obs - bkg, 1e-50, None).astype(np.float64) self._saturated_model_like_per_maptree[bin_label] = log_likelihood(obs, bkg, sat_model) - this_log_factorial
def get_log_like(self): """ Return the value of the log-likelihood with the current values for the parameters """ n_point_sources = self._likelihood_model.get_number_of_point_sources() n_ext_sources = self._likelihood_model.get_number_of_extended_sources() # Make sure that no source has been added since we filled the cache assert n_point_sources == self._convolved_point_sources.n_sources_in_cache and \ n_ext_sources == self._convolved_ext_sources.n_sources_in_cache, \ "The number of sources has changed. Please re-assign the model to the plugin." # This will hold the total log-likelihood total_log_like = 0 for bin_id in self._active_planes: data_analysis_bin = self._maptree[bin_id] this_model_map_hpx = self._get_expectation(data_analysis_bin, bin_id, n_point_sources, n_ext_sources) # Now compare with observation bkg_renorm = self._nuisance_parameters.values()[0].value obs = data_analysis_bin.observation_map.as_partial( ) # type: np.array bkg = data_analysis_bin.background_map.as_partial( ) * bkg_renorm # type: np.array this_pseudo_log_like = log_likelihood(obs, bkg, this_model_map_hpx) total_log_like += this_pseudo_log_like - self._log_factorials[bin_id] \ - self._saturated_model_like_per_maptree[bin_id] return total_log_like