Функция плотности вероятности для набора значений с использованием numpy

Ниже приведены данные, для которых я хочу построить PDF. https://gist.github.com/ecenm/cbbdcea724e199dc60fe4a38b7791eb8#file-64_general-out

Ниже приведен скрипт

import numpy as np
import matplotlib.pyplot as plt
import pylab

data = np.loadtxt('64_general.out')
H,X1 = np.histogram( data, bins = 10, normed = True, density = True) # Is this the right way to get the PDF ?
plt.xlabel('Latency')
plt.ylabel('PDF')
plt.title('PDF of latency values')

plt.plot(X1[1:], H)
plt.show()

Когда я рисую выше, я получаю следующее.

  1. Является ли приведенный выше правильный способ расчета PDF диапазона значений
  2. Есть ли другой способ подтвердить, что результаты, которые я получаю, являются фактическим PDF. Например, как можно показать область под pdf = 1 для моего случая.

введите здесь описание изображения


person user2532296    schedule 22.06.2016    source источник
comment
Ваши данные состоят только из целых чисел. Это дискретная или непрерывная переменная? Также примите во внимание, что PDF — это функция плотности вероятности. Это означает, что для разреженных данных вы интерпретируете PDF-файл, а не получаете его. Таким образом, в зависимости от ваших данных, наличие 100 бинов будет лучше 10 с точки зрения приближения (это пример, не воспринимайте цифры буквально).   -  person armatita    schedule 22.06.2016
comment
Спасибо за информацию, мои данные являются дискретной переменной. Я не понял твоего последнего предложения. Не могли бы вы объяснить больше?   -  person user2532296    schedule 22.06.2016
comment
Если это дискретная переменная, то вы, вероятно, ищете PMF, и мой последний комментарий выиграет. не применять. Вы по-прежнему можете использовать для этого функцию гистограммы, но вам нужно учитывать, что каждый бин должен соответствовать уникальному значению. Посмотрите, поможет ли вам ответ в этом вопросе.   -  person armatita    schedule 22.06.2016


Ответы (1)


  1. Это законный способ аппроксимации PDF. Поскольку np.histogram использует различные методы для объединения значений, вы не получите точную частоту каждого числа на входе. Для более точного приближения вы должны подсчитать появление каждого числа и разделить его на общее количество. Кроме того, поскольку это дискретные значения, график можно изобразить в виде точек или столбцов, чтобы получить более правильное впечатление.

  2. В дискретном случае сумма частот должна равняться 1. В непрерывном случае вы можете, например, использовать np.trapz() для аппроксимации интеграла.

person user1337    schedule 22.06.2016