在多元正态分布中找出概率

时间:2015-03-09 16:13:44

标签: python data-mining probability

我正在使用python。我知道要在多元正态分布中找到概率,我必须使用以下内容:

fx(x1,...,xk)=(1 /√(2π)^ k |Σ|)* exp(-1/2(x-μ)T *Σ^ -1 *(x-μ))

其中x = [x1,x2]

我有不同的x1和x2值。

但在这里我必须找到概率:

0.5&LT; x1 <1.5和4.5 < x2 <5.5

我知道如何将此公式用于x1和x2的单个值。但在这种情况下我很困惑。请帮忙。

1 个答案:

答案 0 :(得分:3)

您需要找到的函数位于0.5 < x1 < 1.54.5 < x2 < 5.5所限定矩形的函数下方。

作为一种快速而肮脏的解决方案,您可以使用此代码执行双变量Reimann求和来估算积分。 Reimann总和只是将矩形划分为小区域并近似每个区域下的区域,就好像函数是平坦的一样。

如果您已将分配定义为函数f

x1Low   = 0.5
x1Hi    = 1.5
x2Low   = 4.5
x2Hi    = 5.5

x1steps = 1000
x2steps = 1000
x1resolution = (x1Hi-x1Low)/x1steps
x2resolution = (x2Hi-x2Low)/x2steps
area = x1resolution*x2resolution

x1vals = [x1Low + i*x1resolution for i in range(x1steps)]
x2vals = [x2Low + i*x2resolution for i in range(x2steps)]

sum = 0;
for i in range(len(x1vals-1)):
    for j in range(len(x2vals-1)):
        sum += area * f(x1vals[i],x2vals[j])

print sum

请记住,这笔金额只是一个近似值,也不是一个很好的值。它将严重高估或低估功能变化太快的区域中的积分。

如果您需要更高的准确度,可以尝试实施triangle rule or simpsons's rule,或者查看scipy's numerical integration tools