Anpassen einer Linie durch 3D-PunkteHallo alle miteinander,
Ich habe eine Liste von 3D-Punkten (x,y,z), an die ich eine Linie anpassen muss.Ich habe versucht, drei verschiedene Modelle anzupassen, wobei jedes die Balance der Spalten verwendet, um eine seitdem-Ausgabe vorherzusagen (also wie Y(x,z)), aber die Verwendung der drei Ausgaben liefert mir keine Linie.Das Beste, was ich tun kann, ist, Y(z) und X(z) zu verwenden und dann die Werte von z für die endgültige vorhergesagte beste Anpassung (x,y,z) zu verwenden.Allerdings bin ich nicht glücklich darüber, dass es keinen vorhergesagten Z-Wert gibt.Ich habe auch versucht, die Zeilennummer Z(row#) zu verwenden, um einen z-Wert vorherzusagen, aber das funktioniert möglicherweise nur in diesem Fall, da z eine Bewegung entlang eines Teils ist und daher die Variation darin mit der Variation im Prüfkopf verknüpft ist Bewegung zwischen Inspektionspunkten.
Verwendung der drei OLS-Modelle y(z), X(z), Z(row#)


Die Daten zum Mitspielen finden Sie im Anhang. Vielen Dank für alle Ideen!!
Grundlegende Datenanalyse und ModellierungBetreff: Eine Linie durch 3D-Punkte anpassenEs fällt mir schwer, mit der Idee klarzukommen, eine Linie dreidimensional anzupassen.Es gibt eine eindeutige Ebene mit der besten Anpassung, aber ich glaube nur, dass es eine eindeutige Linie mit der besten Anpassung gibt, die zwei der drei Dimensionen angibt. Sie scheinen diese bivariaten Anpassungen durchgeführt zu haben, aber wonach suchen Sie?Wenn Ihre Frage nicht wirklich allgemein, sondern spezifisch für die von Ihnen geposteten Daten ist, korrelieren X und Y nahezu perfekt, sodass Sie eigentlich nur zwei Dimensionen haben.Aus diesem Grund sind Ihre X-gegen-Z- und Y-gegen-Z-Anpassungen nahezu identisch (wenn auch eindeutig nicht linear).
Betreff: Eine Linie durch 3D-Punkte anpassenIch habe einfach die 2 Z-Variablen gestapelt, die Sie zeichnen möchten, und dann die Farbfähigkeit der Plattform genutzt, um die Oberfläche und die Linie anzuzeigen

Betreff: Eine Linie durch 3D-Punkte anpassenDanke, dass du darüber nachgedacht hast, dlehman1. Auch ich schiele ein wenig, wenn ich darüber nachdenke.Ich versuche, einem Kollegen dabei zu helfen, die Funktionsweise eines Inspektionsprogramms nachzuahmen, damit er die Ergebnisse vergleichen kann.Das Programm passt eine Linie durch die 3D-Punkte und gibt dann eine Abstandsmessung zwischen der besten Anpassung und dem gemessenen Punkt aus.Ich habe einige Artikel online gelesen, aber nichts hat mich wirklich überzeugt (viel Mathe-Gerede geht mir durch den Kopf!).In einem Artikel wurde die Verwendung von PCA vorgeschlagen, aber als ich dies versuchte und es die X-, Y- und Z-Werte vorhersagen ließ, ergab es keine Linie.
Ja, es ist interessant, dass Y und X so stark korrelieren.
Ich werde weiter darüber nachdenken. Wenn Sie noch etwas von mir benötigen, um die Frage zu klären, lassen Sie es mich bitte wissen.
Steve
Betreff: Eine Linie durch 3D-Punkte anpassenHallo @shampton82 ,
ich bin mit @dlehman1 Da eine Linie in 3D immer durch eine Transformation Ihres Koordinatensystems in zwei unabhängige Variablen wie X und Y oder Y und Z zerlegt werden kann, ergibt sich daraus die eindeutige Ebene, die diese Linie enthält. Aber Ihre Daten scheinen etwas anderes zu sein. Ich verstehe immer noch nicht, worum es bei der Anpassung der Linie in 3D geht. Wenn es wirklich sein muss, würde ich wohl einfach Ihr Koordinatensystem ändern, da die Ebene mit den „3D“-Daten genau entlang der XY-Diagonale verläuft.
Bei den von Ihnen geteilten Daten sieht es so aus, als hätten Sie Profilmessungen von etwas, die in regelmäßigen Abständen von 75 Einheiten (mm, um, nm?) in Z-Richtung gemessen werden. Wenn man sich die x-vs-z- und y-vs-z-Profile ansieht, sieht es tatsächlich sehr nach AFM-Daten oder etwas Ähnlichem aus. Und da X und Y so stark korrelieren, ist es fast so, als würde nur ein Schritt von 231 Einheiten (in Y) gerastert – der Schnittpunkt in Ihrem Y-mal-X-Anpassungsdiagramm – und dann wird das Element erneut gemessen.
Eines der Dinge, die ich nicht wirklich verstehe, ist, welche Art von Informationen Sie aus diesem von Ihnen verwendeten Programm herausholen möchten – Sie erwähnen, dass es eine Linie durch die 3D-Punkte passt und dann eine Entfernungsmessung von der besten Anpassung liefert und der gemessene Punkt? Dabei geht es im Wesentlichen um die Residuen der Anpassung – Sie prüfen, wie weit die Daten von Ihrer Anpassung entfernt sind. Versuchen Sie, die Residuen vorherzusagen? Versuchen Sie wirklich, den Z-Wert vorherzusagen, oder versuchen Sie, X und Y vorherzusagen? Die Linien, die Sie in die von Ihnen freigegebenen Daten einfügen, sagen X und Y voraus, nicht Z.
Es gibt hier vieles, was ich nicht ganz verstehe, aber ich denke, das liegt vielleicht daran, dass man nicht alles teilen kann. Je mehr Sie jedoch teilen und anonym halten können, desto näher kommen wir der Lösung, die Sie suchen.
Hoffe das hilft!,
DS
Betreff: Eine Linie durch 3D-Punkte anpassenCool!Gibt es eine Chance, dass Sie die Schritte zeigen könnten, die Sie zur Erstellung dieses Diagramms durchgeführt haben?
Betreff: Eine Linie durch 3D-Punkte anpassenDanke @SDF1 !
Ich gebe zu, dass es schwierig ist, da ich versuche, einem Kollegen zu helfen, der in einem anderen Werk arbeitet, sodass ich nicht alle Details habe und es beim Analysieren der Daten herausfinden muss.Ich bin zu dem gleichen Schluss gekommen wie Sie, dass X und Y der Prüfpfad des Messkopfes zu sein scheinen und Z die Hauptkomponente des Oberflächenprofils des Teils zu sein scheint.

Es gibt einige Merkwürdigkeiten in der Verteilung des Trefferabstands (selbst wenn einer direkt übereinander liegt und sehr unterschiedliche Werte für Z) und warum einer geraden Linie nicht gefolgt werden kann, also denke ich, dass sie einige MSA-Probleme haben auch damit umgehen.
Ich bin mir nicht sicher, warum sie das Delta im 3D-Raum brauchen, ich werde versuchen, mehr Details von ihnen zu bekommen.
Da es auf der Diagonale lag, wollte ich auch versuchen, die Ebene zu drehen und dann Z(x) zu verwenden, um die endgültige Passform zu finden.Interessanterweise habe ich herausgefunden, dass ich durch die Verwendung der orthogonalen Regression mit Y undIch denke also, dass ich durch Drehen dieser orthogonalen Werte (OV) und anschließendes Anpassen des OV des gedrehten X an die Z-Werte eine Linie an die Z-Werte anpassen kann und somit Prädiktoren für x, y und z hätte.
Ich werde Sie wissen lassen, wie es gelaufen ist oder ob ich weitere Informationen bekomme.Danke für den ganzen Input!!
Steve
Betreff: Eine Linie durch 3D-Punkte anpassen- Die Spalten „Vorhergesagtes Z“ und „Verschiedenes vorhergesagtes Z“ wurden mithilfe der Plattform „Tabellen=>Stacked“ gestapelt
- Öffnete die 3D-Scatterplot-Plattform
- Als Y-Spalten wurden die Spalten X, Y und Daten ausgewählt
- Als Farbspalte wurde die Spalte „Beschriftung“ ausgewählt
- Klicken Sie auf OK
Betreff: Eine Linie durch 3D-Punkte anpassenAH, danke JIM!!
Betreff: Eine Linie durch 3D-Punkte anpassenHey @SDF1 , @txnelson , Und @dlehman1
Ich denke ich habe es!
Der erste Schritt besteht darin, die orthogonale Regression zu verwenden, um eine Linie unter der Annahme gleicher Varianz am besten anzupassen.In JMP können Sie dann vorhergesagte Werte für X und Y ausgeben.

Jetzt müssen wir die Linie so drehen, dass sie senkrecht zu X oder Y steht.Ich wähle X.Dies erfordert eine Drehung der Linie und der Datenpunkte um 39,06 Grad (bestimmt durch die Steigung der angepassten Linie 0,811473).
Dann führen wir eine Anpassung von Y nach X durch, wobei x die gedrehten vorhergesagten X-Werte und Y die Z-Rohdatenwerte sind.
Anschließend speichern Sie die Formelvorhersagen aus diesem Modell und haben somit x-, y- und z-Werte anhand einer am besten angepassten Linie in 3D vorhergesagt.

Wenn Sie möchten, dass nicht alle Werte auf der Diagonale liegen, können Sie die gedrehten Pred Y- und X-Werte mit den Pred Z-Werten verwenden.
Ich habe meine Datentabelle mit Formeln angehängt, falls dies jemandem beim Nachvollziehen hilft.
Ich habe auch die gestapelte Datentabelle gemäß Txnelson-Vorschlag unten für eine Überlagerung der beiden Datenquellen hinzugefügt, die hervorragend funktioniert, und das obige Diagramm erstellt.
Betreff: Eine Linie durch 3D-Punkte anpassenHallo @shampton82 ,
Ja, Sie haben Recht, wenn es darum geht, Ihr Koordinatensystem zu drehen, indem Sie die Daten in 3D auf eine einzelne Ebene – XZ oder YZ – projizieren und dann mit der Anpassung der Linie fortfahren. Dabei wird die Cos(Theta)- oder Sinus(Phi)-Projektion auf die von Ihnen benötigte Koordinatenebene berücksichtigt.
Da ich nicht der Fachexperte für Ihr spezifisches Problem bin, verstehe ich immer noch nicht ganz, worum es geht, eine Linie an einen stark nichtlinearen Datensatz anzupassen und dann die Residuen zu berechnen. Wenn dies jedoch erforderlich ist, dann ist dies der Fall die Art und Weise, es zu tun.
Ich freue mich zu hören, dass Sie Fortschritte bei der Lösung für Ihren Kollegen machen.
DS
Betreff: Eine Linie durch 3D-Punkte anpassenHallo Steve,
Ich denke, dass die Hauptkomponentenanalyse hier ein guter Ansatz ist. Die erste Hauptkomponente ist gewissermaßen die am besten passende Linie durch diese 3D-Datenpunktwolke.
Um diese erste Hauptkomponente in das ursprüngliche XYZ-Koordinatensystem zu übersetzen, wählen Sie im roten Dreieck im PCA-Bericht die Option „Spalten speichern > Vorhersagen als Komponentenformeln speichern“. Workflow beigefügt.
-------------------
BEARBEITET, UM HINZUZUFÜGEN:
Je nachdem, was Sie erreichen möchten, müssen Sie für die PCA möglicherweise „Unskaliert“ statt „Standardisiert“ wählen. Anbei auch die unskalierte Version.
Betreff: Eine Linie durch 3D-Punkte anpassenDanke Jordan, das ist großartig!Als ich mit diesem Projekt begann, erwähnten einige Suchanfragen im Internet diese Methode und ich probierte sie aus, bat jedoch um die Speicherung von zwei Komponenten, die lediglich versuchten, die Punkte im 3D-Raum vorherzusagen, also probierte ich eine andere Methode aus.Offensichtlich wusste ich nicht, was ich wollte, da ich PCA nicht oft verwendet habe. Das Festlegen der Ausgabe auf 1 Komponente gemäß Ihren Anweisungen hat perfekt funktioniert!
Diese Methode erfordert viel weniger Schritte!