Ich möchte 450 Datenpunkte in R erzeugen. Es gibt drei verschiedene Sätze von jeweils 150, die in einem kreisförmigen Band mit unterschiedlichen Radien (bei 1, 2,8 und 5) verteilt sind.
Insbesondere möchte ich die erste Grafik auf Seite 546 der Elemente des statistischen Lernens reproduzieren.
Ich wäre sehr dankbar für die Unterstützung im R-Code, der diese Daten generieren könnte.
Vielen Dank!
Antworten:
Im Fall eines Kreises reicht es aus, einen gleichmäßigen Winkel auf zu erzeugen und dann den Radius bestimmen, was auch immer gewünscht wird. Wenn Sie kartesische statt polare Koordinaten möchten, ist und .θ [ 0 , 2 π) r x = r cosθ y= r sinθ
Eine wirklich einfache Möglichkeit, zufällige Punkte aus einer gleichmäßigen Verteilung einer d-Kugel (einer Hypersphäre in einem Raum beliebiger Dimension mit Oberfläche der Dimension ) zu erzeugen, besteht darin, multivariate Standardnormalen zu erzeugen und skalieren Sie dann nach ihrem Abstand vom Ursprung:d+ 1 d X.ich∼ N.d+ 1( 0 , ich)
woist die euklidische Norm .| | . | |
In R erzeugen wir auf der Oberfläche einer (2-) Kugel:
Hier sind diese Daten aus zwei leicht unterschiedlichen Blickwinkeln:
Sie können dann auf einen beliebigen anderen Radius skalieren.
In niedrigen Dimensionen gibt es schnellere Möglichkeiten, aber wenn Ihr normaler Zufallszahlengenerator relativ schnell ist, ist er in höheren Dimensionen ziemlich gut.
Auf CRAN gibt es mehrere Pakete für zirkuläre Statistiken, einschließlich
CircStats
undcircular
. Es gibt wahrscheinlich etwas auf CRAN, das gleichmäßige Verteilungen auf n-Kugeln für n> 1 erzeugt, aber ich weiß es nicht.quelle