Установка нормального распределения на 1D-данные
У меня есть 1 размерный массив, и я могу вычислить "среднее" и "стандартное отклонение" этого образца и построить "нормальное распределение", но у меня есть проблемы:
Я хочу построить данные и нормальное распределение на том же рисунке, что и ниже:
Я не знаю, как построить как "DATA", так и "Normal Distribution"
любая идея о "гауссовой функции плотности вероятности в scipy.stats"?
s = np.std(array)
m = np.mean(array)
plt.plot(norm.pdf(array,m,s))
Ответы
Ответ 1
Вы можете использовать matplotlib
для построения гистограммы и PDF (как в ссылке в ответе @MrE). Для установки и для вычисления PDF вы можете использовать scipy.stats.norm
следующим образом.
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# Generate some data for this demonstration.
data = norm.rvs(10.0, 2.5, size=500)
# Fit a normal distribution to the data:
mu, std = norm.fit(data)
# Plot the histogram.
plt.hist(data, bins=25, normed=True, alpha=0.6, color='g')
# Plot the PDF.
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
title = "Fit results: mu = %.2f, std = %.2f" % (mu, std)
plt.title(title)
plt.show()
Здесь график, созданный script:
![Plot]()
Ответ 2
Чтобы увидеть как нормальное распределение, так и ваши фактические данные, вы должны построить свои данные в виде гистограммы, а затем нарисуйте функцию плотности вероятности над этим. См. Пример http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html для того, как это сделать.