Мне нужно нарисовать cdf целочисленных значений, считанных из файла. Я следую примеру здесь. Я не уверен, как я могу нормализовать данные для pdf, а затем вычислить cdf.
import numpy as np
from pylab import *
with open ("D:/input_file.txt", "r+") as f:
data = f.readlines()
X = [int(line.strip()) for line in data]
Y = exp([-x**2 for x in X]) # is this correct?
# Normalize the data to a proper PDF
Y /= ... # not sure what to write here
# Compute the CDF
CY = ... # not sure what to write here
# Plot both
plot(X,Y)
plot(X,CY,'r--')
show()
Я могу предложить ответ, где вы определяете функцию плотности вероятности (PDF) и кумулятивную функцию распределения (CDF) с помощью NumPy.
import numpy as np
# -----------------
data = [88,93,184,91,107,170,88,107,167,90];
# -----------------
# get PDF:
ydata,xdata = np.histogram(data,bins=np.size(data),normed=True);
# ----------------
# get CDF:
cdf = np.cumsum(ydata*np.diff(xdata));
# -----------------
print 'Sum:',np.sum(ydata*np.diff(xdata))
Я использую гистограмму метода Numpy, которая даст мне PDF, а затем я буду вычислять CDF из PDF.
plt.plot(xdata,ydata)
выдает ошибку: x and y must have same first dimension, but have shapes (11L,) and (10L,)
np.histogram
, который для x-координат дает начальную и конечную координаты бара. Если вы хотите нарисовать фигуру с помощью графика, я бы использовал центральные точки начала и конца. В основном xplot = 0.5*(xdata[0:-1]+xdata[1:])
и plot(xplot,ydata)