【问题标题】:Normal distribution function:determine probability of a given point in Java正态分布函数:确定Java中给定点的概率
【发布时间】:2015-03-05 15:51:14
【问题描述】:

我高中后的统计数据已经过去了

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

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

  • normal(double a)
  • normal(double mean, double variance, double x)
  • normalInverse(double y0)

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

  • cumulativeProbability(double x)
  • cumulativeProbability(double x0, double x1)
  • density(double x)
  • inverseCumulativeProbability(double p)
  • probability(double x0, double x1)
  • probability(double x)

哪一个用于我的目的?


编辑编辑编辑

问题是使用Chauvenet's criterion从数据集中排除异常值

要应用 Chauvenet 标准,首先计算观察数据的均值和标准差。根据可疑数据与平均值的差异程度,使用正态分布函数(或其表格)来确定给定数据点处于可疑数据点值的概率。将此概率乘以所取数据点的数量。如果结果小于 0.5,则可能会丢弃可疑数据点,即如果获得与平均值的特定偏差的概率小于 1/(2n),则可能会拒绝读数

【问题讨论】:

  • 正态分布中任意的概率为0。
  • 好吧,如果问题是实现Chauvenet的标准,你根本不需要计算任何概率值,因为标准相当于一个基准大于标准偏差的某个倍数远离平均值。 IE。 crtiterion 等效于“if abs(x - mean)/sd

标签: java statistics normal-distribution


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 该页面写得非常糟糕(“给定数据点处于该值的概率”为零)。我认为,当x < mean1 - cumulativeProbability(x)x > mean 时,您需要的是cumulativeProbability(x)。这将是一个值与您的数据点或父亲一样远离平均值的概率。
【解决方案2】:

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

例如,cern.jet.stat.Probability.normal(double) 将回答问题“该值小于我的值的概率是多少?” (在这种情况下,小于或等于是等价的。)

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

如果p如果值小于你的值的概率,那么值高于你的值的概率是1 - p

回答编辑

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

基于可疑数据与平均值的差异 (...)

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

x 成为您的疑点。首先,对其进行归一化以便能够使用归一化的正态分布,就像这样

xn = (x - mean) / standard deviation

你要找的概率是

2 * CPD( -abs(xn) )

使用org.apache.commons.math3.distribution.NormalDistribution.cumulativeProbability(double)cern.jet.stat.Probability.normal(double) 找到CPD(累积概率分布)。

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

【讨论】:

  • @LisaAnne 请查看我的完整答案以回复您的编辑。
【解决方案3】:

NormalDistribution.density 似乎是最合适的一个。但是,如果您能多说一些您要解决的问题,那也无妨。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2014-01-28
    • 2012-11-08
    • 2018-05-17
    • 1970-01-01
    • 2012-09-06
    • 2011-10-27
    相关资源
    最近更新 更多