通过MLE获得标准化T分布的自由度

时间:2016-05-18 20:17:43

标签: r excel finance mle fitdistrplus

首先,我事先感谢你们所有人阅读本文。

我试图在一系列数据上拟合标准化T-学生分布(即标准差= 1的T-学生);那就是:我想通过最大似然估计来估计自由度。

我需要实现的示例可以在我制作的以下(简单)Excel文件中找到: https://www.dropbox.com/s/6wv6egzurxh4zap/Excel%20Implementation%20Example.xlsx?dl=0

在Excel文件中,我有一个图像,其中包含与标准化T学生分布的对数似然函数的计算相对应的公式。该公式摘自财务书(金融风险管理要素 - 彼得克里斯托弗森)。

到目前为止,我已经尝试过R:

copula.data <- read.csv(file.choose(),header = TRUE)
z1 <- copula.data[,1]

library(fitdistrplus)


ft1 = fitdist(z1, "t", method = "mle", start = 10)
df1=ft1$estimate[1]

df1
logLik(ft1)

df1产生的数字:13.11855278779897

logLike(ft1)产生的数字为:-3600.2918050056487

但是,Excel文件产生的自由度为:8.2962365022727,对数似然性为:-3588.8879(这是正确答案)。

注意:我的代码读取的.csv文件如下: https://www.dropbox.com/s/nnh2jgq4fl6cm12/Data%20for%20T%20Copula.csv?dl=0

有什么想法吗?谢谢大家!

1 个答案:

答案 0 :(得分:2)

电子表格中的公式(nx代替df参数和数据)

  

= GAMMALN(第(n + 1)/ 2)-GAMMALN(N / 2)-LN(PI())/ 2-LN(N-2)/ 2-1 / 2 *(1 + N)× LN(1 + X ^ 2 /(N-2))

或指数,

  

伽玛((n + 1)/ 2)/(sqrt((n-2)pi)伽玛(n / 2))(1 + x ^ 2 /(n-2))^ - ((n + 1)/ 2)

?dt给出了

  

f(x)= Gamma((n + 1)/ 2)/(sqrt(n pi)Gamma(n / 2))(1 + x ^ 2 / n)^ - ((n + 1)/ 2)

因此,差异在于公式中两个位置的n-2值。我没有足够的背景来看看为什么作者以不同的方式定义t分布;可能有一些很好的理由......

直接查看负对数似然曲线,似乎fitdistrplus答案与直接计算一致。 (如果dt()函数中存在错误,那么非常令人惊讶,R的分布函数被广泛使用并经过全面测试。)

LL <- function(p,data=z1) {
    -sum(dt(data,df=p,log=TRUE))
}
pvec <- seq(6,20,by=0.05)
Lvec <- sapply(pvec,LL)
par(las=1,bty="l")
plot(pvec,Lvec,type="l",
     xlab="df parameter",ylab="negative log-likelihood")
## superimpose fitdistr results ...
abline(v=coef(ft1),lty=2)
abline(h=-logLik(ft1),lty=2)

除非您没有告诉我们有关问题定义的其他信息,否则在我看来R正在得到正确答案。 (你给出的数据的平均值和sd分别不等于0和1,但是它们很接近;居中和缩放给出了更大的参数值。)

enter image description here