Output errato per la correlazione incrociata nella piattaforma delle serie temporali?Ciao comunità JMP,
(W10, 64 bit, JMP Pro 15.2.1)
Spero di scoprire cosa sto facendo di sbagliato o cosa ho frainteso sul modo in cui JMP esegue i calcoli di correlazione incrociata nella piattaforma Time Series. In breve, quando confronto la correlazione incrociata di una funzione Sin(x) con una funzione Cos(x), non ottengo una risposta di pi greco/2 (o 90 gradi) come mi aspetterei, ottengo 79 gradi Invece.
Sto cercando di mettere insieme una spiegazione e una descrizione semplificata di cosa significa per alcuni colleghi l'output Serie temporali > Correlazione incrociata. Per fare ciò, ho creato una semplice tabella con 361 righe (valori 0-360, ogni riga è un grado o 0,01745 radianti) e diverse altre colonne che calcolano Sin(x), Sin(x-5), Sin( x-45), Cos(x), e una distribuzione casuale uniforme (vedi tabella allegata Periodic_series.jmp). Lo scopo è dimostrare la correlazione incrociata utilizzando semplici funzioni trigonometriche che le persone possano comprendere in modo più diretto rispetto a una funzione complessa dipendente dal tempo, come il set di dati SeriesJ.
Se esegui il primo script nella tabella dati, ottieni un grafico delle funzioni trigonometriche (l'uniforme casuale viene omessa di proposito). Tutto sembra come dovrebbe.

È quindi possibile eseguire lo script delle serie temporali, dove Sin(x) è l'input Y e le altre funzioni sono le colonne dell'elenco di input in modo da poter eseguire l'analisi di correlazione incrociata. Trasformando l'output della correlazione incrociata in una tabella dati (vedere la tabella dati cross-correlation.jmp), è possibile tracciare i valori di correlazione rispetto al ritardo (eseguire il primo script in questa tabella dati).

A prima vista, sembra come dovrebbe: la correlazione incrociata di Sin(x) con Sin(x-5) ha il suo picco vicino a -5, Sin(x) con Sin(x-45) sembra essere vicino a -45 , e per Sin(x) con Cos(x) è vicino a 90. Tuttavia, se usi il mirino, vedrai che la correlazione incrociata tra Sin(x) e Cos(x) è più vicina a 80.

Infatti, se esegui lo script: Get lags nella tabella dati, stampa i ritardi nella finestra Log:
"Ritardo Corr vs. Sin(x-5) in gradi = [-5]"
"Ritardo Corr vs. Sin(x-45) in gradi = [-40]"
"Ritardo Corr vs. Cos(x) in gradi = [79]"
"Ritardo Corr vs. Rondom Uniforme in gradi = [18]"
L'unico calcolato correttamente è il ritardo di -5. Il ritardo di Sin(x) di -45 gradi risulta in un ritardo di -40, non di -45 come previsto. Allo stesso modo, con Sin(x) e Cos(x), il ritardo è 79, quando mi aspetterei che il valore sia 90. L'ho provato in diversi modi e con molte più righe per vedere se si tratta di un problema di "risoluzione", ma continuo a riscontrare un ritardo di circa 80.
O il calcolo non restituisce il ritardo corretto oppure mi manca qualcosa.Immagino che mi manchi qualcosa, ma non sono sicuro di cosa sia. Ho seguito alcuni suggerimenti da altri post e ho provato a leggerli nella guida di JMP Qui , ma non riesco a trovare alcun dettaglio del calcolo per la correlazione incrociata che spieghi perché una funzione trigonometrica di Sin(x) non ha un ritardo di 90 con Cos(x).
Qualsiasi pensiero/feedback su questo è molto apprezzato.
Grazie!,
DS
Modellazione statistica avanzataIngegneria della qualità e dei processiRi: Output errato per la correlazione incrociata nella piattaforma delle serie temporali?CIAO @peng_liu ,
Grazie per gli ulteriori suggerimenti. Proverò il modo più fluido per vedere se questo può aiutare a trovare un intervallo di tempo ragionevole. Spero di poter trovare qualcosa di utile.
La mia preoccupazione è che o i dati siano disturbati nel tempo e le correlazioni vadano perse o, come hai detto, lo schema di campionamento/test cancella qualsiasi correlazione.
Apprezzo davvero il tuo feedback e il tuo contributo.
Grazie!,
Dierich
Ri: Output errato per la correlazione incrociata nella piattaforma delle serie temporali?Alcuni pensieri...
È possibile che non vi sia un ritardo esatto e che i tuoi dati siano rumorosi. Ad esempio, il ritardo effettivo è casuale all'interno di un intervallo. Prova a livellare le tue serie utilizzando la media mobile semplice prima di calcolare il CCF. È possibile utilizzare la media mobile semplice nella piattaforma Serie temporali o "Media mobile..." nella formula di colonna.
È possibile che i segnali correlati vengano saltati a causa dello schema di campionamento. Quindi non c'è molto nei dati per trovare il ritardo.
Ri: Output errato per la correlazione incrociata nella piattaforma delle serie temporali?CIAO @peng_liu ,
Grazie per le tue ulteriori spiegazioni. Ora capisco qual era il problema e ha senso. Posso confermare che ottengo i valori corretti se includo più cicli nella "finestra" temporale.
Veniamo ora al vero enigma:
I miei colleghi di produzione vogliono trovare l'intervallo di tempo tra i dati del loro sistema storico della produzione (registra elementi come la temperatura del forno, la velocità del nastro, le portate, ecc.) e le misurazioni del controllo qualità sul materiale. I dati di produzione possono essere esportati dal sistema a qualsiasi intervallo, 15 minuti, 30 minuti, 4 ore, ecc. Abbiamo un programma di test QC abbastanza regolare ogni 4 ore. Si ritiene che i dati storici della produzione possano essere correlati con i dati del QC se si riesce a trovare il lasso di tempo corretto. Ad esempio, si ritiene che la temperatura dell'essiccatore in produzione sia correlata a un test di controllo qualità, ma il test di controllo qualità viene eseguito forse 120 minuti Dopo il materiale è già passato attraverso l'asciugatrice. Sappiamo da studi su scala di laboratorio che alcune fasi di lavorazione (valori come la temperatura del forno) sono correlate a determinati risultati dei test, ma trovarlo nei dati di produzione si sta rivelando più difficile che in laboratorio.
Ho provato a utilizzare la correlazione incrociata nelle serie temporali per vedere se è possibile trovare qualche tipo di ritardo nei dati, nonché a creare manualmente più colonne di ritardo e utilizzare la piattaforma multivariata per cercare correlazioni tra le colonne ritardate e i dati QC, ma non vedo nulla. Naturalmente, potrebbe darsi che qualsiasi correlazione venga cancellata dal rumore nel processo, ma l’altra opzione è che né le serie temporali né le piattaforme multivariate siano quelle giuste per cercare di determinare il lasso di tempo corretto.
Grazie MOLTO per il feedback e i pensieri/input, è stato molto utile.
Grazie!,
DS
Ri: Output errato per la correlazione incrociata nella piattaforma delle serie temporali?Ci sono problemi nella seconda serie di dati. Questo è l'aspetto di Sin(x) nei secondi dati:

Ecco come appaiono le mie 3601 righe:

Questo spiega perché il tuo CCF SinX e CosX non cambia.
La dimensione del campione che conta qui non è il numero di osservazioni, ma il numero di cicli. Nei dati originali, c'è solo un ciclo. Per calcolare il CCF, è necessario spostare le serie, il che creerà valori mancanti in una serie, il che farà sì che le medie del campione oscillino notevolmente. Se ci sono molti cicli, la media rimarrà vicina allo zero, il valore vero.
Se in una situazione reale si ha solo un ciclo di dati, credo che CCF sarà fuorviante, ma si tratta di un problema di dati e non c'è modo di risolverlo.
Ri: Output errato per la correlazione incrociata nella piattaforma delle serie temporali?CIAO @peng_liu ,
Grazie per il feedback. Avevo provato più righe, ma non ne ho provate così tante. Anche se capisco come la dimensione finita del campione possa influenzare il calcolo, sono un po' sorpreso che abbia un impatto così significativo. Posso immaginare una piccola differenza, forse 88 o 89 con un insieme finito più piccolo, ma essere 12 fuori sembra piuttosto grande. Immagino che la mia preoccupazione riguardi le situazioni del mondo reale in cui potresti avere un set di dati di serie temporali limitato.
A proposito, ho notato anche un errore nella mia colonna Deg che non teneva correttamente conto dell'aggiunta di più righe. La formula dovrebbe essere:

In questo modo, i dati relativi ai gradi andranno sempre da -180 a 180 (beh, con la piccola differenza da un lato o dall'altro a causa della dimensione dell'incremento).
Ad esempio, per un set di dati limitato nel mondo reale, potresti avere un dispositivo che raccoglie dati ogni secondo per soli quindici minuti. Sono solo 900 punti dati. In base a questa situazione, si potrebbe concludere che i due segnali hanno un ritardo di 78, quando in realtà è 90. Concludere che il ritardo del segnale sia 78 sarebbe errato e potrebbe indurre qualcuno a iniziare a fare un'analisi sbagliata dei dati. Non importa cosa
In questo caso particolare, noi Sapere qual è il vero ritardo a priori, ma in situazioni reali non è sempre noto. Posso immaginare set di dati in cui lo stesso evento viene misurato in luoghi diversi ed è necessario determinare il ritardo nel segnale, ma il set di dati è piuttosto limitato. In base a come sembra funzionare la funzione di correlazione incrociata, ciò potrebbe portare a una conclusione errata.
C'è un modo per compensare questo o per il calcolo per tenere conto del set di dati limitato? Potresti avere qualche altra colonna funzionale da scambiare ed eseguire una simulazione dell'importo del ritardo per ottenere un intervallo di confidenza sul ritardo? Che tipo di colonna funzionale sarebbe?
Se rieseguo la valutazione con la formula corretta per consentire un numero arbitrario di righe, non ottengo comunque la risposta giusta, anche quando riconverto da un valore di ritardo a un valore di gradi. Ad esempio, con 3601 righe (valori da 0 a 3600), ottengo i grafici dei ritardi in questo modo:

E quando eseguo lo script Get lags, ma ora guardo la colonna in cui il ritardo viene riconvertito in gradi (formula seguente basata sulle 3601 righe nella tabella originale), ottengo:

"Ritardo Corr vs. Sin(x-5) in gradi = [-4,89863926687031]"
"Corr vs. Sin(x-5) ritardo in ritardo = [-49]"
"Ritardo Corr vs. Sin(x-45) in gradi = [-40,2888086642599]"
"Corr vs. Sin(x-45) ritardo in ritardo = [-403]"
"Ritardo Corr vs. Cos(x) in gradi = [78,4782004998612]"
"Ritardo Corr vs. Cos(x) in ritardo = [785]"
Di seguito è riportato un grafico di Sin(x) con Cos(x) ritardato di 900 e 785 righe. Come si può vedere, 785 non ha il valore di ritardo corretto, che si verifica sulla riga 900 (curva rossa).

Quindi, non riesco ancora a ottenere i valori giusti. In allegato le nuove tabelle dei dati. Ho ancora la sensazione che non sto facendo qualcosa di giusto, forse c'è una formula sbagliata da qualche parte? Non riesco a capire perché non ottengo i valori giusti.
Grazie per l'aiuto!,
DS
Ri: Output errato per la correlazione incrociata nella piattaforma delle serie temporali?Credo che sia dovuto alla dimensione finita del campione. Per punti consecutivi su CCF, le dimensioni del campione differiscono di 1. Ho aggiunto altre 3600 righe, ho rifatto la trama e il picco è più vicino a 90, inoltre anche l'ampiezza è più vicina a 1 al picco.
