Я пытаюсь сопоставить функцию плотности вероятности распределения обобщенных экстремальных значений (GEV) (pdf) с данными pdf. Эта гистограмма является функцией корзины. При настройке этого бункера также изменяется результат подбора функций. И curve_fit(func, x, y)
правильно играет эту роль. но эта функция использует оценку наименьших квадратов. Я хочу использовать оценку максимального правдоподобия (MLE). И он дает хорошие результаты с функцией stats.genextreme.fit(data)
. Однако эта функция не отображает изменения формы гистограммы в зависимости от интервала. Просто используйте исходные данные.
Пытаюсь использовать MLE. И мне удалось оценить параметры стандартного нормального распределения с помощью MLE. Однако он основан на исходных данных и не меняется в зависимости от корзины. Даже параметры GEV не могли быть оценены с исходными данными.
Я проверил исходный код genextreme_gen
, rv_continuous
и т. Д. Но этот код слишком сложен. Я не мог принять исходный код с моими навыками Python.
Я хотел бы оценить параметры распределения GEV через MLE. И я хочу получить результат, что оценка меняется в зависимости от корзины.
Что я должен делать?
Прошу прощения за мой плохой английский и благодарю вас за вашу помощь.
+)
h = 0.5 # bin width
dat = h105[1] # data
b = np.arange(min(dat)-h/2, max(dat), h) # bin range
n, bins = np.histogram(dat, bins=b, density=True) # histogram
x = 0.5*(bins[1:]+bins[:-1]) # x-value of histogram
popt,_ = curve_fit(fg, x, n) # curve_fit(GEV's pdf, x-value of histogram, pdf value)
popt = -popt[0], popt[1], popt[2] # estimated paramter (Least squares estimation, LSE)
x1 = np.linspace((popt[1]-popt[2])/popt[0], dat.max(), 1000)
a1 = stats.genextreme.pdf(x1, *popt) # pdf
popt = stats.genextreme.fit(dat) # estimated parameter (Maximum likelihood estimation, MLE)
x2 = np.linspace((popt[1]-popt[2])/popt[0], dat.max(), 1000)
a2 = stats.genextreme.pdf(x2, *popt)
ширина бункера = 2
ширина бункера = 0,5