Normal Distribution Bundle

Latest Version Software License Build Status Code Coverage Quality Score SensioLabsInsight Total Downloads

A bundle to calculate distributions and some statistical important values with those distributions.


This bundle has three services that helps you with your distribution. Each service and function has comments that describes how to use them and why. This is a brief overview.


Use this service when you want to calculate a normal distribution. This service has two functions normalDistribution and standardDistribution. The later calculates the unit normal distribution where meanValue <h3>0 and the standardDistribution</h3> 1.

The input to both functions is an array with values like array(3,6,2,6,4,2,3,6,8, ... );


This service builds a distribution of any type and saves some data in the database. The public functions to this service are addDistribution, getPercentile and createValueFrequencyArray.

DistributionManager::addDistribution takes an identifier name and an array with the values and frequency as arguments. The array must be on the form ($value => $frequency). See example below.


namespace Acme\DemoBundle\Controller;

use Happyr\NormalDistributionBundle\Service\DistributionManager;

class DemoController
    public function testController()




            $bar should now look like this:

                2 => 3,
                3 => 1,
                4 => 2,
                6 => 3,
                7 => 1,
                8 => 2

<h3>$manager->addDistribution('test_id', $bar);

        //get the percentile for a value

 $manager->getPercentile('test_id', 3.5);


        /* ... */


The StatisticsHelper is used when you want to get values from a pre-calcuated normal distribution.

  • getPercentile: Fetch the percentile for a given value
  • getZTransform: Perform a Z-transformation to get a normalized value given your normal distribution.
  • getStanine: Get the stanine value for a given value
  • getStanineForPercentile: Get the stanine value for a given percentile. This is useful when your distribution isn't a standard distribution.


Install it with Composer!

composer require happyr/normal-distribution-bundle

After the dependencies are downloaded, then register the bundle in the AppKernel.


// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Happyr\NormalDistributionBundle\HappyrNormalDistributionBundle(),
    // ...

Update the database

The bundle contains two entities. You should update your database with a migration script or (if you are in a pure dev environment) run the following command:

php app:console doctrine:schema:update --force


The source code is hosted at GitHub