【发布时间】:2016-10-01 20:32:25
【问题描述】:
我正在尝试在 r 中编写代码,以便找到单变量正态分布的最大似然(而不是对数似然)值。我知道还有其他方法,但我需要对数值优化有深入的了解才能进行进一步的工作。当我调用“优化”函数时,它似乎根本不迭代并返回我作为初始参数传递的值。如果我将计算对数似然的函数传递给优化器,则不会发生这种情况。知道为什么吗?我看不到我的错误在哪里。我只能说,也许密度的乘积太接近于零,计算器无法处理。这是我的代码。非常感谢!
set.seed(123);
x=rnorm(10, mean = 2, sd = 5)
LikeNormUnivar<-function(param,data){
mu=param[1];
sdev=param[2];
densityvector=dnorm(data, mean = mu, sd = sdev, log = FALSE)
like=prod(densityvector)
return(-like)
}
theta.start = c(2,4)
ans = optim(par=theta.start, fn=LikeNormUnivar, data=x,control=list(trace=TRUE),
method="BFGS")
ans$par
【问题讨论】:
标签: r normal-distribution optimization