3.5 编程练习-最大似然估计

最大似然估计

这一节我们演示如何利用最大似然估计(maximum likelihood estimation)的方法来估计一组数据背后的高斯分布

首先我们生成数据:

from scipy.stats import norm
import matplotlib.pyplot as plt

sigma = 3 # 高斯分布的均值
u = 5 # 均值

normobj = norm(loc=u, scale=sigma) # 定义一个高斯分布
data = normobj.rvs(size=1000) # 从高斯分布中采样1000个数据

随后对数据数据进行简单可视化:

plt.hist(data)
plt.ylabel('count')
plt.xlabel('data value')

现在我们假定分布的均值未知,利用数据来估计均值的值。

首先写出负对数似然函数(negative log-likelihood function):

我们将不同的均值传入定义的函数,看其得出的负对数似然值,可以看到当mu=5时,负对数似然函数取到最小值。

或者我们也可以直接使用scipy 中的minimize函数,来直接找到使得负对数似然函数取到最小的mu值。

The estimated mean of the distribution is 4.9821100894980646

用最大似然估计解决线性回归问题

假定y=0.5x+3y =0.5x+3,我们生成xx与对应的yy并进行可视化。

我们先复习一下上一章讲的最小二乘法求解线性回归问题:

Linear coefficient is 0.5008892586858943

Intercept is 2.943209971344448

下面用最大似然估计来求解线性回归问题:

Linear coefficient is 0.5008892577373644

Intercept is 2.943210034713618

可以看到,两者的结果非常接近,实际上两者在数学上是完全等价的。

最后更新于