Ich habe ziemlich viel Zeit damit verbracht, einen einfachen Weg zu finden - im Idealfall existiert dort irgendwo eine magische Bibliothek, die meine 3D-Datenpunkte aufnimmt und 2 Punkte auf der besten Fitlinie zurückgibt entweder orthogonale Regression oder kleinste Quadrate und geben auch den Fehler der angepassten Linie zurück. Gibt es so etwas und wenn ja, wo?Passen Sie eine 3D-Linie an 3D-Punktdaten in Java an?
Antwort
Dies ist einfach genug zu tun, aber um es selbst zu schreiben, benötigen Sie einen Eigenwertlöser oder eine Singulärwertzerlegung. Erstellen Sie die nx3-Matrix A Ihrer (x-xbar, y-ybar, z-zbar) -Daten als Spalten. Speichere diese Spalte für später, ich werde es V0 = [xbar, ybar, zbar] nennen.
Nun berechnet die Eigenwerte und Eigenvektoren von A * = A, das heißt die 3x3-Matrix von A Transponierte von A. multipliziert gebildet
Wenn diese Daten auf einer Linie in R^3 liegt, dann einer von denen Eigenwerte sind signifikant größer als die anderen beiden Eigenwerte. Wenn dies nicht zutrifft, wird die orthogonale Regressionslinie nicht gut geschätzt.
Man nehme den Eigenvektor, der dem größten Eigenwert von A '* A zugeordnet ist. Dann, wenn V die entsprechende Eigenvektor ist, wird die orthogonale Regressionslinie definiert als
V (t) = V0 + t * V
Jeder Punkt auf dieser Linie kann durch einen Wert des Parameters t gegeben werden.
Alternativ die Einzelwertzerlegung von A berechnen, und das Recht singulären Vektor nehmen, die zu dem größten Einzelwert von A.
In jedem Fall entspricht, wenn Sie die Fehler für die Datenpunkte berechnen wollen, dies wäre definiert als einfach der orthogonale Abstand zu der fraglichen Linie.
Google für "java lineare kleinste Quadrate Regression Bibliothek" und Sie sollten ein paar Optionen finden. Einer ist Drej. Ich habe das selbst nicht benutzt.
EDIT - Ich bin nicht zuversichtlich, dass dies die Frage beantwortet - ich weiß nicht, ob 3D-Daten unterstützt werden.
Es ist einfach genug, um es zu tun, wenn Sie den Trick kennen: http://www.scribd.com/doc/21983425/Least-Squares-Fit
Weitere Dimensionen mehr Koeffizienten bedeutet, aber sie sind leicht genug, um in hinzufügen Die Ideen sind alle gleich..
Falsch. Was zählt, ist der Kodimension, und wenn Sie eine Linie in 3D haben, ist die Kodimension 2 (für eine Linie in 2D ist es 1). Daher bricht die gesamte Logik, die üblicherweise zur Herleitung der kleinsten Quadrate verwendet wird (wie in Ihrem Link), ziemlich vollständig aus, fürchte ich. Siehe die Antwort von Hackschnitzel unten. – AVB
- 1. So passen Sie eine SwitchableFieldDefinition an
- 2. So passen Sie Suchzeichenfolgen an Inhalte in Python an
- 3. So passen Sie Eigenschaftsnamen in Javer an
- 4. So passen Sie Formularüberprüfungsfehler in codeIgniter an
- 5. So passen Sie Daten mit nichtlinearen Funktionen und Plotdaten an und passen sie mit ggplot() an
- 6. So passen Sie ein Select-Tag in eine Tabellenzelle an
- 7. Wie passen Sie Layouts an die Soft-Tastatur an?
- 8. So passen Sie SOAP-Antworten an das Schema an
- 9. Passen Sie Bokeh-Diagramm automatisch an Bildschirm an?
- 10. So passen Sie Akkordeon-Textgröße an den Inhalt an
- 11. Passen Sie unterschiedlich große Bilder an ein bestimmtes Format an.
- 12. So passen Sie WCF XML-Serialisierung an
- 13. So passen Sie das Fischauge-Menü an!
- 14. So passen Sie einen UIPopoverController an
- 15. So passen Sie Bootstrap-Spaltenbreiten an?
- 16. Thingworx: Passen Sie den `GetImplementingThings` Service an
- 17. Wie passen Sie die QTextEdit-Grenzen an?
- 18. So passen Sie die Authentifizierungsseite an:
- 19. So passen Sie ähnliche Produkte für eine Preisvergleichs-Website an
- 20. So passen Sie eine Erweiterung im Medieneditor an?
- 21. So passen Sie eine Box mit CSS oder Javascript an
- 22. So passen Sie die Währungsformatierung in MessageFormat in ICU4J an
- 23. So passen Sie den Facebook-Freigabe-Dialog in Qualtrics an
- 24. Passen Sie ein Tupel unbekannter Größe in der Skala an
- 25. So passen Sie die Listenelemente in einem Android AlertDialog an
- 26. So passen Sie die horizontale Ellipse (...) in php an
- 27. So passen Sie die Fokusnavigation in einer ViewGroup an
- 28. So passen Sie x Etiketten in R an boxplot
- 29. Wie passen Sie an, wie JAXB mehrere Methodennamen generiert?
- 30. Erzwingen Sie ein Bild und passen Sie das Seitenverhältnis an
@ user85109 congrats für so eine klare Antwort – Nic
Für einen formellen Nachweis der vorgestellten Methode kann man sich den hier vorgestellten Link ansehen: http://mathhelpforum.com/advanced-statistics/181810-3d-line-best- fit.html – Nic