happyr / normal-distribution-bundle
A bundle to calculate normal distribution and other related stuff
Fund package maintenance!
Nyholm
Installs: 1 065
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.2
- symfony/config: ^4.4 || ^5.1
- symfony/dependency-injection: ^4.4 || ^5.1
- symfony/http-kernel: ^4.4 || ^5.1
Requires (Dev)
- doctrine/doctrine-bundle: ^1.12 || ^2.0.9
- doctrine/orm: ^2.7
- nyholm/nsa: ^1.1
- nyholm/symfony-bundle-test: ^1.6
- symfony/phpunit-bridge: ^4.4 || ^5.1
README
A bundle to calculate distributions and some statistical important values with those distributions.
The API
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.
Calculator
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 = 0
and the standardDistribution = 1
.
The input to both functions is an array with values like array(3,6,2,6,4,2,3,6,8, ... );
DistributionManager
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.
<?php namespace Acme\DemoBundle\Controller; use Happyr\NormalDistributionBundle\Service\DistributionManager; class DemoController { public function testController() { $manager = $this->get(DistributionManager::class); $foo = array(8,6,2,6,4,2,3,6,4,8,2,7); $bar = $manager->createValueFrequencyArray($foo); /* $bar should now look like this: $bar = ( 2 => 3, 3 => 1, 4 => 2, 6 => 3, 7 => 1, 8 => 2 ) */ $summary = $manager->addDistribution('test_id', $bar); //get the percentile for a value $percentile = $manager->getPercentile('test_id', 3.5); $this->get('doctrine.orm.entity_manager')->flush(); /* ... */ } }
StatisticsHelper
The StatisticsHelper
is used when you want to get values from a pre-calcuated normal distribution.
getPercentile
: Fetch the percentile for a given valuegetZTransform
: Perform a Z-transformation to get a normalized value given your normal distribution.getStanine
: Get the stanine value for a given valuegetStanineForPercentile
: Get the stanine value for a given percentile. This is useful when your distribution isn't a standard distribution.
Installation
Install it with Composer!
composer require happyr/normal-distribution-bundle
After the dependencies are downloaded, then register the bundle in the AppKernel.
<?php // 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