[英]Maximum Likelihood estimation based on Newton-Raphson and the method of moments
我正在进行一项小型仿真研究,以渐近地研究矩量法和最大似然估计器的性质。
矩估计器的方法很容易获得(由我的代码的第二行给出),但是对于我来说,我不得不编写一个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个样本的估计值? 我如何轻松地概括这个过程? 我的主要困难是由于以下事实引起的:the鼠需要妈妈作为起点,而这两者都需要从同一样本中计算得出。
先感谢您。
我想你想这样做吗?
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分布中提取500个新观察值(将迭代n次),然后基于该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
这里的每一列都是一个观察
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.