在Java问题中实现概率分布函数

我有一个以概率分布函数形式的函数,如下所示:

虽然我发现一些lib提供函数来获得上述公式所做的结果; 但我正在学习实施它,所以如果可能的话,我想尽我所能。

以下是我在实现该功能时可以考虑的内容

public double pdf(double x){
  double mean = mean();
  double variance = variance();
  double base = 1/Math.sqrt(2*Math.PI*variance);
  double pow = -(Math.pow((x-mean), 2)/2*variance);
  return Math.pow(base, pow); 
}

这是实施PDF的正确方法吗? 或者我错过了哪些部分?

我感谢任何帮助。


Robert Sedgewick和他们一样好:

http://introcs.cs.princeton.edu/22library/Gaussian.java.html

看看他的实施。

你也应该知道M. Abramowitz和IA Stegun,这是一个很好的经典功能。 这是从多佛书籍少量提供。 值得拥有。


您的pdf方法实现了正态分布的概率密度函数,但似乎您想要实现累积正态分布函数(或至少是它的一个变体)。 对于正态分布,这是非常平凡的,因为它涉及无限积分。

您可以尝试使用像梯形法那样的方法进行数值积分,但是我怀疑随着距离平均值越来越远,这些不准确性开始增加。

如果你想实现累积的正态分布函数,那么我推荐两种方法:

  • 一个预先计算的值表,或者
  • 数值近似值,例如维基百科页面上的正态分布。

  • 不知道多少有关系,但也检查Apache Commons数学的东西。 我发现它非常干净和有用。

    org.apache.commons.math.stat.descriptive.DescriptiveStatistics在一端工作,分析给定的分布。

    org.apache.commons.math.distribution.Distribution在另一端用于生成分发。

    这些应该为您提供API的概念和一些代码来研究实现。 您可能想要研究的其他开放源代码统计软件包。

    链接地址: http://www.djcxy.com/p/5469.html

    上一篇: Implement probability distribution function in Java problem

    下一篇: Monkey patching R language base functions with big data functions for speed