Подгонка распределения Вейбулла с использованием Scipy

Я пытаюсь воссоздать примерку распределения максимального правдоподобия, я уже могу сделать это в Matlab и R, но теперь я хочу использовать scipy. В частности, я хотел бы оценить параметры распределения Вейбулла для моего набора данных.

Я попробовал это:

import scipy.stats as s
import numpy as np
import matplotlib.pyplot as plt

def weib(x,n,a):
    return (a / n) * (x / n)**(a - 1) * np.exp(-(x / n)**a)

data = np.loadtxt("stack_data.csv")

(loc, scale) = s.exponweib.fit_loc_scale(data, 1, 1)
print loc, scale

x = np.linspace(data.min(), data.max(), 1000)
plt.plot(x, weib(x, loc, scale))
plt.hist(data, data.max(), normed=True)
plt.show()

И получите это:

(2.5827280639441961, 3.4955032285727947)

И дистрибутив, который выглядит так:

Я использовалexponweib после прочтенияhttp://www.johndcook.com/distributions_scipy.html, Я также пробовал другие функции Вейбулла в scipy (на всякий случай!).

В Matlab (с использованием инструмента Distribution Fitting - см. Скриншот) и в R (с использованием функции библиотеки MASSfitdistr и пакет GAMLSS) я получаю параметры a (loc) и b (масштаб) больше как 1.58463497 5.93030013. Я полагаю, что все три метода используют метод максимального правдоподобия для распределения распределения.

Я разместил свои данныеВот если вы хотите пойти! И для полноты я использую Python 2.7.5, Scipy 0.12.0, R 2.15.2 и Matlab 2012b.

Почему я получаю другой результат !?

Ответы на вопрос(8)

Ваш ответ на вопрос