在前两节中,我们回答了两个问题:
现在进入核心问题:
未知总体参数,如何用数据进行估计?
1问题建模
设:
其中:
👉 目标:
用样本构造估计量:
2直觉理解(非常关键)
你可以这样理解:
数据已经发生了参数是“解释数据的原因”
👉 举例:
问题变成:
哪个 最可能生成当前数据?
3极大似然估计(MLE)
定义
似然函数:
MLE 定义为:
对数似然(工程常用)
👉 原因:
4正态分布的 MLE(经典结果)
设:
推导结果
👉 注意:
5Python验证(正态MLE)
# file: mle_normal.pyimport numpy as npdefmain(): np.random.seed(0) data = np.random.normal(10, 2, 1000) mu_hat = np.mean(data) sigma_hat = np.sqrt(np.mean((data - mu_hat)**2)) print("真实均值:", 10) print("估计均值:", mu_hat) print("真实标准差:", 2) print("估计标准差:", sigma_hat)if __name__ == "__main__": main()
结果解释
6优化视角(非常重要)
MLE 本质是一个优化问题:
数值验证(单参数)
# file: mle_grid_search.pyimport numpy as npimport matplotlib.pyplot as pltdeflog_likelihood(mu, data):return -np.sum((data - mu)**2)defmain(): np.random.seed(0) data = np.random.normal(10, 2, 100) mu_grid = np.linspace(5, 15, 200) ll = [log_likelihood(mu, data) for mu in mu_grid] best_mu = mu_grid[np.argmax(ll)] print("最优mu:", best_mu) print("样本均值:", np.mean(data)) plt.plot(mu_grid, ll) plt.title("Log-Likelihood") plt.show()if __name__ == "__main__": main()
执行结果如下: