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

2 番目と 3 番目のパラメーターに大きな違いがあるのはなぜですか?

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 に答える