use*_*925 2 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) ) )
Run Code Online (Sandbox Code Playgroud)
我得到的概率大于 1!我得到概率 = 3.014558...
是什么原因造成的?方差太小会导致事情变得混乱吗?这是公式中完全合法的输入,并且应该给出不大于 1 的小值!有什么建议么?
小智 5
好吧,你计算的不是概率,而是概率密度(可能大于一)。为了得到 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
Run Code Online (Sandbox Code Playgroud)
女巫结果
0.99999999999961509
Run Code Online (Sandbox Code Playgroud)