我想用 optim 获得更精确的值。
考虑以下变量:
test<-c(1,2,1,2,3,2,1,2,0.5,0.4,-0.1)
现在,我想拟合一个正常密度,$\mu$ 和 $\sigma$ 的估计值是:
mean(test)
[1] 1.345455
sd(test)
[1] 0.9223488
或者我可以使用
library(MASS)
fitdistr(test,"normal")
我得到
mean sd
1.3454545 0.8794251
(0.2651566) (0.1874941)
哪个不完全一样,为什么?现在我想用 optim 手动执行此操作:
loglikenorm<-function(theta){
return (-sum(log(dnorm(test,mean=theta[1],sd=theta[2])))
}
optim(c(0,0.01),loglikenorm)
我得到
$par
[1] 1.3451582 0.8798248
这不准确。我想让它更准确,我该怎么做?
我有一个案例,其中 fitdistr 和 optim 在与此处相同的设置(使用正常分配)导致估计略有不同,那么我怎样才能更精确地进行 optim 呢?