Какой смысл norm.fit в scipy?

Я генерирую случайную выборку данных и строю ее PDF-файл, используя scipy.stats.norm.fit для генерации моих параметров loc и scale.

Я хотел посмотреть, как будет выглядеть мой pdf, если я просто вычислю среднее и стандартное значение, используя numpy без фактической подгонки. К моему удивлению, когда я рисую оба файла в формате pdf и печатаю оба набора mu и std, результаты, которые я получаю, абсолютно одинаковы. Итак, мой вопрос: в чем смысл norm.fit, если я могу просто рассчитать среднее значение и стандартное отклонение для моей выборки и при этом получить те же результаты?

Это мой код:

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

data = norm.rvs(loc=0,scale=1,size=200)

mu1 = np.mean(data)

std1 = np.std(data)

print(mu1)
print(std1)

mu, std = norm.fit(data)

plt.hist(data, bins=25, density=True, alpha=0.6, color='g')

xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
q = norm.pdf(x, mu1, std1)
plt.plot(x, p, 'k', linewidth=2)
plt.plot(x, q, 'r', linewidth=1)
title = "Fit results: mu = %.5f,  std = %.5f" % (mu, std)
plt.title(title)

plt.show()

И вот результаты, которые я получил:

PDF случайного набора значений

mu1 = 0,034824979915482716

std1 = 0,9945453455908072

Всего 1 ответ


Дело в том, что есть несколько других распределений, кроме нормального распределения. Scipy предоставляет согласованный API для изучения параметров этих распределений из данных. (Хотите экспоненциальное распределение вместо нормального распределения? Это scipy.stats.expon.fit .)

Так что ваш путь также работает, потому что параметры нормального распределения являются средним и стандартным отклонением. Но речь идет о предоставлении согласованного интерфейса для всех дистрибутивов, включая те, где это не так.


Есть идеи?

10000