目录

一、引言

二、理论原理

三、准备数据

四、定义似然函数

五、进行最大似然估计

六、代码解释

七、代码运行结果

八、模型评估与诊断


一、引言


最大似然估计(Maximum Likelihood Estimation,MLE)是一种在统计学中广泛应用的参数估计方法。它的基本思想是在给定的观测数据下,寻找使得观测数据出现的概率最大的参数值。在 Stata 中,我们可以方便地实现最大似然估计,并对结果进行分析和解释。

二、理论原理
 

为了找到这个最优参数值,我们可以通过对对数似然函数求导,并令导数为零来求解(在满足一定的正则条件下)。如果函数较为复杂,无法直接通过求导求解,可以使用数值优化算法,如牛顿法、拟牛顿法等。

三、准备数据


我们使用一份数据集“wage.dta”,该数据集包含了员工的工资、工作经验等信息。

use "wage.dta", clear

四、定义似然函数


假设我们要估计工资(wage)与工作经验(exper)之间的线性关系,即假设工资服从正态分布 。

program define my_likelihood
    version 13
    args lnf beta0 beta1 sigma
    quietly {
        tempvar mu
        gen double `mu' = `beta0' + `beta1' * exper
        tempvar z
        gen double `z' = ( ( wage - `mu' ) ^ 2 ) / ( 2 * `sigma' ^ 2 )
        replace `lnf' = - log(`sigma') - 0.5 * log(2 * _pi) - 0.5 * `z'
    }
end

五、进行最大似然估计

ml model lf my_likelihood (beta0) (beta1) (sigma)
ml maximize

六、代码解释

  • 在定义的似然函数中,首先计算了预测的工资值 mu,它是基于输入的参数 beta0 和 beta1 以及观测值 exper 得到的。
  • 然后计算每个观测值的实际工资与预测工资的偏差的平方,并根据正态分布的概率密度函数公式计算对数似然值。
  • ml model lf 语句指定使用自定义的似然函数进行建模,并明确了要估计的参数 beta0beta1 和 sigma
  • ml maximize 语句用于调用 Stata 的优化算法来寻找使得似然函数最大的参数值。

七、代码运行结果


运行上述代码后,Stata 会输出最大似然估计的结果,包括估计的参数值、标准误差、t 值等。

例如,可能得到的输出如下:

Iteration 0:   log likelihood = -2871.871  
Iteration 1:   log likelihood = -2838.2781  
Iteration 2:   log likelihood = -2837.6243  
Iteration 3:   log likelihood = -2837.6242  

Maximum likelihood estimates
------------------------------------------------------------------------------
             |       Obs        Mean    Std. Err.       [95% Conf. Interval]
-------------+---------------------------------------------------------------
      beta0 |   .    5.238215.5238215    4.200578    6.275852
      beta1 |   .    0.815387.0815387    0.652306    0.978468
      sigma |   .    2.158743.2158743    1.726994    2.590492
------------------------------------------------------------------------------

从输出结果中,我们可以得到参数 、 和  的估计值以及相关的统计信息。例如,beta0 的估计值为 5.238215,标准误差为 0.5238215。t 值可以通过估计值除以标准误差计算得到,用于检验参数的显著性。

八、模型评估与诊断

1. 残差分析

残差是观测值与模型预测值之间的差异。通过对残差的分析,我们可以评估模型的拟合效果和是否满足模型的假设。

  • 绘制残差图:将残差与预测值、自变量或其他相关变量进行绘图。如果残差随机分布在零附近,没有明显的趋势或模式,通常表明模型拟合较好。例如,如果残差随预测值增大而增大或减小,可能意味着存在异方差问题。

  • 正态性检验:对残差进行正态性检验,如 Shapiro-Wilk 检验或绘制残差的直方图和正态概率图(Q-Q 图)。如果残差近似服从正态分布,符合模型假设;否则,可能需要考虑对数据进行变换或使用其他更适合的模型。

  • 独立性检验:通过 Durbin-Watson 检验等方法检查残差是否相互独立。如果残差存在自相关,可能需要在模型中加入适当的滞后项或使用其他模型形式。

2. 拟合优度检验

拟合优度检验用于评估模型对数据的整体拟合程度。

  • 似然比检验(Likelihood Ratio Test):比较当前模型与一个更简单的嵌套模型的似然值。如果两个模型的似然值差异显著,说明当前模型相对于简单模型有显著改进。

  • 信息准则:如 Akaike Information Criterion (AIC) 和 Bayesian Information Criterion (BIC)。这些准则在考虑模型拟合度的同时,也对模型的复杂度进行惩罚。较小的 AIC 或 BIC 值通常表示模型更优。

一文了解最大似然估计(Maximum Likelihood Estimation) (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzI1MjQ2OTQ3Ng==&mid=2247604343&idx=1&sn=8659045f8c4279710a205da9303af5e8&chksm=e9e051fcde97d8ea1dc8cc716325c4e7c8ce7da52af653e8462039f51caa7ad7703805d18626#rd 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐