| <?xml version="1.0"?> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <?xml-stylesheet type="text/xsl" href="./xdoc.xsl"?> |
| <document url="distribution.html"> |
| <properties> |
| <title>The Commons Math User Guide - Distributions</title> |
| </properties> |
| <body> |
| <section name="8 Probability Distributions"> |
| <subsection name="8.1 Overview" href="overview"> |
| <p> |
| Standard distributions are now available in the |
| <a href="https://commons.apache.org/proper/commons-statistics/userguide/index.html"> |
| Commons Statistics</a> component. |
| </p> |
| <p> |
| Commons Math provides |
| <ul> |
| <li> |
| an <a href="../apidocs/org/apache/commons/math4/legacy/distribution/EnumeratedDistribution.html"> |
| EnumeratedDistribution</a> class that represents discrete distributions of a finite, |
| enumerated set of values. |
| </li> |
| <li> |
| a <a href="../apidocs/org/apache/commons/math4/legacy/distribution/MultiVariateNormalDistribution.html"> |
| MultivariateNormalDistribution</a> interface that represents multivariate Gaussian |
| distributions. |
| </li> |
| </ul> |
| </p> |
| <p> |
| Inverse distribution functions can be computed using the |
| <code>inverseCumulativeProbability</code> methods. For continuous <code>f</code> |
| and <code>p</code> a probability, <code>f.inverseCumulativeProbability(p)</code> returns |
| <code><ul> |
| <li>inf{x in R | P(X≤x) ≥ p} for 0 < p < 1,</li> |
| <li>inf{x in R | P(X≤x) > 0} for p = 0.</li> |
| </ul></code> where <code>X</code> is distributed as <code>f</code>.<br/> |
| For discrete <code>f</code>, the definition is the same, with <code>Z</code> (the integers) |
| in place of <code>R</code>. Note that in the discrete case, the ≥ in the definition |
| can make a difference when <code>p</code> is an attained value of the distribution. |
| </p> |
| </subsection> |
| |
| <subsection name="8.2 Generating data like an input file" |
| href="empirical"> |
| <p> |
| Using the <code>EmpiricalDistribution</code> class, you can generate data based on |
| a given set of values: |
| |
| <source> |
| double[] input = load("data.txt"); // Get some data. |
| int binCount = 500; |
| EmpiricalDistribution empDist = EmpiricalDistribution.from(binCount, input); |
| ContinuousDistribution.Sampler sampler = empDist.createSampler(RandomSource.MT.create()); |
| double value = sampler.nextDouble(); </source> |
| |
| The probability density function is estimated from the data passed as input. |
| The estimation method is essentially the |
| <a href="http://nedwww.ipac.caltech.edu/level5/March02/Silverman/Silver2_6.html"> |
| Variable Kernel Method</a> with Gaussian smoothing. |
| The created sampler will return random values whose probability distribution |
| matches the empirical distribution (i.e. if you generate a large number of |
| such values, their distribution should "look like" the distribution of the |
| values in the input file. |
| The input values are not stored in memory. |
| </p> |
| </subsection> |
| </section> |
| </body> |
| </document> |