如何实现最大似然估计类型2?

时间:2019-03-03 09:46:43

标签: python scipy sympy bayesian pymc3

我正在尝试实施经验贝叶斯ML-II(最大似然估计II型)方法以根据历史数据估算先验分布参数

位置:

  1. π(θ)是先验分布的表达式
  2. p(x |θ)是数据分布的表达式
  3. m(x)是边际分布的表达式

根据这些步骤,我需要首先进行积分以找到边际分布的表达式,然后找到该表达式的极值以估计先前分布的参数。 可以使用诸如scipy.optimize之类的方法来实现极值。那么问题是我们如何整合呢?

enter image description here

1 个答案:

答案 0 :(得分:2)

这里是使用symfit进行的尝试。例如,我选择从没有协方差的二元正态分布中抽样。

import numpy as np
import matplotlib.pyplot as plt
from symfit import Model, Fit, Parameter, Variable, integrate, oo
from symfit.distributions import Gaussian
from symfit.core.objectives import LogLikelihood

# Make variables and parameters
x = Variable('x')
y = Variable('y')
m = Variable('m')
x0 = Parameter('x0', value=0.6, min=0.5, max=0.7)
sig_x = Parameter('sig_x', value=0.1)
y0 = Parameter('y0', value=0.7, min=0.6, max=0.9)
sig_y = Parameter('sig_y', value=0.05)

pdf = Gaussian(x=x, mu=x0, sig=sig_x) * Gaussian(x=y, mu=y0, sig=sig_y)
marginal = integrate(pdf, (y, -oo, oo), conds='none')
print(pdf)
print(marginal)

model = Model({m: marginal})

# Draw 10000 samples from a bivariate distribution
mean = [0.59, 0.8]
cov = [[0.11**2, 0], [0, 0.23**2]]
xdata, ydata = np.random.multivariate_normal(mean, cov, 10000).T

# We provide only xdata to the model
fit = Fit(model, xdata, objective=LogLikelihood)
fit_result = fit.execute()
print(fit_result)

xaxis = np.linspace(0, 1.0)
plt.hist(xdata, bins=100, density=True)
plt.plot(xaxis, model(x=xaxis, **fit_result.params).m)
plt.show()

这将为pdf和边界分布打印以下内容:

>>> exp(-(-x0 + x)**2/(2*sig_x**2))*exp(-(-y0 + y)**2/(2*sig_y**2))/(2*pi*Abs(sig_x)*Abs(sig_y))
>>> sqrt(2)*sig_y*exp(-(-x0 + x)**2/(2*sig_x**2))/(2*sqrt(pi)*Abs(sig_x)*Abs(sig_y))

对于适合的结果:

Parameter Value        Standard Deviation
sig_x     1.089585e-01 7.704533e-04
sig_y     5.000000e-02 nan
x0        5.905688e-01 -0.000000e+00
Fitting status message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'
Number of iterations:   9
Regression Coefficient: nan

enter image description here

您可以看到已正确获得x0sig_x,但是无法获得与y有关的参数信息。我认为在此示例中这是有道理的,因为没有相关性,但是我会让您为这类细节苦恼;)。