Boolprob

November 13, 2015 ยท View on GitHub

Boolprob is a tool to analyze joint probability distributions of boolean random variables. The user can specify assumptions about the distribution, compute worst case probabilities, and much more.

Basic usage

from boolprob import JointDistr, Probability, CondProbability

# define a joint distribution of 4 boolean random variables
joint_distr = JointDistr(4)

# the 4 random variables are the defaults of 4 companies
A_default, B_default, C_default, D_default = \
  joint_distr.get_variables()
  
# define assumptions, you can use logic operators &, |, ~
assumptions = [Probability(A_default) == .1,
               Probability(B_default) == .1,
               Probability(C_default) == .1,
               Probability(D_default) == .1,
               Probability(A_default | B_default) == .15,
               CondProbability(C_default, B_default & D_default) == .5]

# find the maximum entropy distribution
joint_distr.maximum_entropy(assumptions)

print "Under the maximum entropy distribution, ",
print "the probability that at least one company defaults is %.3f." % \
  Probability(A_default | B_default | C_default | D_default).value