Krótka odpowiedź brzmi: jest w porządku, ale nie jest poprawna. Aby uzyskać dodatni rozkład stabilny podany przez twoją formułę w R, musisz ustawić
δγ
γ=|1−itan(πα/2)|−1/α.
Najwcześniejszy przykład, jaki mogłem znaleźć podaną przez ciebie formułę, to (Feller, 1971), ale znalazłem tę książkę tylko w formie fizycznej. Jednak (Hougaard, 1986) podaje tę samą formułę wraz z transformacją Laplace'a
Z podręcznika ( jest używany w ), parametryzacja pochodzi z (Samorodnitsky i Taqqu, 1994), innego zasobu, którego odtworzenie online mi umknęło. Jednak (Weron, 2001) daje charakterystyczną cechę Samorodnitsky and Taqqu za parametryzację za
L(s)=E[exp(−sX)]=exp(−sα).
stabledist
stabledist
fBasics
pm=1
α≠1φ(t)=E[exp(itX)]=exp[iδt−γα|t|α(1−iβsign(t)tanπα2)].
Zmieniłem nazwy niektórych parametrów z papieru Werona na monety przy użyciu notacji, której używamy. Używa dla i dla . W każdym razie, podłączając i , otrzymujemy
μδσγβ=1δ=0φ(t)=exp[−γα|t|α(1−isign(t)tanπα2)].
Zauważ, że dla i że . Formalnie , więc ustawiając w otrzymujemy
Warto zwrócić uwagę na to, że które odpowiada , również wynosi , więc jeśli spróbujesz lub(1−itan(πα/2))/|1−itan(πα/2)|=exp(−iπα/2)α∈(0,1)iα=exp(iπα/2)L(s)=φ(is)γ=|1−itan(πα/2)|−1/αφ(t)
φ(is)=exp(−sα)=L(s).
γα=1/21/2γ=αγ=1−α, co w rzeczywistości nie jest złym przybliżeniem, kończysz dokładnie na .
α=1/2
Oto przykład w R, aby sprawdzić poprawność:
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). Wprowadzenie do teorii prawdopodobieństwa i jej zastosowania , 2 , 2 wyd. Nowy Jork: Wiley.
- Hougaard, P. (1986). Modele przeżycia dla heterogenicznych populacji pochodzących ze stabilnych rozkładów , Biometrika 73 , 387-396.
- Samorodnitsky, G., Taqqu, MS (1994). Stable Non-Gaussian Random Process , Chapman & Hall, New York, 1994.
- Weron, R. (2001). Sprawdzone rozkłady stabilne podatkowo: indeks ogona> 2 nie wyklucza systemu stabilnego podatkowo , International Journal of Modern Physics C, 2001, 12 (2), 209-223.
Myślę, że dzieje się tak, że w danych wyjściowych
delta
może być zgłaszana wartość wewnętrznej lokalizacji, podczas gdy w danych wejściowychdelta
jest opisana zmiana. [Wydaje się, że jest podobny problem zgamma
kiedypm=2
.] Więc jeśli spróbujesz zwiększyć przesunięcie do 2następnie dodajesz 2 do wartości lokalizacji.
Z
beta=1
ipm=1
masz dodatnią zmienną losową z dolną granicą rozkładu na poziomie 0.Przesuń o 2, a dolna granica wzrośnie o tę samą wartość
Ale jeśli chcesz, aby dane
delta
wejściowe były wewnętrzną wartością położenia, a nie przesunięciem lub dolną granicą, musisz użyć innej specyfikacji parametrów. Na przykład, jeśli spróbujesz wykonać następujące czynności (za pomocąpm=3
i próbujeszdelta=0
idelta=0.290617
znalazłeś wcześniej), wydaje się, że dostajesz to samodelta
. Zpm=3
idelta=0.290617
otrzymujesz taką samą gęstość 0,02700602, którą znalazłeś wcześniej, a dolną granicę na 0. Zpm=3
idelta=0
otrzymujesz ujemną dolną granicę (w rzeczywistości -0,290617).Łatwiej może być po prostu zignorować
delta
dane wyjściowe i tak długo, jak długo będzieszbeta=1
używaćpm=1
środkówdelta
wejściowych, dolna granica rozkładu, która wydaje się mieć wartość 0.źródło
Warto również zauważyć: Martin Maechler właśnie dokonał zmiany kodu stabilnej dystrybucji i dodał kilka ulepszeń.
Jego nowy pakiet stabledist będzie również używany przez fBasics, więc możesz też chcieć to sprawdzić.
źródło