我使用我知道的正态分布的权重随机生成 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 有类似的关系,但有同样的问题。有人可以澄清如何做到这一点来帮助我的曲线拟合吗?也许去发布我可以使用的伪代码?