def checkFacts_pdf_Phi(
nu=0, tau=0, phi_grid=None, **kwargs):
cPrior = c_Prior(nu=nu, tau=tau)
if phi_grid is None:
phi_grid = make_phi_grid(**kwargs)
logpdf_grid = tau * phi_grid - nu * c_Phi(phi_grid) - cPrior
pdf_grid = np.exp(logpdf_grid)
mu_grid = phi2mu(phi_grid)
IntegralVal = np.trapz(pdf_grid, phi_grid)
E_phi_numeric = np.trapz(pdf_grid * phi_grid, phi_grid)
E_phi_formula = -(0.5 * nu + 1) / tau
E_mu_numeric = np.trapz(pdf_grid * mu_grid, phi_grid)
E_mu_formula = tau/nu
mode_phi_numeric = phi_grid[np.argmax(pdf_grid)]
mode_phi_formula = mu2phi(tau/nu)
E_c_numeric = np.trapz(pdf_grid * c_Phi(phi_grid), phi_grid)
E_c_formula = - 0.5 * digamma(0.5 * nu + 1) + 0.5 * np.log(tau)
print "nu=%7.3f tau=%7.3f" % (nu, tau)
print " Integral=% 7.3f should be % 7.3f" % (IntegralVal, 1.0)
print " E[mu]=% 7.3f should be % 7.3f" % (E_mu_numeric, E_mu_formula)
print " E[phi]=% 7.3f should be % 7.3f" % (E_phi_numeric, E_phi_formula)
print " E[c(phi)]=% 7.3f should be % 7.3f" % (E_c_numeric, E_c_formula)
print " mode[phi]=% 7.3f should be % 7.3f" % (
mode_phi_numeric, mode_phi_formula)
评论列表
文章目录