我想知道,为什么 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
为什么第二个参数和第三个参数差别这么大?