1

我目前正在开展一个小组项目,估计一系列回报的 VaR 和 ES。其中一项任务是估计分布的自由度。

我正在使用以下方法:

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")

此外,我的其他小组成员在使用实际数据集时也获得了不同的结果。

我上面的功能有缺陷吗?这里可能是什么问题?

4

0 回答 0