0

首先,我先感谢大家阅读本文。

我正在尝试在一系列数据上拟合标准化 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

有任何想法吗?谢谢大家!

4

1 回答 1

2

电子表格中的公式(用n,x代替 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))

或者,求幂,

Gamma((n+1)/2) / (sqrt((n-2) pi) Gamma(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 得到了正确的答案。(您提供的数据的平均值和标准差分别不完全等于 0 和 1,但它们很接近;居中和缩放为参数提供了更大的值。)

在此处输入图像描述

于 2016-05-18T21:48:50.410 回答