<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut! J'ai écrit une moyenne mobile simple, mais je dois travailler sur les données (calculer la variation de la pente). Je souhaite donc l'enregistrer dans un tableau de données. Mais comment puis-je script cela?
Des idées sur la façon de calculer la pente sont également les bienvenues! Ce que je pense est simplement de prendre la dérivée comme un décalage (ds / dt = (décalage temporel (time, x)) / (décalage-position (position, x))

Jim, merci, ça a fait l'affaire
En attendant, j'ai calculé manuellement, mais je vais maintenant utiliser la solution de Jim. Et JoseGL, j’ai utilisé la formule suivante que vous devriez également pouvoir utiliser. Y Vous pouvez utiliser Lag (: variable, index) pour indiquer l’index de la ligne. Cette méthode est beaucoup plus flexible, car vous pouvez modifier le compteur n à n’importe quelle valeur souhaitée.

Dans mes données, j'ai souvent besoin de calculer la pente d'une petite section de lignes qui se répète toutes les 200 lignes dans les fichiers de plus de 500 000 lignes, et voici comment je procède:
1) Ajoutez un marqueur artificiel * [par exemple, 0 à 200] à la "série de lignes" à l'aide d'une séquence
* J'appelle ce temps de mesure variable
2) Définir la longueur des moyennes X et Y pour la formule de pente
3) Utilisez une instruction IF pour estimer la pente de la plage ou des lignes que je veux.
4) [Dans mes données] Je corrige toutes les mesures avec la pente
C’est le script que j’utilise [très fortement codé, mais le travail est fait pour moi ^ _ ^]
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 );)
J'espère que cela t'aides,
Et si quelqu'un sait comment faire cela, s'il vous plaît faites le moi savoir:

[c.-à-d., inscrivez le nom d'une variable donné par l'utilisateur [sans avoir à utiliser le nom réel de la variable]
-JoseGL
Voici un exemple simple tiré de l'aide ==> Index de script, pour l'objet Séries temporelles, qui explique comment enregistrer les moyennes mobiles simples dans une table de données dans un script.
Noms par défaut jusqu'ici ( 1 ) ;
dt = Ouvrir ( "$ SAMPLE_DATA / Stock Prices.jmp" ) ;
obj = Des séries chronologiques (
Y ( : Fermer ) ,
Simple
Moyenne mobile ( Ajouter un modèle ( 5 ) )
) ;
résultat = obj <<
Moyenne mobile simple ( Enregistrer dans la table de données ) ;
Je ne vais pas m'aventurer sur le calcul de la pente.