<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />¡Hola! He programado un promedio móvil simple, pero necesito trabajar con los datos (calcular la variación de la pendiente), por lo que quiero guardarlo en una tabla de datos. Pero, ¿cómo puedo escribir eso?
¡Ideas sobre cómo calcular la pendiente también son bienvenidas! Lo que estoy pensando es simplemente tomar la derivada como un retraso (ds / dt = (tiempo de espera (tiempo, x)) / (posición-retraso (posición, x))

Jim, gracias, que hizo el truco.
Mientras tanto, calculé manualmente, pero ahora usaré la solución de Jim. Y JoseGL, usé la siguiente fórmula que tú también deberías poder usar. Y Puede usar Lag (: variable, índice) para indicar el índice de fila. es mucho más flexible de esta manera, ya que puede cambiar el contador n a cualquier valor deseado.

En mis datos, a menudo necesito calcular la pendiente de una pequeña sección de filas que se repite cada 200 filas en archivos con> 500K filas, y esta es la forma en que normalmente lo hago:
1) Agregue un marcador artificial * [p. Ej., 0 a 200] a la "serie de filas" utilizando una secuencia
* A esta variable la llamo tiempo de medición.
2) Establezca la longitud de los promedios X e Y para la fórmula de pendiente
3) Use una instrucción IF para estimar la pendiente del rango o las filas que quiero
4) [En mis datos] corrijo todas las mediciones con la pendiente
Este es el script que uso [codificado en gran medida, pero hace el trabajo por mí ^ _ ^]
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 );)
Espero que esto ayude,
Y si alguien sabe cómo hacerlo, hágamelo saber:

[es decir, subscribir el nombre dado por [usuario] de una variable sin tener que usar el nombre real de la variable]
-JoseGL
Este es un ejemplo simple tomado de la Ayuda ==> Índice de secuencias de comandos, para el objeto de serie temporal que ilustra cómo guardar los promedios móviles simples en una tabla de datos en una secuencia de comandos.
Nombres predeterminados aquí ( 1 ) ;
dt = Abierto ( "$ SAMPLE_DATA / Stock Prices.jmp" ) ;
obj = Series de tiempo (
Y ( : Cerrar ) ,
Sencillo
Media móvil ( Añadir modelo ( 5 ) )
) ;
resultdt = obj <<
Media móvil simple ( Guardar en tabla de datos ) ;
No aventuraré una opinión sobre el cálculo de la pendiente.