2016-06-22 3 views
0

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

Ниже приведен сценарий

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 для моего случая.

enter image description here

+0

Ваши данные сделаны только с целыми числами. Является ли это дискретной или непрерывной переменной? Также учтите, что PDF является «функцией плотности вероятности». Это означает, что для разреженных данных вы интерпретируете «PDF», а не получаете их. Таким образом, в зависимости от ваших данных, 100 бинов будут бить 10 с точки зрения аппроксимации (это пример, не принимайте цифры буквально). – armatita

+0

Спасибо за информацию, мои данные дискретные. Я не понял твое последнее предложение. Не могли бы вы объяснить больше? – user2532296

+1

Если это дискретная переменная, вы, вероятно, ищете [PMF] (https://en.wikipedia.org/wiki/Probability_mass_function), и мой последний комментарий не будет применяться. Вы все равно можете использовать функцию гистограммы, но вам нужно учитывать, что каждый бит должен соответствовать уникальному значению. Посмотрите, поможет ли вам ответ в этом вопросе (http://stackoverflow.com/questions/30889444/python-matplotlib-probability-mass-function-as-histogram). – armatita

ответ

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

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