我正在使用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的单个值。但在这种情况下我很困惑。请帮忙。
答案 0 :(得分:3)
您需要找到的函数位于0.5 < x1 < 1.5
和4.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。