Javascript中的累积分布函数

Tho*_*aaf 11 javascript math

我正在寻找一种在Javascript中计算累积分布函数的方法.有没有实现过这个的课程?你有想法让这个工作吗?它不需要100%准确,但我需要对价值有所了解.

http://en.wikipedia.org/wiki/Cumulative_distribution_function

Tho*_*aaf 9

我能够在帮助下编写自己的函数吗?是否有一个容易实现的erf()for Python?以及来自维基百科的知识.

计算不是100%正确,因为它只是一个近似值.

function normalcdf(mean, sigma, to) 
{
    var z = (to-mean)/Math.sqrt(2*sigma*sigma);
    var t = 1/(1+0.3275911*Math.abs(z));
    var a1 =  0.254829592;
    var a2 = -0.284496736;
    var a3 =  1.421413741;
    var a4 = -1.453152027;
    var a5 =  1.061405429;
    var erf = 1-(((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*Math.exp(-z*z);
    var sign = 1;
    if(z < 0)
    {
        sign = -1;
    }
    return (1/2)*(1+sign*erf);
}

normalcdf(30, 25, 1.4241); //-> 0.000223264606750539
//wolframalpha.com              0.000223221102572082
Run Code Online (Sandbox Code Playgroud)


Mar*_*iro 9

math.js库提供的erf功能。根据Wolfram Alpha上的定义,该cdfNormal函数可以在 Javascript 中实现如下:

const mathjs = require('mathjs')

function cdfNormal (x, mean, standardDeviation) {
  return (1 - mathjs.erf((mean - x ) / (Math.sqrt(2) * standardDeviation))) / 2
}
Run Code Online (Sandbox Code Playgroud)

node.js控制台中:

> console.log(cdfNormal(5, 30, 25))
> 0.15865525393145707 // Equal to Wolfram Alpha's result at: https://sandbox.open.wolframcloud.com/app/objects/4935c1cb-c245-4d8d-9668-4d353ad714ec#sidebar=compute
Run Code Online (Sandbox Code Playgroud)


Ian*_*n H 5

与当前接受的答案不同,此公式将给出正确的正常 CDF

function ncdf(x, mean, std) {
  var x = (x - mean) / std
  var t = 1 / (1 + .2315419 * Math.abs(x))
  var d =.3989423 * Math.exp( -x * x / 2)
  var prob = d * t * (.3193815 + t * ( -.3565638 + t * (1.781478 + t * (-1.821256 + t * 1.330274))))
  if( x > 0 ) prob = 1 - prob
  return prob
}
Run Code Online (Sandbox Code Playgroud)

这个答案来自 math.ucla.edu