def getBic(self): """returns the Bayesian Information Criteria""" sequence_length = sum(len(self.getParamValue('lht', locus=l).index) for l in self.locus_names) lnL = self.getLogLikelihood() nfp = self.getNumFreeParams() return bic(lnL, nfp, sequence_length)
def test_information_criteria(self): """test get information criteria from a model.""" lf = self._makeLikelihoodFunction() nfp = lf.getNumFreeParams() lnL = lf.getLogLikelihood() l = len(self.data) self.assertFloatEqual(lf.getAic(), aic(lnL, nfp)) self.assertFloatEqual(lf.getAic(second_order=True), aic(lnL, nfp, l)) self.assertFloatEqual(lf.getBic(), bic(lnL, nfp, l))
def test_bic(self): """correctly compute BIC""" # against hand calculated self.assertFloatEqual(bic(-9.7039, 4, 13), 29.6675974298)