给定一个未知函数形式的概率分布(如下示例),我喜欢绘制“基于百分位”的等高线,即那些与10%、20%、…、90%等积分区域相对应的等高线
## example of an "arbitrary" probability distribution ##
from matplotlib.mlab import bivariate_normal
import matplotlib.pyplot as plt
import numpy as np
X, Y = np.mgrid[-3:3:100j, -3:3:100j]
z1 = bivariate_normal(X, Y, .5, .5, 0., 0.)
z2 = bivariate_normal(X, Y, .4, .4, .5, .5)
z3 = bivariate_normal(X, Y, .6, .2, -1.5, 0.)
z = z1+z2+z3
plt.imshow(np.reshape(z.T, (100,-1)), origin='lower', extent=[-3,3,-3,3])
plt.show()
我研究了多种方法,从在matplotlib中使用默认轮廓函数,方法包括高斯统计在scipy中,甚至可能从分布中生成随机点样本,然后估计一个核。它们似乎都没有提供解决方案。在
你可以这样做:
它给出了:
在轮廓p(x)≥t内观察p(x)的积分,求出所需的t值:
相关问题 更多 >
编程相关推荐