php-ml/src/Math/Statistic/Gaussian.php
Tomáš Votruba 46fa2c2cca Update to EasyCodingStandard 4 (#273)
* update ECS config to v4

* composer: require Symplify 4

* apply coding-standard: use constants over functions, protected setUp() in tests, array indentation

* ecs: add false positive case

* composer: update lock

* bump to ECS 4.4

* update composer.lock

* shorten ECS config name

* ecs: ignore assignments in while()

* fix cs
2018-06-15 07:57:45 +02:00

51 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Phpml\Math\Statistic;
class Gaussian
{
/**
* @var float
*/
protected $mean;
/**
* @var float
*/
protected $std;
public function __construct(float $mean, float $std)
{
$this->mean = $mean;
$this->std = $std;
}
/**
* Returns probability density of the given <i>$value</i>
*
* @return float|int
*/
public function pdf(float $value)
{
// Calculate the probability density by use of normal/Gaussian distribution
// Ref: https://en.wikipedia.org/wiki/Normal_distribution
$std2 = $this->std ** 2;
$mean = $this->mean;
return exp(-(($value - $mean) ** 2) / (2 * $std2)) / sqrt(2 * $std2 * M_PI);
}
/**
* Returns probability density value of the given <i>$value</i> based on
* given standard deviation and the mean
*/
public static function distributionPdf(float $mean, float $std, float $value): float
{
$normal = new self($mean, $std);
return $normal->pdf($value);
}
}