首先,我事先感谢你们所有人阅读本文。
我试图在一系列数据上拟合标准化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
有什么想法吗?谢谢大家!
答案 0 :(得分: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))
或指数,
伽玛((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,但是它们很接近;居中和缩放给出了更大的参数值。)