Frage

Das Kurvenanpassungsproblem für 2D-Daten ist bekannt (LOWESS usw.), aber wie passe ich bei einer Reihe von 3D-Datenpunkten eine 3D-Kurve an (z. B.ein Glättungs-/Regressionsspline) zu diesen Daten?

MEHR:Ich versuche, eine Kurve zu finden, die die von den Vektoren X, Y, Z bereitgestellten Daten anpasst, für die keine bekannte Beziehung besteht.Im Wesentlichen habe ich eine 3D-Punktwolke und muss eine 3D-Trendlinie finden.

MEHR:Ich entschuldige mich für die Unklarheit.Ich habe mehrere Ansätze ausprobiert (ich habe immer noch nicht versucht, die lineare Anpassung zu ändern) und ein zufälliges NN scheint am besten zu funktionieren.Das heißt, ich wähle zufällig einen Punkt aus der Punktwolke aus, finde den Schwerpunkt seiner Nachbarn (innerhalb einer beliebigen Kugel) und iteriere.Es erweist sich als schwierig, die Schwerpunkte zu einem glatten Spline zu verbinden, aber die erhaltenen Schwerpunkte sind passabel.

Um das Problem zu verdeutlichen, handelt es sich bei den Daten nicht um eine Zeitreihe und ich suche nach einem glatten Spline, der die Punktwolke am besten beschreibt. Wenn ich also diesen 3D-Spline auf eine Ebene projizieren würde, die aus zwei beliebigen Variablen besteht, wäre der projizierte Spline ( auf 2D) ergibt eine reibungslose Anpassung der projizierten Punktwolke (auf 2D).

IMG:Ich habe ein Bild eingefügt.Die roten Punkte stellen den Schwerpunkt dar, der mit der oben genannten Methode erhalten wurde.

3D-Punktwolke und lokale Schwerpunkte http://img510.imageshack.us/img510/2495/40670529.jpg

War es hilfreich?

Lösung

Sie könnten versuchen, Zusatzstoff (d einzelnen Index-Modelle), als GAM http://www-stat.stanford.edu/software/gam/index. html

Es ist ein gieriger Ansatz, sehr skalierbar, auch in mehreren R-Pakete implementiert

Andere Tipps

Eine verwandte Frage finden Sie hier:

Einfache mehrdimensionale Kurvenanpassung

Im Allgemeinen könnte man ein Problem wie dieses aus der Sicht des statistischen Lernens betrachten.Mit anderen Worten: Sie verfügen über eine Reihe von Basisfunktionen (z. B. Splines), die auf eine bestimmte Weise parametrisiert sind, und verwenden dann die Methode der kleinsten Quadrate oder eine andere Regressionstechnik, um optimale Koeffizienten zu finden.Mir gefällt es zufällig Elemente des statistischen Lernens

Es hängt davon ab, was Sie damit meinen. Wenn Sie eine Menge von Punkten f (x, y). -> z und Sie wollen eine Funktion finden, die sie trifft alles, was Sie nur einen Spline tun könnten

Wenn Sie eine bekannte Funktion haben und Sie die Parameter anpassen, um die RMS-Fehler zu minimieren, sollten Sie nur x, ya zusammengesetzte Objekt p (zB als ob es einen Komplex oder einen 2-Vektor war) und verwendet einen Analogon von der 2. Fall auf f (p.) -> z

Wenn Sie das konkretisieren, was Sie versuchen, zu erreichen, ich mit Vorschlägen konkretisieren können.

- MarkusQ

So angesichts der bearbeiteten Problemstellung, ich würde vorschlagen, das folgende:

  • Wenn es eine Zeitreihe (durch Ihre Verwendung des Begriffs „Trendlinie“ impliziert), das ich bei der Behandlung als drei parametrischer Funktionen aussehen würde (x (t), y (t), z (t)) und tun 2d Einbau von ihnen auf jedem.
  • Alternativ (aber immer noch eine geordnete Serie vorausgesetzt), mögen Sie vielleicht eine lineare Anpassung (eine Linie durch das Herz der Wolke) finden und dann zu, dass irgendeine Art von (wahrscheinlich polar) Funktion auf der Basis der senkrechten Projektion hinzufügen aus die Punkte auf der Linie.
  • Wenn es nicht eine Zeitreihe (implizit durch die Ausdrücke „keine bekannte Beziehung“ und „Punktwolke“) ist es, Sie müssen definieren, was „Kurve“ Sie wollen sie passen. Haben Sie eine Linie wollen? Eine Oberfläche / Verteiler? Wollen Sie es eine Funktion von einem oder zwei der Variablen sein oder unabhängig von ihnen (zum Beispiel die konvexe Hülle). Hat es glatt sein, in Grad begrenzt ist, oder ...?

Wirklich, ist die Frage noch zu Ende offen ist.

Ich würde versuchen, die raumfüllende Kurve Heuristik verwenden. Zum Beispiel, sortieren Sie die Punkte nach der Reihenfolge, wie sie durch eine raumfüllende Kurve besucht werden. Eine Lösung für Ihr Problem wäre eine Spline-Kurve durch die in dieser Reihenfolge genommen Punkte. Um eine kürzere und glattere Kurve zu bekommen (aber größer RMS Abstand von den Punkten auf der Kurve), könnten Sie die Spline zwingen, nur jeder k-ten Punkt zu gehen. Sie könnten die Kurve verbessern, wenn nach jedem k-ten Punkt der Wahl, Sie für einen kürzeren Hamilton-Pfad durch sie sehen (wie das Reisen Salesman Problem, aber für offene Pfade). Sie könnten auch die Splineknoten stellen Sie den RMS-Abstand zu verringern. Wenn der RMS-Abstand zu berechnen, würde ich die raumfüllende Kurve verwenden, um anzuzeigen, welcher Teil des Keils wahrscheinlich zu einem bestimmten Punkt sein, am nächsten kommt.

Es ist ein neues sehr schöne Arbeit von Charles Fefferman (ja - die Felder Siegerin) und Bo'az Klartag:

Sie können beide als PDF-Dateien auf Klartag finden Publikationen Seite

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top