Ich arbeite an einem Algorithmus, der auf der Tatsache beruht, dass Beobachtungen s normal verteilt sind, und ich möchte die Robustheit des Algorithmus anhand dieser Annahme empirisch testen.
Dazu suchte ich nach einer Folge von Transformationen , die die Normalität von Y zunehmend stören würden . Zum Beispiel , wenn die Y s normal sind sie Schiefe = 0 und Kurtosis = 3 , und es wäre schön, eine Folge der Transformation zu finden , dass progressiv sowohl zu erhöhen.
Meine Idee war, einige normalverteilte Daten zu simulieren und den Algorithmus darauf zu testen. Als Testalgorithmus für jeden transformierten Datensatz T 1 ( Y ) , … , T n ( y ) , um zu sehen, wie stark sich die Ausgabe ändert.
Beachten Sie, dass ich die Verteilung der simulierten nicht steuere und sie daher nicht mit einer Verteilung simulieren kann, die die Normalverteilung verallgemeinert (wie z. B. die schief verallgemeinerte Fehlerverteilung).
quelle
Antworten:
Dies kann mit der Sinh-Arcsinh-Transformation von erfolgen
Die Transformation ist definiert als
wo und δ ∈ R + . Wenn diese Transformation auf die normale CDF S ( x ; ϵ , δ ) = Φ [ H ( x ; ϵ , δ ) ] angewendet wird , erzeugt sie eine unimodale Verteilung, deren Parameter ( ϵ , δ ) die Schiefe bzw. Kurtosis steuern (Jones) und Pewsey, 2009) im Sinne von van Zwet (1969) . Außerdem, wenn ϵ = 0 und δϵ ∈ R δ∈ R+ S( x ; ϵ , δ) = Φ [ H( x ; ϵ , δ) ] ( ϵ , δ) ϵ = 0 erhalten wir die ursprüngliche Normalverteilung. Siehe folgenden R-Code.δ= 1
Daher durch Auswahl einer geeigneten Folge von Parametern( ϵn, δn) eine Folge von Verteilungen / Transformationen mit unterschiedlichem Grad an Schiefe und Kurtosis erzeugen und diese so ähnlich oder unterschiedlich wie gewünscht zur Normalverteilung machen.
Das folgende Diagramm zeigt das vom R-Code erzeugte Ergebnis. Für (i) und δ = 1 und (ii) ϵ = 0 und δ = ( 0,5 , 0,75 , 1 , 1,25 , 1,5 ) .ϵ = ( - 2 , - 1 , 0 , 1 , 2 ) δ= 1 ϵ = 0 δ= ( 0,5 , 0,75 , 1 , 1,25 , 1,5 )
Die Simulation dieser Verteilung ist unkompliziert, da Sie nur ein normales Sample mit der Umkehrung von transformieren müssen .( ⋆ )
quelle
gamlss.dist::rSHASHo
, diese Verteilungen erzeugen zu können.Dies kann mit Lambert W x F Zufallsvariablen / -verteilungen erfolgen. Eine Lambert-WxF-Zufallsvariable (RV) ist ein nichtlinear transformiertes (RV) X mit der Verteilung F.
Für F ist die Normalverteilung undα = 1 reduzieren sie sich auf Tukeys h-Verteilung. Die nette Eigenschaft von Lambert W x F-Verteilungen ist, dass Sie auch wieder von nicht normal zu normal zurückkehren können; Sie können also Parameter und
Gaussianize()
Ihre Daten schätzen .Sie sind in der implementiert
Lambert W x F Transformationen gibt es in 3 Geschmacksrichtungen:
type = 's'
) mit dem Parameter skewnesstype = 'h'
) mit tail parametertype = 'hh'
) mit linkem / rechtem SchwanzparameterSiehe Referenzen auf schiefen und schweren Schwanz (e) (Disclaimer:. Ich bin der Autor)
In R können Sie mit dem LambertW- Paket mehrere Lambert W x F-Verteilungen simulieren, schätzen, zeichnen usw.
Ähnliches gilt für eine Sequenz vonγ Schiefe hinzufügen. Und wenn Sie Skewness und Heavy-Tails hinzufügen möchten, generieren Sie eine Sequenz vonδl und δr .
quelle
Eine solche Sequenz ist die Exponentiation in verschiedenen Graden. Z.B
Du könntest benutzenx1.1, x1.2… X2 Zwischenstufen der Transformation zu bekommen.
quelle
Gleiche Antwort wie @ user10525, jedoch in Python
[
quelle