Логнормальное распределение в python

Я видел несколько вопросов в stackoverflow относительно того, как соответствовать log-normal distribution . Все еще есть два пояснения, которые мне нужны.

У меня есть образец данных, логарифм которого следует нормальному распределению. Таким образом, я могу поместить данные, используя scipy.stats.lognorm.fit (то есть log-normal distribution )

Подгонка работает нормально, а также дает стандартное отклонение. Вот мой фрагмент кода с результатами.

 sample = np.log10(data) #taking the log10 of the data scatter,loc,mean = stats.lognorm.fit(sample) #Gives the paramters of the fit x_fit = np.linspace(13.0,15.0,100) pdf_fitted = stats.lognorm.pdf(x_fit,scatter,loc,mean) #Gives the PDF print "scatter for data is %s" %scatter print "mean of data is %s" %mean 

введите описание изображения здесь РЕЗУЛЬТАТ

 scatter for data is 0.186415047243 mean for data is 1.15731050926 

From the image you can clearly see that the mean is around 14.2, but what I get is 1.15??!! Почему это так? clearly the log(mean) is also not near 14.2!!

В ЭТОМ ПОЧТЕ и в ЭТОМ ВОПРОСе упоминается, что log(mean) является фактическим средним значением.

Но вы можете видеть из моего приведенного выше кода, то, что я получил, использует sample = log(data) и он также, кажется, подходит хорошо. Однако, когда я попытался

 sample = data pdf_fitted = stats.lognorm.pdf(x_fit,scatter,loc,np.log10(mean)) 

Похоже, что работа не работает.

1) Почему среднее значение не равно 14,2?

2) Как нарисовать вертикальные линии заливки / рисования, показывающие область уверенности 1 сигмы?

  • Почему scipy.ndimage.io.imread возвращает PngImageFile, а не массив значений
  • подгонка многовариантных curve_fit в python
  • matplotlib.mlab.griddata очень медленный и возвращает массив nan при вводе действительных данных
  • Библиотека подгонки кривой Python, которая позволяет мне назначать границы параметрам
  • python scipy Delaunay графическое отображение облака
  • Может ли scipy.stats идентифицировать и маскировать очевидные выбросы?
  • Как сделать odeint успешным?
  • Коэффициенты корреляции для разреженной матрицы в python?
  • One Solution collect form web for “Логнормальное распределение в python”

    Ты говоришь

    У меня есть образец данных, логарифм которого следует нормальному распределению.

    Предположим, что data – это массив, содержащий образцы. Чтобы поместить эти данные в лог-нормальное распределение с помощью scipy.stats.lognorm , используйте:

     s, loc, scale = stats.lognorm.fit(data, floc=0) 

    Предположим теперь, что mu и sigma – среднее и стандартное отклонение основного нормального распределения. Чтобы получить оценку этих значений из этой подгонки, используйте:

     estimated_mu = np.log(scale) estimated_sigma = s 

    (Это не оценки среднего и стандартного отклонения выборок в data . См. Страницу wikipedia для формул для среднего значения и дисперсии логарифмически нормального распределения в терминах mu и sigma.)

    Чтобы объединить гистограмму и PDF, вы можете использовать, например,

     import matplotlib.pyplot as plt. plt.hist(data, bins=50, normed=True, color='c', alpha=0.75) xmin = data.min() xmax = data.max() x = np.linspace(xmin, xmax, 100) pdf = stats.lognorm.pdf(x, s, scale=scale) plt.plot(x, pdf, 'k') 

    Если вы хотите просмотреть журнал данных, вы можете сделать что-то вроде следующего. Обратите внимание, что здесь используется PDF нормального распределения.

     logdata = np.log(data) plt.hist(logdata, bins=40, normed=True, color='c', alpha=0.75) xmin = logdata.min() xmax = logdata.max() x = np.linspace(xmin, xmax, 100) pdf = stats.norm.pdf(x, loc=estimated_mu, scale=estimated_sigma) plt.plot(x, pdf, 'k') 

    Кстати, альтернативой установке с stats.lognorm является подгонка log(data) с помощью stats.norm.fit :

     logdata = np.log(data) estimated_mu, estimated_sigma = stats.norm.fit(logdata) 

    Связанные вопросы:

    • Определение логнормального распределения с использованием Scipy vs Matlab
    • Логнормальные случайные числа Центрируется вокруг большого значения
    Python - лучший язык программирования в мире.