0

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

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

4

1 回答 1

1

拨打的电话fitdistr相当于

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

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

于 2013-03-27T01:44:53.550 回答