Как извлечь вероятности функции плотности в python (pandas kde) - PullRequest
1 голос
/ 05 августа 2020

Функция pandas.plot.kde() удобна для построения оценочной функции плотности непрерывной случайной величины. Он будет принимать данные x в качестве входных и отображать вероятности p (x) разделенного входа в качестве выходных данных.

Как я могу извлечь значения вероятностей, которые он вычисляет ? Вместо того, чтобы просто строить графики вероятностей выборок с полосой пропускания, я хотел бы массив или pandas ряд, содержащий значения вероятности, которые он вычисляет внутренне.

Если это невозможно сделать с pandas kde, позвольте мне знать любой эквивалент в scipy или другом

1 Ответ

1 голос
/ 05 августа 2020

Есть несколько способов сделать это. Вы можете вычислить это самостоятельно или получить из графика.

  1. Как указано в комментарии @RichieV после этого сообщения , вы можете извлечь данные из графика, используя
data.plot.kde().get_lines()[0].get_xydata()
Используйте seaborn, а затем то же, что и в 1):

Вы можете использовать seaborn для оценки плотности ядра, а затем matplotlib для извлечения значений (как в this пост ). Вы можете использовать distplot или kdeplot:

import seaborn as sns

# kde plot
x,y = sns.kdeplot(data).get_lines()[0].get_data()
# distplot
x,y = sns.distplot(data, hist=False).get_lines()[0].get_data()

Вы можете использовать методы, лежащие в основе scipy.stats.gaussian_kde , чтобы оценить плотность ядра, которая используется pandas:
import scipy.stats

density = scipy.stats.gaussian_kde(data)

, а затем вы можете используйте это, чтобы оценить его по набору баллов:

x = np.linspace(0,80,200)
y = density(xs)
...