Учитывая распределение вероятностей с неизвестной функциональной формой (пример ниже), мне нравится строить контурные линии на основе «процентили», т. Е. Те, которые соответствуют областям с интегралом от 10% , 20%, ..., 90% и т.д.Python, строящий горизонтальные линии с процентилями распределения вероятности
## 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, методы, включающие stats.gaussian_kde в SciPy, и даже, возможно, генерируя случайные выборки точек из распределения и оценки ядра впоследствии. Ни один из них, похоже, не дает решения.
Ваш вопрос некорректен. Существует бесконечно много способов разделить ваш примерный рисунок, чтобы, например, каждая сторона подразделения имела интеграл в 50%. Какое подразделение вы хотите? Похоже, вам нужны контурные линии, но только те, которые соответствуют регионам с интегралом от 10%, 20%, ..., 90%, например. Это верно? –
@TimothyShields Спасибо за разъяснение. То, что вы лучше заявили, действительно то, что я хочу. –