我想知道为什么fitdistr和手动优化之间存在很大差异?
我的代码:
data<-c(1:1000)
fitdistr(data, "t")
logfunction <-function(par){
if(par[2]>0 & par[3]>0) return(-sum(log(dt((data-par[1])/par[2],df=par[3])/par[2])))
else return(Inf)
}
optim(c(0,0.1,2.5),logfunction)
fitdistr的输出:
m s df
500.500000 288.355653 366.450581
( 9.143496) ( 6.468072) (285.589770)
opitm的输出:
[1] 499.5142 292.9602 304.5050
为什么第二个和第三个参数有这么大差异?
答案 0 :(得分:1)
fitdistr
发出的电话相当于
optim(c(median(x), IQR(x)/2, 10), logfunction, method="BFGS")
它为您提供了不同的答案,因为您从不同的点开始并使用不同的算法(您的呼叫使用Nelder-Mead,optim
的默认值。)