稳定的分布对数似然和AIC值

时间:2014-10-16 20:10:55

标签: r parameters statistics distribution data-fitting

我已使用stableFit包中的fBasics函数为稳定分布提供参数(alpha,beta,gamma和delta),如下所示:

stableFit(x)

然后我做了以下操作来提出对数似然值,出于某种原因,它似乎不起作用:

stable.fit <- function(alpha=1.387,beta=0.279,
                       gamma=0.006948893,delta=-0.0017933) {
   -sum(dstable(x,1.387,0.279,0.006948893,-0.0017933,pm=0,log=TRUE))
}


mle.results<-mle2(stable.fit,
         start=list(alpha=1.387,beta=0.279,
                   gamma=0.006948893,delta=-0.0017933),
   data=list(x)) #max likelihood using bbmle package

mle.results #produces the log-likelihood values

似乎当我运行mle.results<- mle2(..行时,R会持续运行,直到我按下&#34; STOP&#34;按钮。因此,我无法要求&#34; mle.results&#34;。为什么会这样?这个过程似乎适用于Normal,logistic,Cauchy,Student t,skew Student t,Gumbell和广义极值分布。

请让我知道我错过了什么。谢谢!

2 个答案:

答案 0 :(得分:2)

我创建了一个基于Lambert和Lindsey的旧包 stable 的新包,但它并没有真正起作用。但是它使用特征函数的FFT并且在C中具有核心代码。我打磨它并在它周围写了一些包装器。所以密度和概率是基于那个,然后在我的包中,随机抽取和分位数来自 stabledist 包,因为它们的工作速度足够快。

因此它提供了更快的 fBasics :: stableFit 替代品,与它们相比精度损失最小,速度提高了约140倍。它可用here。我很快就会完成它。

与此同时:数据集

require(tawny)
data("sp500.subset")
rnorm<-rnorm(200)
rt<-rt(200,4)
cauch<-rcauchy(200)
testingData<-matrix(cbind(rnorm,rt,cauch,as.matrix(sp500.subset,nrow=200)),nrow=200)

这些是我的系数与 fBasics 的系数的差异。您可以看到,只有beta估计与 fBasics :: stableFit 之间存在很大差异(beta介于 - 1和1)但它确实没有很大的影响。我也会尝试挖掘一些文献。

coefficients

这是具有16个最大β差异的系列的密度。蓝色是我的密度使用和红色是 stabledist :: dstable 密度,fBasics用于MLE优化。圆圈基于fBasics优化的系数,而十字架是我的。

densities

我也在depository中包含了测试脚本。 最后但并非最不重要的是速度比较:

enter image description here

答案 1 :(得分:1)

看起来我能够回答我自己的问题。问题是R花费了很长时间来完成mle2计算以及dstable函数的集成。对于其他发行版,对数似然结果花费不到10秒,但由于某种原因,它花了超过45分钟!为了稳定的分配。我决定让它在我做其他事情的时候让它运行并且在45-50分钟之后,我才知道这一点,它结束了。但是,我无法弄清楚为什么稳定分布需要特别长的时间来进行这种计算。无论如何,问题解决了。