Die positive stabile Verteilung in R.

9

Positive stabile Verteilungen werden durch vier Parameter beschrieben: den Skewness-Parameter , den Skalenparameter σ > 0 , den Ortsparameter μ ( - , ) und den sogenannten Indexparameter . Wenn Null ist, ist die Verteilung um symmetrisch , wenn es positiv (bzw. negativ) ist, ist die Verteilung nach rechts (bzw. nach links) verzerrt. Stabile Verteilungen ermöglichen Fett Schwänze, wenn abnimmt.β[1,1]σ>0μ(,)α(0,2]βμα

Wenn streng kleiner als eins ist und die Unterstützung der Verteilung auf .αβ=1(μ,)

Die Dichtefunktion hat nur einen Ausdruck in geschlossener Form für einige bestimmte Kombinationen von Werten für die Parameter. Wenn , , und , ist dies (siehe Formel (4.4) hier ):μ=0α<1β=1σ=α

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

Es hat unendlichen Mittelwert und Varianz.

Frage

Ich möchte diese Dichte in R verwenden. Ich verwende

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

wo die dstable Funktion kommt mit dem fBasics Paket.

Können Sie bestätigen, dass dies der richtige Weg ist, um diese Dichte in R zu berechnen?

Vielen Dank im Voraus!

BEARBEITEN

Ein Grund, warum ich misstrauisch bin, ist, dass sich der Wert von Delta in der Ausgabe von dem in der Eingabe unterscheidet. Beispiel:

> 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
ocram
quelle

Antworten:

6

Die kurze Antwort ist, dass Ihr in Ordnung ist, aber Ihr γ falsch ist. Um die positive stabile Verteilung zu erhalten, die durch Ihre Formel in R gegeben ist, müssen Sie γ = | setzen 1 - i tan ( π α / 2 ) | - 1 / α .δγ

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

Das früheste Beispiel, das ich für die von Ihnen angegebene Formel finden konnte, war in (Feller, 1971), aber ich habe dieses Buch nur in physischer Form gefunden. (Hougaard, 1986) gibt jedoch dieselbe Formel zusammen mit der Laplace-Transformation Aus dem Handbuch ( wird in verwendet ), die

L(s)=E[exp(sX)]=exp(sα).
stablediststabledistfBasicspm=1Die Parametrisierung stammt von (Samorodnitsky und Taqqu, 1994), einer anderen Ressource, deren Online-Reproduktion mir entgangen ist. (Weron, 2001) gibt jedoch die charakteristische Funktion in Samorodnitsky und Taqqus Parametrisierung für als φ ( t ) = E [ exp ( i t X ) ] = exp [ i δ t - γ α | an t | α ( 1 - i β s i g n ( t )α1 Ich habe einige Parameter von Werons Papier in Coinside mit der von uns verwendeten Notation umbenannt. Er benutztμfürδundσfürγ. In jedem Fall erhaltenwir durch Einstecken vonβ=1undδ=0φ(t)=exp[-γα| t| α(1-isign(t)tanπα
φ(t)=E[exp(itX)]=exp[iδtγα|t|α(1iβsign(t)tanπα2)].
μδσγβ=1δ=0
φ(t)=exp[γα|t|α(1isign(t)tanπα2)].

(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αα=1/2

Hier ist ein Beispiel in R, um die Richtigkeit zu überprüfen:

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

Plotausgabe

  1. Feller, W. (1971). Eine Einführung in die Wahrscheinlichkeitstheorie und ihre Anwendungen , 2 , 2. Aufl. New York: Wiley.
  2. Hougaard, P. (1986). Überlebensmodelle für heterogene Populationen, abgeleitet aus stabilen Verteilungen , Biometrika 73 , 387-396.
  3. Samorodnitsky, G., Taqqu, MS (1994). Stabile nicht-Gaußsche Zufallsprozesse , Chapman & Hall, New York, 1994.
  4. Weron, R. (2001). Überarbeitete abgabenstabile Verteilungen: Der Endindex> 2 schließt das abgabenstabile Regime nicht aus , International Journal of Modern Physics C, 2001, 12 (2), 209-223.
P Schnell
quelle
1
Gern geschehen. Das Thema der positiven stabilen Parametrisierung hat mir Anfang dieses Jahres viel Kopfzerbrechen bereitet (es ist wirklich ein Chaos), also poste ich, was ich mir ausgedacht habe. Diese spezielle Form ist in der Überlebensanalyse nützlich, da die Form des Laplace eine einfache Beziehung zwischen bedingten und marginalen Regressionsparametern in proportionalen Gefährdungsmodellen ermöglicht, wenn nach einer positiven stabilen Verteilung ein Gebrechlichkeitsterm vorliegt (siehe Hougaards Artikel).
P Schnell
6

Was meiner Meinung nach passiert, ist, dass in der Ausgabe deltamöglicherweise ein interner Standortwert gemeldet wird, während in der Eingabe deltadie Verschiebung beschrieben wird. [Es scheint ein ähnliches Problem mit gammawann zu geben pm=2.] Wenn Sie also versuchen, die Verschiebung auf 2 zu erhöhen

> 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

Dann addieren Sie 2 zum Standortwert.

Mit beta=1und haben pm=1Sie eine positive Zufallsvariable mit einer Verteilungsuntergrenze bei 0.

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

Verschiebung um 2 und die Untergrenze steigt um den gleichen Betrag

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

Wenn Sie jedoch möchten, dass die deltaEingabe der interne Standortwert und nicht die Verschiebung oder Untergrenze ist, müssen Sie eine andere Spezifikation für die Parameter verwenden. Wenn Sie beispielsweise Folgendes versuchen (mit pm=3und versuchen delta=0und das, was delta=0.290617Sie zuvor gefunden haben), scheinen Sie dasselbe deltarein und raus zu bekommen . Mit pm=3und erhalten delta=0.290617Sie die gleiche Dichte von 0,02700602, die Sie zuvor gefunden haben, und eine Untergrenze bei 0. Mit pm=3und erhalten delta=0Sie eine negative Untergrenze (tatsächlich -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

Sie können es einfacher , einfach zu ignorieren , deltain den Ausgang, und so lange , wie Sie halten beta=1dann mit pm=1Hilfe deltader Eingabe ist die Verteilung untere Grenze, die es Ihnen 0 sein wollen scheint.

Henry
quelle
4

Ebenfalls zu beachten: Martin Maechler hat gerade den Code für den verteilten Stall überarbeitet und einige Verbesserungen hinzugefügt.

Sein neues Paket stabledist wird auch von fBasics verwendet, daher möchten Sie vielleicht auch einen Blick darauf werfen.

Dirk Eddelbuettel
quelle