gpt4 book ai didi

python - 使用 scipy Optimize 进行 MLE 估计和曲线拟合

转载 作者:行者123 更新时间:2023-11-30 22:48:17 27 4
gpt4 key购买 nike

我使用我知道的正态分布正确的权重随机生成了 1000 个数据点。现在我试图最小化 -log 似然函数来估计 sig^2 的值和权重。我从概念上理解了这个过程,但当我尝试编写代码时,我迷失了方向。

这是我的模型:

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=??))

我发现方程 error(w) = .5*sum(poly(x_n, w) - y_n)^2 与最小化误差相关的权重,因此最大化了我对权重的可能性,但我不明白如何编码......我发现了 sig^2 的类似关系,但有同样的问题。有人可以澄清如何做到这一点来帮助我的曲线拟合吗?也许尽可能发布我可以使用的伪代码?

最佳答案

是的,使用minimize实现似然拟合是很棘手的,我花了很多时间在这上面。这就是我把它包裹起来的原因。如果我可以无耻地插入我自己的包symfit ,您的问题可以通过执行以下操作来解决:

from symfit import Parameter, Variable, Likelihood, exp
import numpy as np

# Define the model for an exponential distribution
beta = Parameter()
x = Variable()
model = (1 / beta) * exp(-x / beta)

# Draw 100 samples from an exponential distribution with beta=5.5
data = np.random.exponential(5.5, 100)

# Do the fitting!
fit = Likelihood(model, data)
fit_result = fit.execute()

我必须承认我不太了解你的发行版,因为我不了解你的 w 的作用,但也许以这段代码为例,你会知道如何适应它。

如果没有,请让我知道您模型的完整数学方程,以便我可以为您提供进一步帮助。

有关更多信息,请查看docs 。 (有关幕后发生的情况的更多技术描述,请阅读 herehere 。)

关于python - 使用 scipy Optimize 进行 MLE 估计和曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219476/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com