R中的正稳定分布


9

正稳态分布由四个参数描述:偏度参数,比例参数,位置参数等称为索引参数。当为零时,分布在左右对称,当它为正(分别为负)时,分布偏向右侧(分别为向左)当减小时,稳定的分布允许出现胖尾巴。β∈[-1个,1个]σ>0μ∈(-∞,∞)α∈(0,2]βμα

当严格小于1并且时,分布的支持范围限制为。αβ=1个(μ,∞)

对于参数值的某些特定组合,密度函数仅具有闭合形式的表达式。当,,,和它是(参见式(4.4)这里):μ=0α<1个β=1个σ=α

F(ÿ)=-1个πÿ∑ķ=1个∞Γ(ķα+1个)ķ!(-ÿ-α)ķ罪⁡(αķπ)

它具有无限的均值和方差。

题

我想在R中使用该密度。

> alpha <- ...
> dstable(y, alpha=alpha, beta=1, gamma=alpha, delta=0, pm=1)

其中dstable功能自带的fBasics包。

您能确定这是计算R中密度的正确方法吗?

先感谢您!

编辑

我对此表示怀疑的原因之一是,在输出中,delta的值与输入中的值不同。例:

> library(fBasics)
> alpha <- 0.4
> dstable(4, alpha=alpha, beta=1, gamma=alpha, delta=0, pm=1)
[1] 0.02700602
attr(,"control")
   dist alpha beta gamma    delta pm
stable   0.4    1   0.4 0.290617  1

Answers:


6

简短的答案是您的很好,但是您的错误。为了获得R中公式给定的正稳定分布,需要设置 δγ

γ=|1个-一世棕褐色⁡(πα/2)|-1个/α。

我能找到的关于您给出的公式的最早示例是在(Feller,1971)中,但我只是发现了这本书的物理形式。但是(Hougaard,1986)给出了相同的公式,以及拉普拉斯变换 从手册中(使用),参数化来自(Samorodnitsky和Taqqu,1994),这是我无法在线阅读的另一资源。但是(Weron,2001)在Samorodnitsky和Taqqu的参数化中给出了为

大号(s)=Ë[经验值⁡(-sX)]=经验值⁡(-sα)。
stablediststabledistfBasicspm=1α≠1个
φ(Ť)=Ë[经验值⁡(一世ŤX)]=经验值⁡[一世δŤ-γα|Ť|α(1个-一世βs一世Gñ(Ť)棕褐色⁡πα2)]。
我已将Weron论文中的某些参数重命名为我们正在使用的表示法。他使用表示和表示。无论如何,插入和,我们得到 μδσγβ=1个δ=0
φ(Ť)=经验值⁡[-γα|Ť|α(1个-一世s一世Gñ(Ť)棕褐色⁡πα2)]。

注意表示,而。形式上,因此通过设置在我们得到 值得注意的一点是,与对应的也是,因此,如果您尝试使用或(1个-一世棕褐色⁡(πα/2))/|1个-一世棕褐色⁡(πα/2)|=经验值⁡(-一世πα/2)α∈(0,1个)一世α=经验值⁡(一世πα/2)大号(s)=φ(一世s)γ=|1个-一世棕褐色⁡(πα/2)|-1个/αφ(Ť)

φ(一世s)=经验值⁡(-sα)=大号(s)。
γα=1个/21个/2γ=αγ=1个-α,实际上这不是一个不好的近似值,您最终对于完全正确。α=1个/2

这是R中检查正确性的示例:

library(stabledist)

# Series representation of the density
PSf <- function(x, alpha, K) {
  k <- 1:K
  return(
    -1 / (pi * x) * sum(
      gamma(k * alpha + 1) / factorial(k) * 
        (-x ^ (-alpha)) ^ k * sin(alpha * k * pi)
    )
  )
}

# Derived expression for gamma
g <- function(a) {
  iu <- complex(real=0, imaginary=1)
  return(abs(1 - iu * tan(pi * a / 2)) ^ (-1 / a))
}

x=(1:100)/100
plot(0, xlim=c(0, 1), ylim=c(0, 2), pch='', 
     xlab='x', ylab='f(x)', main="Density Comparison")
legend('topright', legend=c('Series', 'gamma=g(alpha)'),
       lty=c(1, 2), col=c('gray', 'black'),
       lwd=c(5, 2))
text(x=c(0.1, 0.25, 0.7), y=c(1.4, 1.1, 0.7), 
     labels=c(expression(paste(alpha, " = 0.4")),
              expression(paste(alpha, " = 0.5")),
              expression(paste(alpha, " = 0.6"))))

for(a in seq(0.4, 0.6, by=0.1)) {
  y <- vapply(x, PSf, FUN.VALUE=1, alpha=a, K=100)
  lines(x, y, col="gray", lwd=5, lty=1)
  lines(x, dstable(x, alpha=a, beta=1, gamma=g(a), delta=0, pm=1), 
        col="black", lwd=2, lty=2)
}

绘图输出

  1. 费勒W.(1971)。简介概率论及其应用,2,第2版。纽约:威利。
  2. Hougaard,P。(1986)。生存模型对不同的人群从稳定分布派生,Biometrika 73,387-396。
  3. Samorodnitsky,G.,Taqqu,MS(1994)。稳定的非高斯随机过程,查普曼和霍尔,纽约,1994年。
  4. 韦伦河(2001)。重新征税稳定分布:尾指数> 2不排除征税稳定制度,国际现代物理学杂志C,2001,12(2),209-223。

1
我的荣幸。积极稳定的参数化这个话题在今年早些时候给我造成了很多麻烦(这确实是一团糟),所以我要发表我的想法。这种特殊形式在生存分析中很有用,因为当在正稳定分布之后出现脆弱项时,拉普拉斯形式允许在比例风险模型中条件和边际回归参数之间建立简单的关系(请参阅Hougaard的论文)。
— P Schnell 2014年

6

我认为正在发生的是,在输出中delta可能正在报告内部位置值,而在输入中delta正在描述偏移。[ gammawhen 似乎存在类似的问题pm=2。]因此,如果您尝试将偏移增加到2

> dstable(4, alpha=0.4, beta=1, gamma=0.4, delta=2, pm=1)
[1] 0.06569375
attr(,"control")
   dist alpha beta gamma    delta pm
 stable   0.4    1   0.4 2.290617  1

然后将位置值加2。

使用beta=1和时,pm=1您有一个正随机变量,其分布下限为0。

> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=0, pm=1))
[1] 0.002666507

移位2,下限上升相同的量

> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=2, pm=1))
[1] 2.003286

但是,如果您希望delta输入是内部位置值而不是shift或下限,则需要对参数使用不同的规范。例如,如果您尝试以下操作(使用pm=3and try delta=0和delta=0.290617之前找到的对象),您似乎会得到相同delta的结果。使用pm=3和,delta=0.290617您得到的密度为0.02700602,即先前发现的密度,并且下限为0。使用pm=3和,delta=0您得到的负下限(实际上是-0.290617)。

> dstable(4, alpha=0.4, beta=1, gamma=0.4, delta=0, pm=3)
[1] 0.02464434
attr(,"control")
   dist alpha beta gamma delta pm
 stable   0.4    1   0.4     0  3
> dstable(4, alpha=0.4, beta=1, gamma=0.4, delta=0.290617, pm=3)
[1] 0.02700602
attr(,"control")
   dist alpha beta gamma    delta pm
 stable   0.4    1   0.4 0.290617  3
> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=0, pm=3))
[1] -0.2876658
> min(rstable(100000, alpha=0.4, beta=1, gamma=0.4, delta=0.290617, pm=3))
[1] 0.004303485

您可能会发现,简单地delta在输出中忽略就更容易了,只要您继续beta=1使用输入中的pm=1均值delta就是分布下界,您似乎希望为0。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.