单参的情况
给定观察集 D=(F i ,e i ) ,估计真实的 F true :
将 P(D i |F true ) 这一条件概率(conditional probability)称为给定 F true (参数)下的样本 D i 发生的概率,根据上述等式其等于以 F true 为均值,以 e i 为标准差的正太分布。
在整个数据集
D
(或者the entire set of measurements,观察集)上,构建似然函数(
likelihood function
):
为简化计算,对数形式,也即对数似然(log_likelihood function)如下:
等式两边对
F true
求偏导,
dLdF true =0
:
在
e i
相等时:
def log_likelihood(theta, F, e):
return -.5*np.sum(np.log(2*np.pi*e**2)+(F-theta[0])**2/(e**2))
双参的情况
构建似然函数:
同理,对数似然形式为:
接下来的处理和单参的情况类似(取对数,求关于 μ 和 σ 的偏导,置0,解析解(analytical solution,closed form solution))。
def log_likelihood(theta, F, e):
return -.5*np.sum(np.log(2*np.pi*(theta[1]**2+e**2))+(F-theta[0])**2/(theta[1]**2+e**2))
此时,我们可以使用scipy下的最优化函数,一般是最小化目标函数(objective function),所以:
from scipy import optimize
def neg_log_likelihood(theta, F, e):
return -log_likelihood(theta, F, e)
theta_gauss = [900, 5]
theta_est = optimize.fmin(func=neg_log_likelihood, x0=theta_gauss, args=(F, e))