Skip to content

Instantly share code, notes, and snippets.

@mtrbean
Created March 16, 2015 18:15
Show Gist options
  • Save mtrbean/5655434f6f2720a2a01e to your computer and use it in GitHub Desktop.
Save mtrbean/5655434f6f2720a2a01e to your computer and use it in GitHub Desktop.
Highest Density Interval
def hdi(frozen_dist, alpha=0.05, **args):
""" Highest density interval for a unimodel distribution """
# freeze distribution with given arguments
def interval_width(hdi_pt_l):
return frozen_dist.ppf(alpha + hdi_pt_l) - frozen_dist.ppf(hdi_pt_l)
# find hdi_pt_l that minimizes interval_width
hdi_pt_l = fmin(interval_width, 1-alpha, ftol=1e-8, disp=False)[0]
# return interval as array([low, high])
return frozen_dist.ppf([hdi_pt_l, alpha + hdi_pt_l])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment