Berechnung der Steigung der linearen Regression in der FormelHallo,
Ich habe mich gefragt, ob es eine Möglichkeit gibt, die lineare Regressionssteigung von Spaltendaten innerhalb einer Datentabellenformel zu berechnen.
Ein einfaches Beispiel der Tabelle ist unten. Die Daten sind geordnet und ich möchte die Steigung einer Anpassungslinie des Volumens über die Zeit berechnen, indem ich die Daten der aktuellen Zeile und vorherige Punkte verwende, um die Regression durchzuführen.
Die Idee ist, dass ich sehen möchte, wie sich die berechnete Steigung mit zunehmender Anzahl von Datenpunkten ändert. Wenn Sie dies manuell tun, nähern sich die Steigungswerte einem bestimmten Wert und bleiben nach etwa 20 Punkten innerhalb von +/-5%.
| Beispiel | Zeit (e) | Volumen (ml) | Steigung (ml/s) |
| 1 | 0 | 0 | n / A |
| 2 | 5 | 0,5 | m1 |
| 3 | 10 | 0,8 | m2 |
| ... | ... | ... | ... |
| N | T | v | mN-1 |
Wenn das möglich ist, wäre meine nächste Herausforderung, dies so einzurichten, dass ich die Steigungsformel so berechnen kann, dass sie stattdessen N Datenpunkte auf beiden Seiten der aktuellen Zeile für eine symmetrische Bewegungsberechnung verwendet.
Vielen Dank im Voraus.
Betreff: Lineare Regressionssteigung in Formel berechnenDas ist interessant ... wenn ich einen p-Wert darauf anwenden wollte ... basierend auf einer Nullhypothese (Steigung = 0) ... gibt es eine Möglichkeit, dies in die Formel zu integrieren?
Mit anderen Worten, ich würde gerne sehen, wann sich die sich bewegende Steigung basierend auf dem Konfidenzintervall um die Steigung signifikant ändert
Betreff: Lineare Regressionssteigung in Formel berechnenDu sagtest, " Oftmals wissen wir nicht, wann sich die Korrelation zwischen den Xen geändert hat, daher ist dies ein Versuch, den Einfluss der Zeit für eine anstehende Analyse zu untersuchen. " Haben Sie den Funktionsdaten-Explorer in JMP Pro ausprobiert? Es kann nützlich sein, eine Änderung der Form durch die funktionellen Hauptkomponenten zu erkennen.
Betreff: Lineare Regressionssteigung in Formel berechnenHallo JMP-Team ...
Nelsons Ansatz ist sehr wahrscheinlich das, wonach ich gesucht habe. Ich unterhalte mich mit ihm über ein ähnliches Bedürfnis beim Mann-Kendall-Tau-Test.
Meine Eingabe ist nicht in einer einzigen Zeile.
Meine Daten enthalten normalerweise mehrere Parameter, die jeweils zu einem anderen Zeitschritt gemessen wurden. Aufgeräumtes Datenformat; Parameter sind in Spalten, jede Zeile ist ein anderer Zeitzustand - dh Chronologie ist in Zeilen.
Ich untersuche viele statistische Funktionen, die den Trend in einer dieser Funktionen messen, oder eine Anpassung gegenüber einem anderen X in der Zeit, aber als Funktion rollender Fenster.Anstatt beispielsweise die gesamte Geschichte von X vs. Y zu regressieren, mag ich eine Logik, die die Regression der beiden innerhalb konstanter vergangener N Zeitschritte untersucht. Jede Zeile wird dann neu bewertet und bringt mir ein neues Ergebnis. Dies könnte eine Steigung aus einer linearen Regression oder ein Tau-Test aus einem nichtparametrischen MK-Test oder eine andere statistische Ausgabe sein.
Oftmals wissen wir nicht, wann sich die Korrelation zwischen den Xen geändert hat, daher ist dies ein Versuch, den Einfluss der Zeit für eine anstehende Analyse zu untersuchen. Das oben erwähnte N kann auf verschiedene Werte geändert werden, um kurzfristige vs. mittel-/langfristige Trends zu untersuchen.
Ich bin mit Skripten einverstanden, sie sind nicht meine Präferenz, es sei denn, die Berechnungen können einer Methode, die nur von Skripten angeboten wird, großen Nutzen bringen.
Ich bevorzuge es im Allgemeinen, die Berechnungen in Formeln zu fassen und sie innerhalb der Datenrahmen zu halten.
Bis heute, ICH nicht wissen, dass Skriptstrukturen innerhalb von Formeln eingesetzt werden können.
Das war wohl der Hauptgrund für meine Verwirrung.
Schätzen Sie alle Ihre Hilfe.
Betreff: Lineare Regressionssteigung in Formel berechnenIch weiss.
Mein Punkt ist, dass der beste Weg, um mit dem Lernen von Funktionen zu beginnen, die Sie in einer Formel verwenden könnten, der Skriptindex ist.
Betreff: Lineare Regressionssteigung in Formel berechnenKönnen Sie uns mehr Hintergrundinformationen zu dem geben, wonach Sie suchen?
Formeln funktionieren im Allgemeinen über Zeilen einer Datentabelle und werten eine pro Zeile mit Spaltenwerten aus dieser Zeile als Eingaben aus.
Wenn Sie also im Formeleditor nach einer Regressionsfunktion fragen, würde man erwarten, dass Sie in jeder Zeile Ihrer Datentabelle eine Matrix von Eingabewerten haben. Vielleicht hast du das, aber das ist eine ungewöhnliche Struktur.
Mit einigen weiteren Informationen können wir Ihnen also möglicherweise helfen zu verstehen, wie Sie eine Formel dafür verwenden können, oder Ihnen vielleicht einen Weg außerhalb des Formeleditors weisen.
Betreff: Lineare Regressionssteigung in Formel berechnenEine JMP-Formel kann so ziemlich alles sein, was Sie wollen.Mein Hinweis auf die Funktion Linear Regression() im Skripting-Index zeigt ihr Beispiel in Form eines Skripts, aber die Funktion kann auch in einer Formel verwendet werden.Unten ist ein dummes Beispiel für die Berechnung der Regression für die ersten Zeilen 1-3, dann 1-4, 1-5 usw. für alle Zeilen in der Big Class-Datentabelle.Hier ist die Formel …….in der Datentabelle angehängt, wobei die neue Formelspalte hinzugefügt wurde

Betreff: Lineare Regressionssteigung in Formel berechnenIch suche kein Drehbuch.
Ich suche nach einer Formelanwendung (z. B. mit Formel-Builder)Betreff: Lineare Regressionssteigung in Formel berechnenWählen Sie „Hilfe“ > „Skriptindex“. Geben Sie "Regression" in das Filterfeld ein. Sie sollten die Funktion Linear Regression() in der zweiten Liste finden. Wählen Sie es aus, um rechts Informationen zu dieser Funktion anzuzeigen.
Betreff: Lineare Regressionssteigung in Formel berechnenHi ...
Du erwähntest " Funktion Lineare Regression(), die in einer Formel verwendet werden könnte" ...und Das Erhalten einer Steigung aus einer Formel, die an den bereitgestellten Datensatz angepasst ist, ist das Endziel , wo würde man die Funktion Linear Regression() oder Hilfe finden?
Hast du ein Beispiel?
Danke
Betreff: Lineare Regressionssteigung in Formel berechnenJ() ist eine Funktion, die eine Matrix identischer Werte erstellt.Der Standardwert ist 1.
|| ist ein Operator, der eine Verkettung angibt.In Marks Beispiel verkettet er also 2 Matrizen.
Diese Funktionen und Operatoren sind vollständig im Scripting Guide dokumentiert
Hilfe==>JMP-Dokumentbibliothek …..Skriptleitfaden
Betreff: Lineare Regressionssteigung in Formel berechnen@Mark_Bailey Hallo Mark, ich bin neu bei JMP und versuche, etwas Ähnliches wie bio_grad zu tun, wo ich eine lineare Regression an 3 Punkten, dann 4 Punkten und dann so weiter in einer Spalte in meiner Datentabelle durchführe. Ich versuche zu verstehen, was Ihre Antwort tatsächlich tut, und hatte ein paar Fragen. Was bedeutet || bedeuten? auch was ist J?Betreff: Lineare Regressionssteigung in Formel berechnenLiebling @txnelson , können Sie zeigen, wie Sie den obigen Code optimieren, um Fit-Modelle für Zeilenauswahlen basierend auf jeder 'Wafer'-ID / jedem Wert anstelle der Zufallsstichprobe auszuführen? Danke!Betreff: Lineare Regressionssteigung in Formel berechnenHallo,
Sie erwähnen eine "Spanne von 3", wenn wir sie in eine sich bewegende Steigung von "N" Abtastwerten ändern möchten, welcher Wert muss geändert werden?
Danke!
Betreff: Lineare Regressionssteigung in Formel berechnenSehen Sie sich die Funktion Linear Regression() an, die in einer Formel verwendet werden könnte.Es könnte etwas sein, das Sie verwenden können.
Betreff: Lineare Regressionssteigung in Formel berechnenHallo,
Gibt es einen Plan, Steigung und Schnittpunkt in den Formelgenerator einer zukünftigen JMP-Version mit einer einfacheren direkten Funktion zu integrieren?
Danke.
Betreff: Lineare Regressionssteigung in Formel berechnenSuper, das funktioniert, danke
Betreff: Lineare Regressionssteigung in Formel berechnenDiese modifizierte Formel erzeugt eine gleitende Steigung der Spanne 8:
If( Row() > 7,
x = J( 8, 1, 1 ) || :height[Index( Row() - 7, Row() )]`;
y = :weight[Index( Row() - 7, Row() )]`;
(Inv( x` * x ) * x` * y)[2];
)
Betreff: Lineare Regressionssteigung in Formel berechnenHallo
Ich versuche, Ihre Formel anzuwenden, um die gleitende Steigung mit einem Fenster von 8 zu berechnen, womit ich meine (für Row ()> 7), dass ich die Steigung der linearen Regression für den ersten Satz von x- und y-Daten berechnen möchte Punkte [1 bis 8], und dann den nächsten Satz von 8 Datenpunkten, die um 1 erhöht werden [2 bis 9], und so weiter. Ich versuche, die maximale Steigung zu berechnen, um die Anfangsgeschwindigkeit einer enzymatischen Reaktion zu erhalten.
Können Sie mir bitte sagen, wie Sie Ihr Skript ändern würden, um dies zu erreichen? Ich habe Ihre Formel getestet und erhalte die Steigung für alle Datenpunkte von Zeile 1 bis Zeile n und nicht ein sich bewegendes Fenster definierter Größe.
Vielen Dank im Voraus
Betreff: Lineare Regressionssteigung in Formel berechnenwow~~ Genial!!!!!!
Vielen Dank!!!!! 
Betreff: Lineare Regressionssteigung in Formel berechnenDas ist genau das, wonach ich gesucht habe. Ich hatte keine Ahnung, dass diese Operationen verfügbar sind!
Danke schön!
Betreff: Lineare Regressionssteigung in Formel berechnenSie können auch eine Spaltenformel verwenden. Ich habe Big Class.jmp aus dem Sample Data-Ordner geöffnet. (Wählen Hilfe > Beispieldatenbibliothek > Große Klasse.jmp > Offen ) Ich habe eine neue numerische Spalte namens erstellt beweglicher Hang . In diesem Beispiel wird die gleitende Neigung mit einer Spanne von 3 für Y = Gewicht und X = Höhe mit der folgenden Spaltenformel berechnet:
If( Row() > 1,
x = J( Row(), 1, 1 ) || :height[Index( 1, Row() )]`;
y = :weight[Index( 1, Row() )]`;
(Inv( x` * x ) * x` * y)[2];
,
Empty()
)
Zeichnen Sie dann die gleitende Steigung gegen die Zeile im Graph Builder.
Betreff: Lineare Regressionssteigung in Formel berechnenVersuchen Sie, diese Formel in eine neue Formelspalte einzufügen (dadurch wird die Steigung bis zur aktuellen Zeile berechnet):
(Row() * Summation( i = 1, Row(), :Time[i] * :Volume[i] )
-Summation( i = 1, Row(), :Time[i] ) * Summation( i = 1, Row(), :Volume[i] )) / (
Row() * Summation( i = 1, Row(), :Time[i] ^ 2 )
-Summation( i = 1, Row(), :Time[i] ) ^ 2)
Um den zweiten Teil Ihrer Frage zu erledigen, müssten Sie nur den Index der Summe ändern, dh von i = Row () - N auf Row () + N.
Hoffe das hilft.
-Jerry
Betreff: Lineare Regressionssteigung in Formel berechnenHier ist ein Skript, das Ihnen die gewünschte Ausgabe liefert, es macht es nur auf eine andere Art und Weise.Es verwendet die Fit Model Platform und durchläuft sie mehrere Male, wodurch das N erhöht wird.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Create an output table to hold the results
dtOut = New Table( "summary",
New Column( "Instance" ),
New Column( "N" ),
New Column( "RSquare" ),
New Column( "RSM" ),
New Column( "Intercept" ),
New Column( "b1" ),
New Column( "b2" )
);
Loop Counter = 0;
// Loop across the different sizes
For( i = 5, i <= 111, i = i + 5,
Loop Counter++;
// Create a random sample data table from the original data table
dt << New Column( "random", formula( Random Uniform() ) );
dt << sort( by( dt:random ), , Order( Ascending ), replace table( 1 ) );
dt << delete columns( "Random" );
dt << select where( Row() <= i );
dtSample = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
// Run the regression
fm = dtSample << Fit Model(
Y( :NPN1 ),
Effects( :PNP1, :PNP2 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
:NPN1 << {Summary of Fit( 1 ), Analysis of Variance( 1 ), Parameter Estimates( 1 ),
Lack of Fit( 0 ), Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )}
)
);
// Capture the output data
dtOut << Add Rows( 1 );
dtOut:Instance[N Rows( dtOut )] = Loop Counter;
dtOut:N[N Rows( dtOut )] = i;
dtOut:RSquare[N Rows( dtOut )] = (Report( fm )["Summary of Fit"][1][2] << get)[1];
dtOut:RSM[N Rows( dtOut )] = (Report( fm )["Summary of Fit"][1][2] << get)[3];
dtOut:Intercept[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[1];
dtOut:b1[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[2];
dtOut:b2[N Rows( dtOut )] = (Report( fm )["Parameter Estimates"][1][3] << get)[3];
// Clean up after our selfs
fm << close window;
Close( dtSample, nosave );
);Betreff: Berechnung der linearen Regressionssteigung in der FormelFantastische Lösung für GENAU das, was ich tun wollte. Danke schön!!
Betreff: Berechnung der linearen Regressionssteigung in der FormelLeute, die sich für dieses Problem interessieren, sollten vielleicht darüber nachdenken, die Wunschidee zu unterstützen:
https://community.jmp.com/t5/JMP-Wish-List/Moving-Rolling-Window-Statistics/idi-p/722620