我正在进行一个小型模拟研究,以检验矩方法和渐近最大似然估计量的性质。基于牛顿拉夫森的最大似然估计和矩量法
矩估计方法很容易获得(它由我的代码的第二行给出),但对于我必须编写牛顿 - 拉夫逊算法(对于一个样本来说工作得非常好)。因为它以这种方式享有一些最佳统计特性,因此需要使用矩估计方法作为起点(a0)。这里去
x<-rbeta(500,0.5,3)
mom<-3*mean(x)/(1-mean(x))
mlea<-function(x,a0,numstp=100,eps=0.001){
n=length(x)
numfin=numstp
ic=0
istop=0
while(istop==0){
ic=ic+1
lprime=n/a0+n/(a0+1)+n/(a0+2)+sum(log(x))
ldprime=-n/a0^2-n/(a0+1)^2-n/(a0+2)^2
a1=a0-(lprime/ldprime)
check=abs((a1-a0)/a0)
if(check<eps){istop=1}
a0=a1
}
list(a1=a1,check=check,realnumstps=ic)
}
这适用于一个样本,但我可以获得这些估计说1000样本?我怎么能轻易地概括这个过程?我的主要困难是由于母亲需要妈妈作为起点,而这两方面都需要从同一个样本计算出来。
预先感谢您。
你可以用'复制(N,{...})''那里...'代表整个代码要重复'N'倍。 – 2014-10-09 19:32:01
@RomanLuštrik不返回数字的矢量,如果你喜欢尝试。 – JohnK 2014-10-09 19:36:17