温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 郭李鹏 (山西晋城市财政局)
邮箱: 497724596@qq.com
目录
最大似然估计 ( MLE ) 在计量经济学中有广泛的应用。本文主要介绍 MLE 的基本原理和应用,并演示如何在 Stata 软件中进行最大似然估计。
计量经济学中, 最小二乘估计、最大似然估计和广义矩估计是构造统计量的三种基本方法。
最小二乘估计,最合理的参数估计量应该使得模型能最好地拟合样本数据,也就是估计值和观测值之差的平方和最小。
矩估计的基本思想是,简单随机样本的原点矩依概率收敛到相应的总体原点矩,用样本矩替换总体矩,进而找出未知参数的估计。
最大似然估计,最合理的参数估计量应该使得从模型中抽取该 n 组样本观测值的概率最大,也就是概率分布函数或者说是似然函数最大。
最小二乘估计和广义矩估计进行统计推断时并不需要设定密度函数,即无需对干扰项分布进行假设;而最大似然估计的前提条件是,能够写出密度函数的完整设定,其中包含一系列待估参数。
假设针对一个包含
其中
对于分布独立的样本
根据最大似然估计的原理,我们可以通过极大化对数似然函数获得未知参数
在 Stata 中进行最大似然估计的基本步骤如下:
推导最大似然函数
编写似然函数的 Stata 程序
设定解释变量和被解释变量,完整设定 ml model
命令
估计最大似然函数:执行 ml maximize
命令
MLE 的主要运用在离散数据模型和一些分布比较复杂的模型,主要有:Logit 模型,Probit 模型,泊松模型,负二项模型,非似然函数模型以及随机边界模型等。
对于线性回归模型,若假设其满足所有基本假设条件,且干扰项服从正态分布,
矩阵形式为:
我们可以通过 MLE 获得该模型中两组参数
在用 Stata 进行似然估计前,需要先写出对数似然函数基本设定形式:
在 Stata 中执行最大似然估计的第一步是将不包括线性回归函数的似然函数的基本设定编写为 ado 文件,需要注意的是,程序中只定义概似函数的基本设定,如何将线性回归函数加入模型由其他管道设定。
cap program drop mymean_lf
program define mymean_lf
version 9.1
args lnf mu sigma
quietly replace `lnf' = ln(normalden(($ML_y1 - `mu')/`sigma')) - ln(`sigma')
end
程序的第一行用于定义程序的名称,对应最后一行的end 语句,表明程序到此结束。
程序中 version 语句声明编写程序时 Stata 版本,以便更高版本能够兼容运行该程序。
程序的第三行用于声明输入项,关键命令是 args
,其后的 lnf
是一个暂元,用于存放每次迭代得到的似然函数值,mu
和 sigma
表明我似然函数中有两个线性等式。
quietly replace
语句中 Stata 对每一个观察值求得似然函数值后会按观察值的顺序依次累加后存入暂元 lnf
中。
ML_y1
为默认写法,表示被解释变量,是 Stata 指定的一个全局暂元。如果模型中包含多个被解释变量, Stata 会自动将它们依次存放于 ML_y2
、 ML_y3
… ML_yj
中。
上述程序在保存时的文件名一定要为 mymean_lf(与我们所定义的程序名称保持一致),保存类型为 ado 文档。
上面的程序只是定义了最大似然估计的“基本架构”,而要实现对具体模型的估计还需要通过“输入项”的设定来定义最大似然估计的“完整架构”。进行程序完整架构定义的指令结构如下:
ml model lf [d0|d1|d2] progname (eq1: y = x1 x2 …) (eq2: x3 x4) (eq3:) ()
ml
方法的关键命令是 ml model
命令和 ml maximize
命令,ml model
命令用来定义需要拟合的模型, ml maximize
命令用来执行最大化。
Stata 对最大似然估计法的执行提供了四种不同的架构, lf
是最常用的架构,通常对样本满足独立同分布的条件时均可使用。在括号中,等号左边为被解释变量,等号右边为解释变量;冒号表示参数名称。
由于 Stata 进行最大似然估计使用的是数值算法,初始值的设定非常重要。我们可以使用如下命令让 Stata 找到进行最大似然估计的初始值。
我们调入汽车价格的数据,演示 Stata 中如何执行 MLE 估计。
sysuse auto, clear
ml model lf mymean_lf (price=mpg wei len) (sigma: )
ml search
ml maximize
est store mle_reg
MLE 线性回归模型与 OLS 结果对比。
reg price mpg wei len
est store ols_reg
esttab mle_reg ols_reg, mtitle(mle_reg ols_reg)
运算结果如下:
--------------------------------------------
(1) (2)
mle_reg ols_reg
--------------------------------------------
main
mpg -86.79 -86.79
(-1.06) (-1.03)
weight 4.365*** 4.365***
(3.84) (3.74)
length -104.9** -104.9*
(-2.71) (-2.64)
_cons 14542.4* 14542.4*
(2.54) (2.47)
--------------------------------------------
sigma
_cons 2348.4***
(12.17)
--------------------------------------------
N 74 74
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001
从结果可以看出,采用MLE和OLS估计得到的参数没有明显差别,但是 MLE 估计得到的参数的标准差要比 OLS 估计的小。
面板随机边界模型是一种测算各类效率的参数模型,完美假设下的产出函数为
实际生产中,生产受到各种随机因素的影响,往往还存在效率损失,产出函数为
对产出函数两边取对数,可得
转化为线性计量模型:
令
实证分析中,通常设定:
由于
早期面板随机边界模型分为效率不随时间变化的模型和效率可随时间变化两大类。
无效率成分不随时间改变的模型如下:
其中:
无效率成分随时间改变的模型如下:
文献中常用的假设:
若
真正的固定效应模型,简称 TFE - SFA ( True Fixed Effect SFA)。
早期提出的所谓的面板随机边界模型有很明显的局限性 ——— 在产出边界函数的设定中没有考虑不可观测的个体效应,将公司个体效应归入了非效率项会导致非效率程度估计偏误。为了控制不可观测的个体效应,可以将产出边界函数设定为:
sftfe
及帮助文档。
在 Stata 执行随机边界模型估计主要使用 frontier
和 xtfrontier
命令,外部命令有: sfcross
,sfpanel
,sftfe
,sfkk
,SFA2tier
等。
我们以 Stata 官方自带数据集为例,演示 xtfrontier
命令执行随机边界模型估计:
use http://www.stata-press.com/data/r13/xtfrontier1 ,clear
xtfrontier lnwidgets lnmachines lnworkers, ti
est store xtsfa_ti
xtfrontier lnwidgets lnmachines lnworkers, tvd
est store xtsfa_tvd
esttab xtsfa_ti xtsfa_tvd, mtitle(xtsfa_ti xtsfa_tvd)
* 选项 ti 表示不随时间变化, tvd 表示随时间变化。
估计结果如下:
--------------------------------------------
(1) (2)
xtsfa_ti xtsfa_tvd
--------------------------------------------
lnwidgets
lnmachines 0.290*** 0.291***
(17.69) (17.69)
lnworkers 0.294*** 0.294***
(19.07) (19.06)
_cons 3.031*** 3.029***
(21.03) (21.09)
--------------------------------------------
lnsigma2
_cons 1.422*** 1.411***
(5.32) (5.26)
--------------------------------------------
lgtgamma
_cons 1.139** 1.124**
(3.20) (3.14)
--------------------------------------------
mu
_cons 1.126 1.111
(1.74) (1.72)
--------------------------------------------
eta
_cons 0.00168
(0.39)
--------------------------------------------
N 948 948
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001
指数分布是典型的非线性分布,常用于连续数据,特别是持续时间数据研究。指数分布的概率密度函数形式如下:
均值为 1
非线性指数模型可以表示如下:
我们通过模拟数据方式演示如何用 MLE 估计非线性模型。
其中:
scalar a = 2
scalar b = -1
scalar mux = 1
scalar sigx = 1
set obs 10000
set seed 2003
gen x = mux + sigx*invnorm(uniform())
gen lamda = exp(a + b*x)
gen Ey = 1/lamda
* To generate exponential with mean mu=Ey use
* Integral 0 to a of (1/mu)exp(-x/mu) dx by change of variables
* = Integral 0 to a/mu of exp(-t)dt
* = incomplete gamma function P(0,a/mu) in the terminology of Stata
gen y = Ey*invgammap(1,uniform())
outfile y x using mma05data.dta, replace
ado 文件基本设定编写如下:
cap program drop mleexp0
program define mleexp0
version 8.0
args lnf theta /* Must use lnf while could use name other than theta */
quietly replace `lnf' = `theta' - $ML_y1*exp(`theta')
end
MLE 估计命令如下:
sysuse mma05data.dta, clear
ml model lf mleexp0 (y = x)
ml search
ml maximize
estimates store rmle
*Obtain robust standard errors
ml model lf mleexp0 (y = x), robust
ml search
ml maximize
estimates store rmlerobust
local mm "rmle rmlerobust"
esttab `mm',mtitle(`mm') compress nogap b(%10.4f) se(%10.4f) t stats(N ll) keep(_cons x)
运算结果如下:
------------------------------------
(1) (2)
rmle rmlerob~t
------------------------------------
eq1
x -1.0192*** -1.0192***
(0.0099) (0.0100)
_cons 2.0076*** 2.0076***
(0.0142) (0.0141)
------------------------------------
N 10000.0000 10000.0000
ll -247.7733 -247.7733
------------------------------------
Standard errors in parentheses
* p<0.05, ** p<0.01, *** p<0.001
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD