2014-09-05 3 views
2

Два приведенных ниже графика отображают примерно ту же информацию.Плотность с частотой

  • Один на левом представляет собой гистограмму, где ось Y представляет частоты (т.е. как часто мы видим значение в пределах диапазона, связанный с каждым бункером).

  • Справа плотность (оценка KDE). Ось Y представляет плотность (интеграл должен содержать до одного).

Я обычно предпочитаю график плотности (вы можете настроить, но ось Y, как правило, труднее интерпретировать.

Я знаю, что оценка KDE будет возвращать плотность, которая добавляет до 1 в предположении, что область переменная охватывает от -Inf до Inf, но есть ли способ сопоставить PDF, полученный в результате оценки KDE, до частот (например, для увеличения значений, чтобы иметь частоты)?

Речь идет только о «масштабировании» ось? Или есть что-то еще?

      density vs frequency

+0

Я не использовал графики плотности в Matplotlib раньше; однако вы могли бы достичь чего-то вроде того, что вы описываете, либо с помощью преобразования, либо с помощью doublex() - см. [http://matplotlib.org/examples/api/two_scales.html](http://matplotlib.org/examples/ api/two_scales.html) – Maximus

+0

это возможно с 'seaborn' напрямую. см .: http://web.stanford.edu/~mwaskom/software/seaborn/examples/distplot_options.html –

ответ

1

Вы должны вычислить точки плотности, а затем участок. Прочитано http://scikit-learn.org/stable/modules/density.html. Некоторый код:

from sklearn.neighbors.kde import KernelDensity 
import numpy as np 
import matplotlib.pyplot as plt 

# This X is your data for the histogram 
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) 
X = X.reshape(-1, 1) 

kde = KernelDensity(kernel='gaussian', bandwidth=1).fit(X) 
x = np.linspace(X.min(), X.max(), 100).reshape(-1, 1) 

density = np.exp(kde.score_samples(x)) 

plt.plot(x, density) 
plt.show() 

enter image description here

+0

Спасибо. Я запутался. Почему ваша ось Y отрицательная? Разве интеграл не должен составлять до 1? –

+1

Да, я изучал его: вы должны проверять каждую точку. Редактирование! Подпишитесь на http://nbviewer.ipython.org/github/cs109/content/blob/master/lec_03_statistical_graphs.ipynb – xbello

+0

Спасибо! Я думаю, что все еще отсутствует, как масштабировать это, чтобы он представлял частоты (как указано в OP). Интересно, сделает ли это просто «1/плотность»? –

Смежные вопросы