<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo! Ich habe einen einfachen gleitenden Durchschnitt erstellt, aber ich muss an den Daten arbeiten (die Steigungsvariation berechnen), also möchte ich sie in einer Datentabelle speichern. Aber wie schreibe ich das?
Anregungen zur Berechnung der Steigung sind ebenfalls willkommen! Was ich denke, ist, einfach die Ableitung als eine Verzögerung zu nehmen (ds / dt = (Zeitverzögerung (Zeit x)) / (Positionsverzögerung (Position X))

Jim, danke, das hat den Trick gemacht
Inzwischen habe ich manuell berechnet, werde aber jetzt die Lösung von Jim verwenden. Und JoseGL, ich habe die folgende Formel verwendet, die Sie auch verwenden können sollten. Y Sie können Lag (: Variable, Index) verwenden, um den Zeilenindex anzugeben. Auf diese Weise ist es wesentlich flexibler, da Sie den Zähler n auf einen beliebigen Wert ändern können.

In meinen Daten muss ich oft die Steigung eines kleinen Abschnitts von Zeilen berechnen, der sich alle 200 Zeilen in Dateien mit mehr als 500.000 Zeilen wiederholt.
1) Fügen Sie einen künstlichen Marker * [z. B. 0 bis 200] unter Verwendung einer Sequenz zu der "Reihenreihe" hinzu
* Ich nenne diese variable Messzeit
2) Legen Sie die Länge der X- und Y-Mittelwerte für die Steigungsformel fest
3) Verwenden Sie eine IF-Anweisung, um die Steigung des Bereichs oder der Zeilen zu schätzen, die ich möchte
4) [In meinen Daten] korrigiere ich alle Messungen mit der Steigung
Dies ist das Skript, das ich verwende [stark hartcodiert, aber die Arbeit für mich erledigt ^ _ ^]
Y_Mean = Mean( :MA_T1[Row()], :MA_T1[Row() + 1], :MA_T1[Row() + 2], :MA_T1[Row() + 3], :MA_T1[Row() + 4], :MA_T1[Row() + 5], :MA_T1[Row() + 6], :MA_T1[Row() + 7], :MA_T1[Row() + 8], :MA_T1[Row() + 9], :MA_T1[Row() + 10], :MA_T1[Row() + 11], :MA_T1[Row() + 12], :MA_T1[Row() + 13], :MA_T1[Row() + 14] ); X_Mean = Mean( :Measurement time[Row()], :Measurement time[Row() + 1], :Measurement time[Row() + 2], :Measurement time[Row() + 3], :Measurement time[Row() + 4], :Measurement time[Row() + 5], :Measurement time[Row() + 6], :Measurement time[Row() + 7], :Measurement time[Row() + 8], :Measurement time[Row() + 9], :Measurement time[Row() + 10], :Measurement time[Row() + 11], :Measurement time[Row() + 12], :Measurement time[Row() + 13], :Measurement time[Row() + 14] ); If( :Measurement time == 1, Slope = ((:Measurement time[Row()] - X_Mean) * (:MA_T1[Row()] - Y_Mean) + (:Measurement time[Row() + 1] - X_Mean) * (:MA_T1[Row() + 1] - Y_Mean) + (:Measurement time[Row() + 2] - X_Mean) * (:MA_T1[Row() + 2] - Y_Mean) + (:Measurement time[Row() + 3] - X_Mean) * (:MA_T1[Row() + 3] - Y_Mean) + (:Measurement time[Row() + 4] - X_Mean) * (:MA_T1[Row() + 4] - Y_Mean) + (:Measurement time[Row() + 5] - X_Mean) * (:MA_T1[Row() + 5] - Y_Mean) + (:Measurement time[Row() + 6] - X_Mean) * (:MA_T1[Row() + 6] - Y_Mean) + ( :Measurement time[Row() + 7] - X_Mean) * (:MA_T1[Row() + 7] - Y_Mean) + (:Measurement time[Row() + 8] - X_Mean) * (:MA_T1[Row() + 8 ] - Y_Mean) + (:Measurement time[Row() + 9] - X_Mean) * (:MA_T1[Row() + 9] - Y_Mean) + (:Measurement time[Row() + 10] - X_Mean) * ( :MA_T1[Row() + 10] - Y_Mean) + (:Measurement time[Row() + 11] - X_Mean) * (:MA_T1[Row() + 11] - Y_Mean) + (:Measurement time[Row() + 12] - X_Mean) * (:MA_T1[Row() + 12] - Y_Mean) + (:Measurement time[Row() + 13] - X_Mean) * (:MA_T1[Row() + 13] - Y_Mean) + ( :Measurement time[Row() + 14] - X_Mean) * (:MA_T1[Row() + 14] - Y_Mean)) / ((:Measurement time[Row()] - X_Mean) ^ 2 + ( :Measurement time[Row() + 1] - X_Mean) ^ 2 + (:Measurement time[Row() + 2] - X_Mean) ^ 2 + (:Measurement time[Row() + 3] - X_Mean) ^ 2 + (:Measurement time[Row() + 4] - X_Mean ^ 2) + (:Measurement time[Row() + 5] - X_Mean) ^ 2 + (:Measurement time[Row() + 6] -X_Mean) ^ 2 + (:Measurement time[Row() + 7] - X_Mean) ^ 2 + (:Measurement time[Row() + 8] - X_Mean) ^ 2 + (:Measurement time[Row() + 9] - X_Mean) ^ 2 + (:Measurement time[Row() + 10] - X_Mean) ^ 2 + (:Measurement time[Row() + 11] - X_Mean) ^ 2 + ( :Measurement time[Row() + 12] - X_Mean) ^ 2 + (:Measurement time[Row() + 13] - X_Mean) ^ 2 + (:Measurement time[Row() + 14] -X_Mean) ^ 2) ); If( :Measurement time < 1, :MA_T1, :MA_T1 - Slope * :Measurement time );)
Hoffe das hilft,
Und wenn jemand weiß, wie das geht, lass es mich wissen:

[dh der Index wird vom Benutzer [angegeben], ohne dass der tatsächliche Name der Variablen verwendet werden muss.]
-JoseGL
Hier ist ein einfaches Beispiel aus der Hilfe ==> Skriptindex für das Zeitreihenobjekt, das veranschaulicht, wie die einfachen gleitenden Durchschnitte in einer Datentabelle in einem Skript gespeichert werden.
Namensvorgabe bis hier ( 1 ) ;
dt = Öffnen ( "$ SAMPLE_DATA / Stock Prices.jmp" ) ;
obj = Zeitfolgen (
Y ( : Schließen ) .
Einfach
Gleitender Durchschnitt ( Modell hinzufügen ( 5 ) )
) ;
Ergebnisdt = obj <<
Einfacher gleitender Durchschnitt ( In Datentabelle speichern ) ;
Ich wage keine Meinung zur Berechnung der Steigung.