Probability Density Functions
The
csb.statistics.pdf module defines
AbstractDensity: a common interface for all PDFs. Each
AbstractDensity describes a specific type of probability distribution, for example
Normal is an implementation of the Gaussian distribution:
>>> pdf = Normal(mu=10, sigma=1.1)
>>> pdf.mu, pdf['sigma']
10.0, 1.1
Every PDF provides an implementation of the
AbstractDensity.evaluate() method, which evaluates the PDF for a list of input data points:
>>> pdf.evaluate([10, 9, 11, 12])
array([ 0.3626748 , 0.2399147 , 0.2399147 , 0.06945048])
PDF instances also behave like functions:
>>> pdf(data) # the same as pdf.evaluate(data)
Some AbstractDensity implementations may support drawing random numbers from the distribution (or raise an exception otherwise):
>>> pdf.random(2)
array([ 9.86257083, 9.73760515])
Each implementation of AbstractDensity may support infinite number of estimators, used to estimate and re-initialize the PDF parameters from a set of observed data points:
>>> pdf.estimate([5, 5, 10, 10])
>>> pdf.mu, pdf.sigma
(7.5, 2.5)
>>> pdf.estimator
<csb.statistics.pdf.GaussianMLEstimator>
Estimators implement the
AbstractEstimator interface. They are treated as pluggable tools, which can be exchanged through the
AbstractDensity.estimator property (you could create, initialize and plug your own estimator as well). This is a classic Strategy.