Я произвольно сгенерировал 1000 точек данных с использованием значений, которые, как я знаю, верны для нормального распределения. Теперь я пытаюсь минимизировать функцию правдоподобия для оценки значений sig^2 и весов. Я как бы понимаю процесс, но когда я пытаюсь его кодировать, я просто теряюсь.Использование scipy оптимизация для оценки MLE и подгонки кривой
Это моя модель:
p(y|x, w, sig^2) = N(y|w0+w1x+...+wnx^n, sig^2)
Я прибегая к помощи на некоторое время теперь, и я узнал, что функция scipy.stats.optimize.minimize хороша для этого, но я не могу получить это правильно работать. Каждое решение, которое я пробовал, сработало для примера, из которого я получил решение, но я не могу экстраполировать его на свою проблему.
x = np.linspace(0, 1000, num=1000)
data = []
for y in x:
data.append(np.polyval([.5, 1, 3], y))
#plot to confirm I do have a normal distribution...
data.sort()
pdf = stats.norm.pdf(data, np.mean(data), np.std(data))
plt.plot(test, pdf)
plt.show()
#This is where I am stuck.
logLik = -np.sum(stats.norm.logpdf(data, loc=??, scale=??))
Я обнаружил, что ошибка уравнение (ш) = 0,5 * сумма (поли (x_n, ж) - y_n)^2 имеет значение для минимизации ошибки веса, который, следовательно, максимизирует мою вероятность для весов, но я не понимаю, как это кодировать ... Я нашел аналогичную связь для sig^2, но имею ту же проблему. Может кто-нибудь объяснить, как это сделать, чтобы помочь моей кривой? Может быть, зайти так далеко, чтобы опубликовать код psuedo, который я могу использовать?
Что такое 'test'? Можете ли вы изменить свой вопрос, чтобы предоставить пример «теста», который мы можем использовать? Кроме того, каков ваш желаемый результат? Значения веса и сигмы, которые максимизируют вероятность? – cd98
Ah test был более старым списком, который я использовал, который я заменил данными, это была опечатка в SO-коде. Да, я пытаюсь найти ценности для весов и сигмы, которые максимизируют вероятность. – user2967087