Java 中给定点的正态分布 function:determine 概率

Normal distribution function:determine probability of a given point in Java

我高中以来的统计数据不见了

我正在努力寻找一种方法来确定 java 中正态分布中给定点的概率。

我看到 Colt cern.jet.stat 提供了 Probability 和一些方法

和 Apache org.apache.commons.math3.distribution 提供了 NormalDistribution class,其中包括一些方法:

我要使用哪一个?


编辑编辑编辑

问题是使用 Chauvenet's criterion

从数据集中排除异常值

To apply Chauvenet's criterion, first calculate the mean and standard deviation of the observed data. Based on how much the suspect datum differs from the mean, use the normal distribution function (or a table thereof) to determine the probability that a given data point will be at the value of the suspect data point. Multiply this probability by the number of data points taken. If the result is less than 0.5, the suspicious data point may be discarded, i.e., a reading may be rejected if the probability of obtaining the particular deviation from the mean is less than 1/(2n)

正态分布中任意的概率为0。 因此,肯定有 no NormalDistribution.probability(double x) 方法,您误会了。

至于与您的问题有点相关的其他方法:

cumulativeProbability(double x)是数值小于x的概率。

probability(double x0, double x1) returns 值介于 x0x1 之间的概率。相当于cumulativeProbability(x1) - cumulativeProbability(x0);

cumulativeProbability(double,double) 已弃用,实际上与 probability(double,double) 相同(但命名非常糟糕)。

首先,这个问题不能原样回答,因为在像正态分布这样的连续分布中,特定点的概率总是为零。你需要问问自己,你到底想知道什么是间隔。

例如,cern.jet.stat.Probability.normal(double) 将回答问题 "What is the probability of the value being less than my value?"(在此上下文中,小于或等于等价。)

org.apache.commons.math3.distribution.NormalDistribution.cumulativeProbability(double) 也会给你同样的信息。

如果p如果数值小于你数值的概率,数值高于你数值的概率是1 - p.

编辑答案

在你的编辑中,相关的句子部分是这样的

Based on how much the suspect datum differs from the mean (...)

您正在寻找可疑点(至少)远离平均值的概率。

x成为你的怀疑点。首先,对其进行归一化,使其能够与归一化的正态分布一起工作,就像这样

xn = (x - mean) / standard deviation

你要找的概率是

2 * CPD( -abs(xn) )

其中 CPD(累积概率分布)为 org.apache.commons.math3.distribution.NormalDistribution.cumulativeProbability(double)cern.jet.stat.Probability.normal(double)

该表达式给出了标准化值低于 -abs(xn) 或高于 abs(xn) 的概率,这与表示至少偏离平均值那么远的概率完全相同。 CPD( -abs(xn) ) 给出低于 -abs(xn) 的概率(根据定义),我们可以乘以 2 加上超过 abs(xn) 的概率,因为正态分布相对于均值是对称的。

NormalDistribution.density 似乎是最合适的。但是,如果您能多谈谈您要解决的问题,那也没什么坏处。