基于python代码检查,正态分布概率密度是否大于1?...

时间:2015-08-18 13:41:01

标签: python statistics probability

我有一个问题: 给定均值和方差,我想计算使用正态分布作为概率基础的样本的概率。 数字是:

mean = -0.546369
var = 0.006443
curr_sample = -0.466102

prob = 1/(np.sqrt(2*np.pi*var))*np.exp( -( ((curr_sample - mean)**2)/(2*var) ) )

我的概率大于1!我得到了prob = 3.014558 ......

造成这种情况的原因是什么?方差太小的事实会让人感到困惑?它是公式的完全合法输入,应该给出小于1的小东西!有什么建议吗?

3 个答案:

答案 0 :(得分:3)

好的,你计算的不是概率,而是概率密度(可能大于1)。为了获得1,你必须像这样整合正态分布:

import numpy as np
mean = -0.546369
var = 0.006443
curr_sample = np.linspace(-10,10,10000)

prob = np.sum( 1/(np.sqrt(2*np.pi*var))*np.exp( -( ((curr_sample - mean)**2)/(2*var) ) ) * (curr_sample[1]-curr_sample[0]) )
print prob

女巫导致

0.99999999999961509

答案 1 :(得分:1)

您提供的公式是概率密度,而不是概率。密度公式是这样的,当你在<{1}}的两个值之间集成时,你得到了在该区间内的概率。然而,这意味着获得任何特定样本的概率实际上是0(它的密度乘以无穷小x)。

那么你究竟想要计算什么?您可能想要获得您的值或更大的概率,即所谓的尾概率,这通常用于统计中(当error function发生时,这是由{{3}}给出的。你正在谈论正态分布,尽管你需要注意它的确切定义。

答案 2 :(得分:0)

当考虑给定均值和方差的钟形概率分布函数(PDF)时,曲线的峰值(模式的高度)是1 / sqrt(2 * pi * var)。标准正态分布为1(平均值为0和变量1)。因此,当试图计算一般正态分布pdf的特定值时,大于1的值是可能的。