为什么这么大的差异?

时间:2013-03-26 16:15:48

标签: r optimization

我想知道为什么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

为什么第二个和第三个参数有这么大差异?

1 个答案:

答案 0 :(得分:1)

fitdistr发出的电话相当于

optim(c(median(x), IQR(x)/2, 10), logfunction, method="BFGS")

它为您提供了不同的答案,因为您从不同的点开始并使用不同的算法(您的呼叫使用Nelder-Mead,optim的默认值。)