Не нормированная гауссова кривая на гистограмме

У меня есть данные, которые имеют гауссовую форму при построении в виде гистограммы. Я хочу построить гауссовую кривую сверху гистограммы, чтобы увидеть, насколько хороши данные. Я использую pyplot от matplotlib. Также я НЕ хочу нормализовать гистограмму. Я могу сделать нормированную форму, но я ищу ненормированную форму. Кто-нибудь знает, как это сделать?

Благодаря! Абхинав Кумар

  • Как использовать логарифмические ячейки в гистограмме Python
  • сохранить pandas.Series график гистограммы в файл
  • гистограмма сюжета datetime.time python / matplotlib
  • Как построить карту плотности в python?
  • Установите гауссовую функцию
  • Создание гистограммы строковых значений в python
  • Как заставить большие шаги выполнять функции scipy.optimize?
  • Построить гистограмму из словаря
  • сохранить pandas.Series график гистограммы в файл
  • Установите гауссовую функцию
  • Python: matplotlib - функция массы вероятности как гистограмма
  • Как сделать гистограмму из списка строк в Python?
  • 3 Solutions collect form web for “Не нормированная гауссова кривая на гистограмме”

    В качестве примера:

    import pylab as py import numpy as np from scipy import optimize # Generate ay = np.random.standard_normal(10000) data = py.hist(y, bins = 100) # Equation for Gaussian def f(x, a, b, c): return a * py.exp(-(x - b)**2.0 / (2 * c**2)) # Generate data from bins as a set of points x = [0.5 * (data[1][i] + data[1][i+1]) for i in xrange(len(data[1])-1)] y = data[0] popt, pcov = optimize.curve_fit(f, x, y) x_fit = py.linspace(x[0], x[-1], 100) y_fit = f(x_fit, *popt) plot(x_fit, y_fit, lw=4, color="r") 

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

    Это будет соответствовать гауссовскому сюжету для распределения, вы должны использовать pcov чтобы дать количественное число для того, насколько хорошо подходит.

    Лучший способ определить, насколько хорошо ваши данные являются гауссовыми, или любое распределение – это хи-квадрат Pearson . Это требует некоторой практики, но это очень мощный инструмент.

    Старый пост, который я знаю, но хотел внести свой код для этого, что просто делает трюк «исправить по области»:

     from scipy.stats import norm from numpy import linspace from pylab import plot,show,hist def PlotHistNorm(data, log=False): # distribution fitting param = norm.fit(data) mean = param[0] sd = param[1] #Set large limits xlims = [-6*sd+mean, 6*sd+mean] #Plot histogram histdata = hist(data,bins=12,alpha=.3,log=log) #Generate X points x = linspace(xlims[0],xlims[1],500) #Get Y points via Normal PDF with fitted parameters pdf_fitted = norm.pdf(x,loc=mean,scale=sd) #Get histogram data, in this case bin edges xh = [0.5 * (histdata[1][r] + histdata[1][r+1]) for r in xrange(len(histdata[1])-1)] #Get bin width from this binwidth = (max(xh) - min(xh)) / len(histdata[1]) #Scale the fitted PDF by area of the histogram pdf_fitted = pdf_fitted * (len(data) * binwidth) #Plot PDF plot(x,pdf_fitted,'r-') 

    Другой способ сделать это – найти нормализованную подгонку и умножить нормальное распределение на (bin_width * общая длина данных)

    это приведет к нормализации вашего нормального распределения

    Python - лучший язык программирования в мире.