/** * The inverse cumulative probablility of a normal (gaussian) distribution. */ public static function inverseCumulativeProbability($p, $mean = 0, $sd = 1) { if ($p < 0.0 || $p > 1.0) { throw new Exception("Statistics::inverseCumulativeProbability: " . $p . " out of range: 0.0 to 1.0"); } return $mean + $sd * sqrt(2.0) * Statistics::erfInv(2 * $p - 1); }
notify('Build Sequence Inf/NaN', 0, count(RTGM_Util::buildSequence(INF, NAN, 1, true))); $a2 = array(1, 2, 3); notify('Exp', array(2.718281828459, 7.3890560989307, 20.085536923188), RTGM_Util::exp($a2)); notify('Find Log Log X', $uhgm, RTGM_Util::findLogLogX($xs, $ys, $afe4uhgm)); notify('Find Log Log Y', $afe4uhgm, RTGM_Util::findLogLogY($xs, $ys, $uhgm)); notify('Log Normal Cumulative Prob', 0.012893887361471, RTGM_Util::logNormalCumProb(1.3, 1.6, 0.6)); notify('Log Normal Cumulative Prob (0)', 0.0, RTGM_Util::logNormalCumProb(0.0, 1.6, 0.6)); notify('Log Normal Density', 0.042613954514149, RTGM_Util::logNormalDensity(1.3, 1.6, 0.6)); notify('Log Normal Density (0)', 0.0, RTGM_Util::logNormalDensity(0.0, 1.6, 0.6)); $a3 = array(1, 2, 3); notify('Multiply', array(3, 8, 15), RTGM_Util::multiply($a3, array(3, 4, 5))); $a4 = array(10, 20, 30); notify('Scale', array(1, 2, 3), RTGM_Util::scale($a4, 0.1)); notify('Trapz', $riskTmp, RTGM_Util::trapz($xs, $ys)); // Statistics method tests notify('ErfInv', 0.47693627620447, Statistics::erfInv(0.5)); notify('InverseCumulativeProbabilty', 0.67448975019608, Statistics::inverseCumulativeProbability(0.75)); notify('InverseCumulativeProbabilty (3 args)', 2.0046938501176, Statistics::inverseCumulativeProbability(0.75, 1.6, 0.6)); try { Statistics::inverseCumulativeProbability(2.5); notify('InverseCumulativeProbabilty out of range', "Exception thrown", "Ok"); } catch (Exception $ex1) { notify('InverseCumulativeProbabilty out of range', $ex1, $ex1); } notify('InvGamma1pm1', 0.12837916709551, Statistics::invGamma1pm1(0.5)); try { Statistics::invGamma1pm1(-2.5); notify('InvGamma1pm1 too small', "Exception thrown", "Ok"); } catch (Exception $ex1) { notify('InvGamma1pm1 too small', $ex1, $ex1); }