¿Salida incorrecta para la correlación cruzada en la plataforma de series de tiempo?Hola, comunidad de JMP:
(W10, 64 bits, JMP Pro 15.2.1)
Espero averiguar qué estoy haciendo mal o qué no entiendo acerca de cómo JMP realiza los cálculos de correlación cruzada en la plataforma Time Series. En resumen, cuando comparo la correlación cruzada de una función Sin (x) con una función Cos (x), no obtengo una respuesta de pi / 2 (o 90 grados) como esperaría, obtengo 79 grados en lugar de.
Estoy tratando de armar una explicación y una descripción simplificadas de lo que significa la salida Serie temporal> Correlación cruzada para algunos colegas. Para hacer eso, hice una tabla simple con 361 filas (valores 0-360, cada fila es un grado, o 0.01745 radianes) y varias otras columnas que calculan Sin (x), Sin (x-5), Sin ( x-45), Cos (x) y una distribución uniforme aleatoria (consulte la tabla adjunta Periodic_series.jmp). El propósito es demostrar la correlación cruzada utilizando funciones trigonométricas simples que las personas pueden comprender más directamente que una función compleja dependiente del tiempo, como el conjunto de datos SeriesJ.
Si ejecuta el primer script en la tabla de datos, obtiene un gráfico de las funciones trigonométricas (el uniforme aleatorio se omite a propósito). Todo luce como debería.

Luego puede ejecutar el script de serie temporal, donde Sin (x) es la entrada Y, y las otras funciones son las columnas de la Lista de entrada para que pueda realizar el análisis de correlación cruzada. Al convertir la salida de correlación cruzada en una tabla de datos (consulte la tabla de datos cross-correlation.jmp), puede trazar los valores de correlación frente al retraso (ejecute el primer script en esta tabla de datos).

A primera vista, esto se ve como debería: la correlación cruzada de Sin (x) con Sin (x-5) tiene su pico cerca de -5, Sin (x) con Sin (x-45) parece estar cerca de -45 , y para Sin (x) con Cos (x) está cerca de 90. Sin embargo, si usa la mira, verá que la correlación cruzada entre Sin (x) y Cos (x) está más cerca de 80.

De hecho, si ejecuta el script: Obtener retrasos en la tabla de datos, imprime los retrasos en la ventana Registro:
"Corr vs. Sin (x-5) retraso en grados = [-5]"
"Corr vs. Sin (x-45) retraso en grados = [-40]"
"Corr frente a Retraso de Cos (x) en grados = [79]"
"Corr frente a retardo uniforme de Rondom en grados = [18]"
El único que se calcula correctamente es el retraso de -5. El retraso de Sin (x) en -45 grados da como resultado un retraso de -40, no de -45 como se esperaba. De manera similar, con Sin (x) y Cos (x), el retraso es 79, cuando esperaría que el valor fuera 90. He intentado esto de varias formas diferentes y con muchas más filas para ver si es un problema de "resolución", pero sigo teniendo un retraso de alrededor de 80.
O el cálculo no devuelve el retraso correcto o me falta algo.Supongo que me estoy perdiendo algo, pero no estoy seguro de qué es. Seguí algunas sugerencias de otras publicaciones e intenté leer sobre ellas en la ayuda de JMP aquí , pero no puedo encontrar ningún detalle del cálculo de la correlación cruzada que explique por qué una función trigonométrica de Sin (x) no tiene un retraso de 90 con Cos (x).
Cualquier comentario / comentario sobre esto es muy apreciado.
¡Gracias!,
DS
AnalíticaTabla de datosOtroRe: ¿Salida incorrecta para la correlación cruzada en la plataforma de series de tiempo?Creo que se debe al tamaño de muestra finito. Para puntos consecutivos en CCF, los tamaños de muestra son diferentes en 1. Agregué 3600 filas más, hice el gráfico nuevamente y el pico está más cerca de 90, también la amplitud también está más cerca de 1 en el pico.

Re: ¿Salida incorrecta para la correlación cruzada en la plataforma de series de tiempo?Hola @peng_liu ,
Gracias por la respuesta. Había intentado más filas, pero no intenté tantas. Aunque entiendo cómo el tamaño de muestra finito puede influir en el cálculo, me sorprende un poco que lo afecte tanto. Puedo imaginar una pequeña diferencia, tal vez 88 u 89 con un conjunto finito más pequeño, pero estar 12 apagado parece bastante grande. Supongo que mi preocupación es qué pasa con las situaciones del mundo real en las que es posible que tenga un conjunto de datos de series de tiempo limitado.
Por cierto, también noté un error en mi columna Deg que no tenía en cuenta correctamente la adición de más filas. La fórmula debe ser:

De esta manera, los datos de grados siempre se ejecutarán de -180 a 180 (bueno, con la pequeña diferencia en un extremo o en el otro debido al tamaño del incremento).
Por ejemplo, de un conjunto de datos limitado del mundo real, tal vez tenga un dispositivo que recopile datos cada segundo durante solo un período de quince minutos. Eso es solo 900 puntos de datos. De acuerdo con esa situación, se podría concluir que las dos señales tienen un retraso de 78, cuando en realidad es 90. Concluir que el retardo de la señal es 78 sería incorrecto y posiblemente llevaría a alguien a comenzar a hacer un análisis incorrecto de los datos. No importa qué
En este caso particular, saber cuál es el retraso real a priori, pero en situaciones reales, eso no siempre se sabe. Puedo imaginar conjuntos de datos, donde el mismo evento se mide en diferentes ubicaciones y es necesario determinar el retraso en la señal, pero el conjunto de datos es bastante limitado. Según cómo parece funcionar la función de correlación cruzada, esto podría dar como resultado una conclusión incorrecta.
¿Hay alguna forma de compensar esto o de que el cálculo tenga en cuenta el conjunto de datos limitado? ¿Podría tener alguna otra columna funcional que intercambie y haga una simulación de la cantidad de retraso para obtener algún intervalo de confianza en el retraso? ¿Qué tipo de columna funcional sería esa?
Si vuelvo a hacer la evaluación con la fórmula correcta para permitir un número arbitrario de filas, todavía no obtengo la respuesta correcta, incluso cuando vuelvo a convertir de un valor de retraso a un valor de grado. Por ejemplo, con 3601 filas (valores de 0 a 3600), obtengo los gráficos de retraso como este:

Y cuando ejecuto el script Obtener retrasos, pero ahora mirando la columna donde el retraso se convierte nuevamente en grados (fórmula a continuación basada en las 3601 filas en la tabla original), obtengo:

"Corr frente a Sin (x-5) retraso en grados = [-4,89863926687031]"
"Corr vs. Sin (x-5) lag in lag = [-49]"
"Retraso de Corr frente a Sin (x-45) en grados = [-40,2888086642599]"
"Corr vs. Sin (x-45) lag en lag = [-403]"
"Corr frente a Retraso de Cos (x) en grados = [78,4782004998612]"
"Corr vs. Cos (x) lag en lag = [785]"
A continuación se muestra un gráfico de Sin (x) con Cos (x) retrasado en 900 y 785 filas. Como puede verse, 785 no está en el valor de retraso correcto, lo que ocurre en la fila 900 (curva roja).

Entonces, todavía no obtengo los valores correctos. Se adjuntan nuevas tablas de datos. Todavía tengo el presentimiento de que no estoy haciendo algo bien, ¿tal vez una fórmula incorrecta en alguna parte? No puedo entender por qué no obtengo los valores correctos.
¡Gracias por la ayuda!,
DS
Re: ¿Salida incorrecta para la correlación cruzada en la plataforma de series de tiempo?Hay problemas en el segundo conjunto de datos. Así es como se ve Sin (x) en los segundos datos:

Así es como se ven mis filas 3601:

Eso explica por qué su CCF SinX y CosX no cambia.
El tamaño de la muestra que importa aquí no es el número de observaciones aquí, sino el número de ciclos. En los datos originales, solo hay un ciclo. Para calcular CCF, es necesario cambiar la serie, lo que creará valores faltantes en una serie, lo que hará que las medias de la muestra oscilen enormemente. Si hay muchos ciclos, la media se mantendrá cercana a cero, el valor real.
Si en una situación real, uno solo tiene un ciclo de datos, creo que CCF será engañoso, pero ese es un problema de datos y no hay forma de solucionarlo.
Re: ¿Salida incorrecta para la correlación cruzada en la plataforma de series de tiempo?Hola @peng_liu ,
Gracias por sus explicaciones adicionales. Ahora entiendo cuál fue el problema y tiene sentido. Puedo confirmar que obtengo los valores correctos si incluyo más ciclos dentro de la "ventana" de tiempo.
Ahora para el verdadero acertijo:
Mis colegas de producción quieren encontrar el lapso de tiempo entre los datos de su sistema de historial de producción (registra cosas como la temperatura del horno, velocidades de la banda, tasas de flujo, etc.) y las mediciones de control de calidad en el material. Los datos de producción se pueden exportar desde el sistema en cualquier intervalo dado, 15 min, 30 min, 4 horas, etc. Tenemos un programa de pruebas de control de calidad bastante regular de cada 4 horas. Se cree que los datos del historial de producción pueden correlacionarse con los datos de CC si se puede encontrar el desfase de tiempo correcto. Por ejemplo, se cree que la temperatura del secador en producción se correlaciona con una prueba de control de calidad, pero la prueba de control de calidad se realiza tal vez en 120 minutos. después el material ya ha pasado por la secadora. Sabemos por estudios a escala de laboratorio que ciertos pasos de procesamiento (valores como la temperatura del horno) se correlacionan con ciertos resultados de las pruebas, pero encontrar esto en los datos de producción está resultando más desafiante que en el laboratorio.
Intenté usar la correlación cruzada en la serie de tiempo para ver si puede encontrar algún tipo de retraso en los datos, así como crear manualmente múltiples columnas de retraso y usar la plataforma multivariante para buscar correlaciones entre las columnas retrasadas y los datos de control de calidad. pero no veo nada. Naturalmente, podría ser que cualquier correlación se elimine del ruido en el proceso, pero la otra opción es que ni las series de tiempo ni las plataformas multivariantes son las adecuadas para tratar de determinar el desfase de tiempo correcto.
Muchas gracias por los comentarios y pensamientos / aportes, ha sido muy útil.
¡Gracias!,
DS