我目前正在一个小组项目中,估计一系列回报的VaR和ES。任务之一是估计t分布的自由度。
我正在使用以下方法:
make_loglik <- function(x){ Vectorize( function(nu) sum(dt(x, df=nu, log=TRUE)) )}
t_nu_mle <- function(x) {
loglik <- make_loglik(x)
res <- optimize(loglik, interval=c(0.01, 2000), maximum=TRUE)$maximum
res
}
例如,哪个产量
set.seed(123)
t <- rt(20000,df=3)
t_nu_mle(t)
[1] 2.986434
但是,根据作业中给出的经验数据,我使用例如MASS软件包获得了DF的其他值:
library(MASS)
fitdistr(t, "t")
另外,我的其他小组成员在使用实际数据集时也会得到不同的结果。
我上面的功能有缺陷吗?这里可能是什么问题?