A resposta curta é que seu é bom, mas o seu é errado. Para obter a distribuição estável positiva dada pela sua fórmula em R, você precisa definir
γ γ = | 1 - i tan ( π α / 2 ) | - 1 / a .δγ
γ= | 1 - eu tan( πα / 2 ) |- 1 / α.
O exemplo mais antigo que pude encontrar da fórmula que você deu foi (Feller, 1971), mas só encontrei esse livro em forma física. Contudo (Hougaard, 1986) fornece a mesma fórmula, juntamente com a transformação de Laplace
No manual ( usado em ), a parametrização é de (Samorodnitsky e Taqqu, 1994), outro recurso cuja reprodução on-line me escapou. Entretanto (Weron, 2001) fornece a função característica na parametrização de Samorodnitsky e Taqqu para como
L (s)= E [ exp( - s X) ] = exp( - sα) .
stabledist
stabledist
fBasics
pm=1
ct ≠ 1φ ( t ) = E [ exp( I t X) ] = exp[ i δt - γα| t |α( 1 - i βs i g n (t)castanhoπα2) ] .
Renomeei alguns parâmetros do artigo de Weron para coincidir com a notação que estamos usando. Ele usa para e para . De qualquer forma, ao conectar e , obtemos
μδσγβ= 1δ= 0φ ( t ) = exp[ - γα| t |α( 1 - i s i g n ( t ) tanπα2) ] .
Observe que para e que . Formalmente, , portanto, definindo em obtemos
Um ponto interessante a ser observado é que que corresponde a também é , portanto, se você tentar ou( 1 - eu curti( πα / 2 ) ) / | 1 - eu tan( πα / 2 ) | = exp( - i πα / 2 )α ∈ ( 0 , 1 )Euα= exp( i πα / 2 )γ = | 1 - i tan ( π α / 2 ) | - 1 / α φ ( t ) φ ( i s ) = exp ( - s α ) = L ( s ) . γ ct = 1 / 2 1 / 2 γ = ct γ = 1 - ct ctL (s)=φ(is)γ= | 1 - eu tan( πα / 2 ) |- 1 / αφ ( t )
φ ( i s ) = exp( - sα) = L ( s ) .
γα = 1 / 21 / 2γ= αγ= 1 - α, que na verdade não é uma aproximação ruim, você acaba exatamente correto para .
α = 1 / 2
Aqui está um exemplo em R para verificar a correção:
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)
}
- Feller, W. (1971). Uma Introdução à Teoria da Probabilidade e Suas Aplicações , 2 , 2ª ed. Nova York: Wiley.
- Hougaard, P. (1986). Modelos de sobrevivência para populações heterogêneas derivadas de distribuições estáveis , Biometrika 73 , 387-396.
- Samorodnitsky, G., Taqqu, MS (1994). Processos aleatórios não gaussianos estáveis , Chapman & Hall, Nova York, 1994.
- Weron, R. (2001). Distribuições de Levy-estável revisitadas: índice de cauda> 2 não exclui o regime de Levy-estável , International Journal of Modern Physics C, 2001, 12 (2), 209-223.
O que eu acho que está acontecendo é que na saída
delta
pode estar relatando um valor interno de localização, enquanto na entradadelta
está descrevendo a mudança. [Parece haver um problema semelhante comgamma
quandopm=2
.] Portanto, se você tentar aumentar o turno para 2então você adiciona 2 ao valor do local.
Com
beta=1
epm=1
você tem uma variável aleatória positiva com um limite inferior de distribuição em 0.Alterne 2 e o limite inferior aumenta na mesma quantidade
Mas se você deseja que a
delta
entrada seja o valor do local interno em vez do deslocamento ou limite inferior, será necessário usar uma especificação diferente para os parâmetros. Por exemplo, se você tentar o seguinte (compm=3
e tentandodelta=0
e odelta=0.290617
que encontrou anteriormente), parece que entradelta
e sai da mesma forma . Compm=3
edelta=0.290617
você obtém a mesma densidade de 0,02700602 encontrada anteriormente e um limite inferior em 0. Compm=3
edelta=0
você obtém um limite inferior negativo (de fato -0,290617).Você pode achar mais fácil simplesmente ignorar
delta
a saída e, contanto que continuebeta=1
usando ospm=1
meiosdelta
na entrada, é o limite inferior da distribuição, que parece que você deseja 0.fonte
Também digno de nota: Martin Maechler apenas refatorou o código para o stable distribuído e adicionou algumas melhorias.
Seu novo pacote stabledist também será usado pelo fBasics, então você pode dar uma olhada também.
fonte