在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