Wie kann ich eine standardmäßige Regression der kleinsten Quadrate bei bestimmten Werten meiner x-Achse durchführen?
Für mehr Kontext: Ich trage Spannung gegen Strom auf und benötige bei Werten von -10A -5A 5A 10A ein Standardmodell der kleinsten Regression mit so vielen Punkten um diese Werte herum. Ich stelle mir vor, dass meine Daten entweder 4 Punkte oder 4 kleine Linien enthalten, um dies darzustellen.
Ich habe JMP 17 Pro und mache es derzeit für den gesamten Datensatz, aber das ist nicht das, was ich brauche.
Eine Methode, um dies durch JMP-Analyse zu erreichen, wird einem Skript vorgezogen, aber alles wäre großartig 
Hallo @MedianRooster10 ,
Können Sie eine Beispieldatentabelle freigeben, damit wir sehen können, wie die Daten strukturiert sind? Dies könnte helfen, schneller zu einer Lösung zu kommen.
Eine Idee, die mir in den Sinn kam, war, dass Sie eine Spalte haben, die die verschiedenen aktuellen Gruppen als nominalen Datentyp kategorisiert. Möglicherweise haben Sie für die Spalte „Aktuell“ numerische Werte wie -10, -5, 5, 10, aber Sie könnten auch eine Spalte mit Text wie „ -10A -5A 5A 10A, für jede Stromgruppe und wenn Sie dann Ihre Standard-LS-Regression durchführen, verwenden Sie diese Spalte als „BY“-Variable.
Es wäre, als würde man die Datei Big Class.jmp verwenden und :height als Y, :weight als X und dann :sex als „BY“-Variable modellieren. Dies würde Ihnen ein Modell für alle Ys liefern, die in diese verschiedenen Spannungsbereiche gruppiert sind. Das ist vielleicht nicht das, wonach Sie suchen, aber auch hier wäre es hilfreich, eine Beispieldatentabelle zu erhalten, um zu sehen, wie Ihre Daten strukturiert sind, und um eine spezifischere Lösung bereitzustellen.
Hoffe das hilft!,
DS
Hallo @SDF1
Ich glaube nicht, dass es das ist, was ich suche.
Ich habe eine Teilmenge der Daten für eine Temperatur und die von mir erstellte Grafik angehängt.
Es ist kein linearer Graph, ich möchte jedoch eine teilweise lineare Regression. Zum Beispiel möchte ich die 10 Datenpunkte nehmen, die 5A am nächsten kommen, und das kleinste Quadrat davon berechnen (dies als Datenpunkt in meinem Diagramm darstellen).
Ich danke Ihnen für Ihre Hilfe!
Hallo @MedianRooster10 ,
Ich denke, Sie versuchen eine stückweise Regression durchzuführen. Möglicherweise können Sie dies mit dem Functional Data Explorer oder der nichtlinearen Plattform tun.
Dieser JMP-Blog könnte Ihnen dabei helfen, diesen Regressionstyp in einem sehr ähnlichen Anwendungsfall zu realisieren: Anpassen stückweiser Funktionen mit der nichtlinearen Plattform von JMP
Ich hoffe, das wird Ihnen helfen,
Hallo @MedianRooster10 ,
Vielen Dank für die Datentabelle, die hilft, die Dinge etwas besser zu verstehen.
Wenn Sie nicht für alle Ihre Daten eine Kleinste-Quadrate-Anpassung durchführen müssen, sondern nur für ein bestimmtes Segment oder mehrere Segmente, denke ich immer noch, dass die Verwendung einer Art identifizierender Spalte der richtige Weg ist und diese im Modell als beides verwendet als BY-Variable oder als lokaler Datenfilter. Ich vermute auch, dass Sie dies möglicherweise für viele Datentabellen oder -spalten tun müssen, was bedeutet, dass Skripting tatsächlich eine ziemlich gute Möglichkeit wäre, dies zu tun.
Wenn Sie dies mit ein wenig Skripting und einer Schnittstelle zu JMP erledigen möchten, finden Sie unten einen kleinen Code, der Ihre Datentabelle sortiert, eine neue Datentabelle erstellt, eine Spalte mit dem Namen „:Segment“ generiert und dann dem Segment von einen Wert zuweist Auswahl. Im Code ist das Ziel der aktuelle Zielwert – ich habe 10 gewählt, und der Bereich ist die Anzahl der Datenpunkte auf beiden Seiten davon. Wenn Sie dann einen regulären Standard der kleinsten Quadrate durchführen und die Spalte „:Segment“ als lokalen Datenfilter verwenden, können Sie Segment 2 auswählen und die Methode der kleinsten Quadrate erhalten, die für die Daten geeignet ist.
Names Default To Here( 1 );
Current Data Table() << Sort( By( :"Current(A)"n ), Order( Ascending ), Output Table( "Sorted.jmp" ) );
dt = Data Table("Sorted");
dt << New Column( "Segment", "Continuous", "Ordinal" );
range = 5; //rows to group on either side of target
target = 10; //5A
rows = Current Data Table() << Get Rows Where( (:"Current(A)"n >= target - 0.3 & :"Current(A)"n <= target + 0.3) );
For( i = 1, i <= N Rows(dt), i++,
If(
i < rows - range, :Segment[i] = 1,
(i >= rows - range & i <= rows + range), :Segment[i] = 2,
i > rows + range, :Segment[i] = 3
)
);Sie erhalten eine Ausgabe, die in etwa so aussieht.

Wenn Sie die Spalte „Segment“ als BY-Variable in der SLS-Modellanpassung verwenden und Ihr Datenmodell erhalten, können Sie die STRG-Taste gedrückt halten und mit der linken Maustaste auf die rote Schaltfläche neben einem der „Antwortspannungs“-Namen und klicken Wählen Sie „Spalten speichern“ > „Vorhersageformel“. Dadurch wird eine Vorhersageformelspalte in der Datentabelle gespeichert, in der je nach Segmentnummer eine andere Gleichung verwendet wird.



Nun, das ist sicherlich eine Möglichkeit, es zu tun.
Sie können dies auch tun, indem Sie im Graph Builder ein Spannungs-Strom-Diagramm erstellen und dann mit dem Lasso-Werkzeug (neben der Lupe unter den Menüs) die Daten auswählen, die Sie anpassen möchten.

Gehen Sie dann zu „Zeilen“ > „Zeilenauswahl“ > „Zeilenauswahl umkehren“.

Klicken Sie dann mit der rechten Maustaste auf eine der Zeilennummern und wählen Sie Ausblenden und ausschließen. Wenn Sie dann zur Modellplattform für Ihre standardmäßigen kleinsten Quadrate wechseln, können Sie nur die Datenpunkte modellieren, die nicht ausgeblendet und ausgeschlossen sind.
Im folgenden Beispiel können Sie sehen, wie das Modell und die SLS an die Daten angepasst sind. Im Diagramm „Residuum nach vorhergesagtem Ergebnis“ können Sie eine gewisse Krümmung erkennen, daher habe ich einen Term „Aktuell*Aktuell“ hinzugefügt, und Sie erhalten eine viel bessere Anpassung mit etwas mehr zufälligen Residuen.


Wenn Sie die funktionale Form der Formel für die verschiedenen stückweisen Abschnitte Ihrer Daten kennen, würde ich es auf die von Victor erwähnte Weise mit der nichtlinearen Plattform angehen. Sie müssen jedoch die funktionale Form jedes Teils kennen und wissen, wo die Daten „aufgeschnitten“ werden müssen.
Zwischen diesem und dem, was Victor gepostet hat, sollten Sie genug haben, um loszulegen.
Hoffe das hilft!,
DS