基于Newton-Raphson和矩量法的极大似然估计

时间:2014-10-09 19:10:00

标签: r statistics

我正在进行一项小型模拟研究,以渐近方式检验矩量法和最大似然估计量的性质。

矩量估计器的方法很容易获得(它由我的代码的第二行给出)但是对于mle我必须编写一个Newton-Raphson算法(对于一个样本非常有效)。 mle需要使用矩量估计器的方法作为起点(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个样本的这些估计吗?我怎么能轻易地概括这个过程?我的主要困难是由于mle需要妈妈作为起点这一事实,并且这两者都需要从同一样本计算出来。

提前谢谢。

1 个答案:

答案 0 :(得分:4)

我想你想这样做?

n<-100
replicate(n, { 
    x<-rbeta(500,0.5,3)
    mom<-3*mean(x)/(1-mean(x))
    mlea(x, mom) 
})

现在,由于函数mlea返回一个列表,因此不会返回数字向量。让我们说一下你真正关心的那个列表中的值是a1,然后就可以了

n<-100
replicate(n, { 
    x<-rbeta(500,0.5,3)
    mom<-3*mean(x)/(1-mean(x))
    mlea(x, mom)$a1 
})

注意我在函数调用结束时调用$ a1。

所以这里发生的是复制将从你的beta分布中为每次重复迭代(将迭代n次)提取500个新观察,然后根据该x计算妈妈,然后给出结果mlea

我的结果?

replicate(3, {
            x<-rbeta(500,0.5,3)
            mom<-3*mean(x)/(1-mean(x))
            list(a1=mlea(x, mom)$a1, mom=mom)
        })
#    [,1]      [,2]      [,3]     
#a1  0.494497  0.522325  0.5153832
#mom 0.4955767 0.5083678 0.5206997

这里的每一列都是观察