13.1 极大似然估计的原理
极大似然的估计原理可以由下面的程序得到说明。我们首先生成 10 个服从
正态分布的总体,每个总体的均值都不同,依次为 0,1,2,3,4,5,6,7,8,
9。方差相同,均为 1。然后我们随机地取出一个总体,从中抽出 10 个样本,因
为事先不知道是从哪一个总体中抽出来的,所以我们分别用已知的 10 个总体参
数值代入似然函数,计算出 10 个似然函数值,取其中 大的似然值,认为该样
本是从相应的总体中取出的(从而联合概率密度也 大化)。然后我们让计算机
告诉我们它是从第几个总体中取样的,并与我们的判断进行对比。
*===========================begin==================================
capt prog drop mle
prog mle
/*生成10个均值不同、方差均为1的正态总体,每个总体取8个样本*/
drawnorm double x0-x9,n(8) m(0,1,2,3,4,5,6,7,8,9) clear
global i=int(10*uniform()) //设定一个随机数,用于随机取出一个总体
forv j=0/9 {
gen lnf`j' =-0.5*ln(2*_pi)*8-sum(0.5*(x$i-`j')^2) //对取出的总体计算似然值
scalar lnf`j'=lnf`j'[_N] //最终的似然值
}
scalar list // 比较10个似然值哪个最大,猜想是从第几个总体取出来的?
end
mle
*根据10个似然值,猜想是从第几个总体取出来的?
di "所抽中的样本为" as error "X"$i //显示真正的取样总体是什么
*===========================end====================================
在现实中,我们并不知道任何一个真正的总体参数,因此,只能借助于找到
样本似然值(实际上是联合概率密度的对数值) 大的总体参数,即认为其是总
体参数。在 STATA 中实现 大似然法的估计必须自己编写程序。下面的例子说
明了如何利用 stata 编写程序来实现对模型的极大似然估计。
13.2 正态总体均值和方差的极大似然估计
*===========================begin==================================
capt prog drop bb
prog bb //定义程序的名称
args lnf u v //声明参数,u 为均值,v为方差
quietly replace `lnf' = -0.5*ln(2*_pi) - ln(`v') -0.5*($ML_y1-`u')^2/(`v')^2
end
drawnorm x,n(100) m(10) sd(3) clear//模拟均值为10,方差为3的100个正态样本
ml model lf bb (x=) (variance:) //利用迭代法则进行极大似然估计
2022-11-05 22:27:01
2.41MB
stata
1