La distribuzione stabile positiva in R


9

Le distribuzioni stabili positive sono descritte da quattro parametri: il parametro skewness , il parametro scale , il parametro location e così via -called index parametro . Quando è zero la distribuzione è simmetrica intorno a , quando è positiva (rispettivamente negativa) la distribuzione è inclinata a destra (rispetto a sinistra) Le distribuzioni stabili consentono code grasse quando diminuisce.β[1,1]σ>0μ(,)α(0,2]βμα

Quando è strettamente inferiore a uno e il supporto della distribuzione si limita a .αβ=1(μ,)

La funzione di densità ha solo un'espressione a forma chiusa per alcune particolari combinazioni di valori per i parametri. Quando , , e è (vedere la formula (4.4) qui ):μ=0α<1β=1σ=α

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

Ha media e varianza infinite.

Domanda

Vorrei usare quella densità in R. Io uso

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

dove la funzione dstable viene fornita con il pacchetto fBasics.

Puoi confermare che questo è il modo giusto per calcolare quella densità in R?

Grazie in anticipo!

MODIFICARE

Uno dei motivi per cui sono sospettoso è che, nell'output, il valore di delta è diverso da quello nell'input. Esempio:

> 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

Risposte:


6

La risposta breve è che il tuo va bene, ma il tuo è sbagliato. Per ottenere la distribuzione stabile positiva data dalla tua formula in R, devi impostare δγ

γ=|1itan(πα/2)|1/α.

Il primo esempio che ho trovato della formula che hai dato è stato in (Feller, 1971), ma ho trovato quel libro solo in forma fisica. Tuttavia (Hougaard, 1986) fornisce la stessa formula, insieme alla trasformazione di Laplace Dal manuale ( usato in ), la parametrizzazione è di (Samorodnitsky e Taqqu, 1994), un'altra risorsa la cui riproduzione online mi ha eluso. Tuttavia (Weron, 2001) fornisce la funzione caratteristica nella parametrizzazione di Samorodnitsky e Taqqu affinché sia

L(s)=E[exp(sX)]=exp(sα).
stablediststabledistfBasicspm=1α1
φ(t)=E[exp(itX)]=exp[iδtγα|t|α(1iβsign(t)tanπα2)].
Ho rinominato alcuni parametri dalla carta di Weron al lato della moneta con la notazione che stiamo usando. Usa per e per . In ogni caso, inserendo e , otteniamo μδσγβ=1δ=0
φ(t)=exp[γα|t|α(1isign(t)tanπα2)].

Si noti che per e che . Formalmente, , quindi impostando in otteniamo Un punto interessante da notare è che la che corrisponde a è anche , quindi se dovessi provare o(1itan(πα/2))/|1itan(πα/2)|=exp(iπα/2)α(0,1)iα=exp(iπα/2)L(s)=φ(is)γ=|1itan(πα/2)|1/αφ(t)

φ(is)=exp(sα)=L(s).
γα=1/21/2γ=αγ=1α, che in realtà non è una cattiva approssimazione, finisci esattamente per .α=1/2

Ecco un esempio in R per verificare la correttezza:

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

Stampa traccia

  1. Feller, W. (1971). Introduzione alla teoria della probabilità e alle sue applicazioni , 2 , 2a ed. New York: Wiley.
  2. Hougaard, P. (1986). Modelli di sopravvivenza per popolazioni eterogenee derivate da distribuzioni stabili , Biometrika 73 , 387-396.
  3. Samorodnitsky, G., Taqqu, MS (1994). Processi casuali non gaussiani stabili , Chapman & Hall, New York, 1994.
  4. Weron, R. (2001). Distribuzioni stabili al Levy rivisitate: indice di coda> 2 non esclude il regime Levy-stabile , International Journal of Modern Physics C, 2001, 12 (2), 209-223.

1
Il piacere è tutto mio. L'argomento delle parametrizzazioni stabili positive mi ha causato un sacco di mal di testa all'inizio di quest'anno (è davvero un casino), quindi sto postando quello che mi è venuto in mente. Questa particolare forma è utile nell'analisi di sopravvivenza perché la forma del Laplaciano consente una semplice relazione tra i parametri di regressione condizionale e marginale nei modelli di rischi proporzionali quando c'è un termine fragile che segue una distribuzione stabile positiva (vedi il documento di Hougaard).
P Schnell,

6

Quello che penso stia accadendo è che nell'output deltapotrebbe essere riportato un valore di posizione interno, mentre nell'input deltasta descrivendo lo spostamento. [Sembra esserci un problema simile con gammaquando pm=2.] Quindi se provi ad aumentare il passaggio a 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

quindi aggiungi 2 al valore della posizione.

Con beta=1e pm=1hai una variabile casuale positiva con un limite inferiore di distribuzione a 0.

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

Sposta di 2 e il limite inferiore aumenta della stessa quantità

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

Ma se si desidera che l' deltainput sia il valore della posizione interna anziché lo spostamento o il limite inferiore, è necessario utilizzare una specifica diversa per i parametri. Ad esempio, se provi quanto segue (con pm=3e try delta=0e quello che delta=0.290617hai trovato in precedenza), sembra che tu abbia lo stesso deltadentro e fuori. Con pm=3e delta=0.290617ottieni la stessa densità di 0,02700602 che hai trovato in precedenza e un limite inferiore a 0. Con pm=3e delta=0ottieni un limite inferiore negativo (in effetti -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

Potresti trovare più semplice semplicemente ignorare deltanell'output, e finché continui a beta=1usare i pm=1mezzi deltanell'input è il limite inferiore di distribuzione, che sembra tu voglia essere 0.


4

Nota anche: Martin Maechler ha appena modificato il codice per la distribuzione stabile e ha aggiunto alcuni miglioramenti.

Il suo nuovo pacchetto stabledist verrà utilizzato anche da fBasics, quindi potresti dare un'occhiata anche a questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.