¿Salida incorrecta para la correlación cruzada en la plataforma de series temporales?Hola comunidad JMP,
(W10, 64 bits, JMP Pro 15.2.1)
Espero descubrir 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 cambio.
Estoy tratando de elaborar una explicación y una descripción simplificadas de lo que significa el resultado Serie temporal > Correlación cruzada para algunos colegas. Para hacer eso, he hecho 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 puedan entender de manera más directa que una función compleja que depende del tiempo, como el conjunto de datos SeriesJ.
Si ejecuta el primer script en la tabla de datos, obtendrá un gráfico de las funciones trigonométricas (el uniforme aleatorio se omite a propósito). Todo parece 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 parece 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 usas la mira, verás 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]"
"Retraso Corr vs. Cos(x) en grados = [79]"
"Corr vs. Rondom Retraso uniforme en grados = [18]"
El único que se calcula correctamente es el desfase de -5. Un retraso de Sin(x) de -45 grados da como resultado un retraso de -40, no -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. Probé esto de varias maneras diferentes y con muchas más filas para ver si se trata de un problema de "resolución", pero sigo teniendo un retraso de alrededor de 80.
O el cálculo no arroja el retraso correcto o me falta algo.Supongo que me falta algo, pero no estoy seguro de qué es. Seguí algunas sugerencias de otras publicaciones e intenté leerlas 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 idea/comentario sobre esto es muy apreciado.
¡Gracias!,
DS
Modelado estadístico avanzadoIngeniería de Calidad y ProcesosRe: ¿Salida incorrecta para correlación cruzada en plataforma de series temporales?Hola @peng_liu ,
Gracias por las sugerencias adicionales. Probaré con la versión más suave para ver si esto puede ayudar a encontrar un retraso de tiempo razonable. Ojalá pueda encontrar algo útil.
Mi preocupación es que los datos tengan ruido en el tiempo y las correlaciones se pierdan o, como usted mencionó, el esquema de muestreo/prueba borre cualquier correlación.
Realmente aprecio sus comentarios y aportes.
¡Gracias!,
dierich
Re: ¿Salida incorrecta para correlación cruzada en plataforma de series temporales?Algunos pensamientos...
Es posible que no haya un retraso exacto y que sus datos tengan ruido. Por ejemplo, el retraso efectivo es aleatorio dentro de un rango. Intente suavizar su serie utilizando un promedio móvil simple antes de calcular el CCF. Puede utilizar la media móvil simple en la plataforma de series temporales o la "media móvil..." en la fórmula de columna.
Es posible que las señales correlacionadas se omitan debido a su esquema de muestreo. Entonces no hay mucho en los datos para que puedas encontrar el retraso.
Re: ¿Salida incorrecta para correlación cruzada en plataforma de series temporales?Hola @peng_liu ,
Gracias por tus más explicaciones. Ahora entiendo cuál era el problema y tiene sentido. Puedo confirmar que obtengo los valores correctos si incluyo más ciclos dentro de la "ventana" de tiempo.
Ahora el verdadero enigma:
Mis colegas de producción quieren encontrar el desfase de tiempo entre los datos de su sistema histórico de producción (registra aspectos como la temperatura del horno, las velocidades de la cinta, los caudales, etc.) y las mediciones de control de calidad del material. Los datos de producción se pueden exportar desde el sistema en cualquier intervalo determinado, 15 min, 30 min, 4 horas, etc. Tenemos un programa de pruebas de control de calidad bastante regular cada 4 horas. Se cree que los datos del historial de producción se pueden correlacionar con los datos de control de calidad 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 aproximadamente 120 minutos. después el material ya pasó 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 difícil 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 multivariada 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 desaparezca del ruido en el proceso, pero la otra opción es que ni las series temporales ni las plataformas multivariadas sean las adecuadas para intentar determinar el desfase temporal correcto.
Muchas gracias por los comentarios y opiniones/aportes, ha sido muy útil.
¡Gracias!,
DS
Re: ¿Salida incorrecta para correlación cruzada en plataforma de series temporales?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 3601 filas:

Eso explica por qué su CCF de SinX y CosX no cambia.
El tamaño de la muestra que importa aquí no es el número de observaciones, sino el número de ciclos. En los datos originales, solo hay un ciclo. Para calcular el CCF, es necesario cambiar las series, lo que creará valores faltantes en una serie, lo que provocará que las medias muestrales oscilen violentamente. Si hay muchos ciclos, la media se mantendrá cercana a cero, el valor verdadero.
Si en una situación real uno tiene solo un ciclo de datos, creo que el CCF será engañoso, pero ese es un problema de datos y no hay manera de solucionarlo.
Re: ¿Salida incorrecta para correlación cruzada en plataforma de series temporales?Hola @peng_liu ,
Gracias por la respuesta. Probé más filas, pero no probé tantas. Aunque entiendo cómo el tamaño finito de la muestra podría 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 tener 12 menos parece bastante grande. Supongo que mi preocupación es qué pasa con las situaciones del mundo real en las que es posible tener un conjunto de datos de series temporales 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 debería ser:

De esta manera, los datos de grados siempre irán de -180 a 180 (bueno, con una pequeña diferencia en un extremo u otro debido al tamaño del incremento).
Por ejemplo, en el caso 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. Son sólo 900 puntos de datos. Según 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 retraso de la señal es 78 sería incorrecto y posiblemente llevaría a alguien a comenzar a realizar un análisis incorrecto de los datos. No importa qué
En este caso particular, nosotros saber cuál es el verdadero retraso a priori, pero en situaciones reales, eso no siempre se sabe. Puedo imaginar conjuntos de datos en los que 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 lugar a una conclusión incorrecta.
¿Hay alguna manera 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 pueda intercambiar y hacer una simulación del monto del 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 gráficos de retraso como este:

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

"Corr vs. Sin(x-5) retraso en grados = [-4.89863926687031]"
"Corr vs. Sin(x-5) retraso en retraso = [-49]"
"Corr vs. Sin(x-45) retraso en grados = [-40.2888086642599]"
"Corr vs. Sin(x-45) retraso en retraso = [-403]"
"Retraso Corr vs. Cos(x) en grados = [78.4782004998612]"
"Corr vs. Cos(x) retraso en retraso = [785]"
A continuación se muestra un gráfico de Sin(x) con Cos(x) retrasado por 900 y 785 filas. Como puede verse, 785 no tiene 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. ¿Quizás hay 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 correlación cruzada en plataforma de series temporales?Creo que se debe al tamaño finito de la muestra. Para puntos consecutivos en CCF, los tamaños de muestra difieren en 1. Agregué 3600 filas más, hice el gráfico nuevamente y el pico está más cerca de 90, además la amplitud también está más cerca de 1 en el pico.
