Processing math: 100%

9 votos

El positivo de la distribución estable en R

Positiva estable distribuciones son descritos por cuatro parámetros: el parámetro de asimetría β[1,1], el parámetro de escala de σ>0, el parámetro de localización μ(,), y el llamado índice de parámetro de α(0,2]. Al β cero, la distribución es simétrica alrededor de μ, cuando es positiva (resp. negativo) la distribución es sesgada a la derecha (resp. a la izquierda). Estable distribuciones permiten colas de grasa al α disminuye.

Al α es estrictamente menor que uno y β=1 el apoyo de la distribución se restringe a (μ,).

La función de densidad sólo tiene una forma cerrada de la expresión de determinadas combinaciones de valores de los parámetros. Cuando μ=0, α<1, β=1, y σ=α es (véase la fórmula (4.4) aquí):

f(y)=1πyk=1Γ(kα+1)k!(yα)ksin(αkπ)

Se ha infinito media y la varianza.

Pregunta

Me gustaría utilizar esa densidad en R. yo uso

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

donde el dstable función viene con el fBasics paquete.

Puede usted confirmar que esta es la manera correcta de calcular la densidad en R?

Gracias de antemano!

EDITAR

Una razón por la que soy sospechoso es que, en la salida, el valor de delta es diferente a la de la entrada. Ejemplo:

> 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

8voto

P Schnell Puntos 1308

La respuesta corta es que su δ está bien, pero su γ es malo. Con el fin de obtener el positivo estable de la distribución dada por la fórmula en R, es necesario establecer γ=|1itan(πα/2)|1/α.

El ejemplo más temprano que pude encontrar de la fórmula que les dio fue que en (Feller, 1971), pero sólo he encontrado ese libro en forma física. Sin embargo (Hougaard, 1986) da la misma fórmula, junto con la transformada de Laplace L(s)=E[exp(sX)]=exp(sα). De la stabledist manual (stabledist se utiliza en fBasics), el pm=1 parametrización es de (Samorodnitsky y Taqqu, 1994), otro recurso cuya reproducción ha eludido a mí. Sin embargo (Weron, 2001) da la función característica en Samorodnitsky y Taqqu la parametrización para α1 φ(t)=E[exp(itX)]=exp[δtγα|t|α(1iβsigno(t)\bronceadoπα2)]. He cambiado el nombre de algunos parámetros de Weron documento que coinside con la notación que estamos usando. Él usa μδσγ. En cualquier caso, conectar β=1δ=0, obtenemos φ(t)=exp[γα|t|α(1isigno(t)tanπα2)].

Note that (1itan(πα/2))/|1itan(πα/2)|=exp(iπα/2) for α\en(0,1) and that iα=exp(iπα/2). Formally, L(s)=φ(es), so by setting γ=|1itan(πα/2)|1/α in φ(t) obtenemos φ(es)=exp(sα)=L(s). Un punto interesante a tener en cuenta es que el γ que corresponde a α=1/21/2, por lo que si usted fuera a tratar γ=α o γ=1α, que en realidad no es una mala aproximación, se termina exactamente correcta para α=1/2.

He aquí un ejemplo en R para comprobar la corrección:

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)
}

Plot output

  1. Feller, W. (1971). Una Introducción a la Teoría de la Probabilidad y Sus Aplicaciones, 2, 2ª ed. Nueva York: Wiley.
  2. Hougaard, P. (1986). La supervivencia de los Modelos para Poblaciones Heterogéneas Derivadas de Distribuciones Estables, Biometrika 73, 387-396.
  3. Samorodnitsky, G., Taqqu, M. S. (1994). Estable No Aleatoria Gaussiana Procesos, Chapman & Hall, Nueva York, 1994.
  4. Weron, R. (2001). Levy-estable distribuciones revisited: cola índice > 2 no excluye la de Levy-régimen estable, Revista Internacional de la Física Moderna C, 2001, 12(2), 209-223.

7voto

Alan Puntos 7273

Lo que creo que sucede es que en la salida delta puede ser de informes de una ubicación interna de valor, mientras que en la entrada delta está describiendo el cambio. [No parece ser un problema similar con gamma cuando pm=2.] Así que si usted pruebe a aumentar el cambio para 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

luego agregar 2 para el valor de ubicación.

Con beta=1 y pm=1 positivo variable aleatoria con una distribución límite inferior en 0.

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

Cambio por 2 y el límite inferior se eleva por la misma cantidad

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

Pero si desea que el delta de entrada a la ubicación interna de valor en lugar de la tecla de mayúsculas o límite inferior, entonces usted necesita para utilizar una especificación diferente de los parámetros. Por ejemplo, si intenta lo siguiente (con pm=3 y tratando delta=0 y delta=0.290617 se encuentra anteriores), parecen tener el mismo delta dentro y fuera. Con pm=3 y delta=0.290617 de obtener la misma densidad de 0.02700602 has encontrado antes y un límite inferior en 0. Con pm=3 y delta=0 de obtener una negativa límite inferior (de hecho -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

Usted puede encontrar que es más fácil simplemente ignorar delta en la salida, y siempre y cuando usted mantenga beta=1 , a continuación, utilizando pm=1 medio delta en la entrada es la distribución límite inferior, que parece que quiere ser 0.

7voto

Jay Puntos 395

También de la nota: Martin Maechler sólo refactorizar el código para el estable distribuido y añadido algunas mejoras.

Su nuevo paquete de stabledist será utilizado por fBasics, así que es posible que desee darle una mirada así.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X