Falsche Ausgabe für Kreuzkorrelation in Zeitreihenplattform?Hallo JMP Community,
(W10, 64-Bit, JMP Pro 15.2.1)
Ich hoffe herauszufinden, was ich falsch mache oder was ich falsch verstehe, wie JMP die Kreuzkorrelationsberechnungen in der Zeitreihenplattform durchführt. Kurz gesagt, wenn ich die Kreuzkorrelation einer Sin (x) mit einer Cos (x) -Funktion vergleiche, erhalte ich nicht die erwartete Antwort von pi / 2 (oder 90 Grad), sondern 79 Grad stattdessen.
Ich versuche, eine vereinfachte Erklärung und Beschreibung der Bedeutung der Ausgabe Zeitreihe> Kreuzkorrelation für einige Kollegen zusammenzustellen. Dazu habe ich eine einfache Tabelle mit 361 Zeilen (Werte 0-360, jede Zeile ist ein Grad oder 0,01745 Bogenmaß) und mehreren anderen Spalten erstellt, die Sin (x), Sin (x-5), Sin (berechnen) x-45), Cos (x) und eine zufällige Gleichverteilung (siehe beigefügte Tabelle Periodic_series.jmp). Der Zweck besteht darin, die Kreuzkorrelation mithilfe einfacher Triggerfunktionen zu demonstrieren, die Menschen direkter verstehen können als eine komplexe zeitabhängige Funktion wie der SeriesJ-Datensatz.
Wenn Sie das erste Skript in der Datentabelle ausführen, erhalten Sie eine grafische Darstellung der Triggerfunktionen (zufällige Uniform wird absichtlich weggelassen). Alles sieht so aus, wie es sollte.

Sie können dann das Zeitreihenskript ausführen, wobei Sin (x) die Y-Eingabe ist und die anderen Funktionen die Spalten der Eingabeliste sind, damit Sie die Kreuzkorrelationsanalyse durchführen können. Wenn Sie die Kreuzkorrelationsausgabe in eine Datentabelle umwandeln (siehe Datentabelle cross-correlation.jmp), können Sie die Korrelationswerte gegen die Verzögerung darstellen (führen Sie das erste Skript in dieser Datentabelle aus).

Auf den ersten Blick sieht dies so aus, wie es sollte: Die Kreuzkorrelation von Sin (x) mit Sin (x-5) hat einen Peak nahe -5, Sin (x) mit Sin (x-45) scheint nahe -45 zu sein und für Sin (x) mit Cos (x) ist nahe 90. Wenn Sie jedoch das Fadenkreuz verwenden, werden Sie feststellen, dass die Kreuzkorrelation zwischen Sin (x) und Cos (x) näher bei 80 liegt.

Wenn Sie das Skript ausführen: Verzögerungen in der Datentabelle abrufen, werden die Verzögerungen im Protokollfenster ausgedruckt:
Corr vs. Sin (x-5) Verzögerung in Grad = [-5]
Corr vs. Sin (x-45) Verzögerung in Grad = [-40]
"Corr vs. Cos (x) lag in deg = [79]"
"Corr vs. Rondom Uniform lag in deg = [18]"
Die einzige, die korrekt berechnet wird, ist die Verzögerung von -5. Wenn Sin (x) um -45 Grad verzögert wird, ergibt sich eine Verzögerung von -40 und nicht wie erwartet von -45. In ähnlicher Weise beträgt die Verzögerung bei Sin (x) und Cos (x) 79, wenn ich erwarten würde, dass der Wert 90 beträgt. Ich habe dies auf verschiedene Arten und mit viel mehr Zeilen versucht, um festzustellen, ob es sich um ein "Auflösungsproblem" handelt, aber ich bekomme immer wieder eine Verzögerung von etwa 80.
Entweder liefert die Berechnung nicht die richtige Verzögerung, oder ich vermisse etwas.Ich schätze, ich vermisse etwas, aber ich bin mir nicht sicher, was es ist. Ich habe einige Vorschläge aus anderen Posts befolgt und versucht, sie in der JMP-Hilfe nachzulesen Hier , aber ich kann keine Details der Berechnung für die Kreuzkorrelation finden, die erklären würden, warum eine Triggerfunktion von Sin (x) keine Verzögerung von 90 mit Cos (x) hat.
Alle Gedanken / Rückmeldungen dazu werden sehr geschätzt.
Vielen Dank!,
DS
AnalytikDatentabelleAndereBetreff: Falsche Ausgabe für Kreuzkorrelation in Zeitreihenplattform?Ich glaube, das liegt an der endlichen Stichprobengröße. Für aufeinanderfolgende Punkte auf CCF unterscheiden sich die Stichprobengrößen um 1. Ich habe 3600 weitere Zeilen hinzugefügt, den Plot erneut durchgeführt und der Peak liegt näher bei 90, auch die Amplitude liegt am Peak näher bei 1.

Betreff: Falsche Ausgabe für Kreuzkorrelation in Zeitreihenplattform?Hallo @peng_liu ,
Danke für die Rückmeldung. Ich hatte mehr Reihen ausprobiert, aber nicht so viele. Obwohl ich verstehe, wie die endliche Stichprobengröße die Berechnung beeinflussen kann, bin ich ein wenig überrascht, dass sie sich so stark auf sie auswirkt. Ich kann mir einen kleinen Unterschied vorstellen, vielleicht 88 oder 89 mit einer kleineren endlichen Menge, aber 12 zu sein, scheint ziemlich groß zu sein. Ich denke, meine Sorge ist, was ist mit realen Situationen, in denen Sie möglicherweise einen begrenzten Zeitreihendatensatz haben.
Übrigens habe ich auch einen Fehler in meiner Deg-Spalte bemerkt, der das Hinzufügen weiterer Zeilen nicht korrekt berücksichtigt hat. Die Formel sollte lauten:

Auf diese Weise laufen die Graddaten immer von -180 bis 180 (nun, mit dem kleinen Unterschied an dem einen oder anderen Ende aufgrund der Inkrementgröße).
Beispiel: Ein realer begrenzter Datensatz verfügt möglicherweise über ein Gerät, das nur fünfzehn Minuten lang jede Sekunde Daten sammelt. Das sind nur 900 Datenpunkte. Entsprechend dieser Situation würde man schließen, dass die beiden Signale eine Verzögerung von 78 haben, obwohl es tatsächlich 90 ist. Die Schlussfolgerung, dass die Signalverzögerung 78 ist, wäre falsch und würde möglicherweise dazu führen, dass jemand eine falsche Analyse der Daten durchführt. Egal was
In diesem speziellen Fall wir kennt Was die wirkliche Verzögerung ist, ist a priori, aber in realen Situationen ist das nicht immer bekannt. Ich kann mir Datensätze vorstellen, bei denen dasselbe Ereignis an verschiedenen Orten gemessen wird und die Verzögerung des Signals bestimmt werden muss, aber der Datensatz ist eher begrenzt. Basierend darauf, wie die Kreuzkorrelationsfunktion zu funktionieren scheint, kann dies zu einer falschen Schlussfolgerung führen.
Gibt es eine Möglichkeit, dies zu kompensieren oder die Berechnung, um den begrenzten Datensatz zu berücksichtigen? Könnten Sie eine andere Funktionsspalte haben, die Sie austauschen und eine Simulation des Verzögerungsbetrags durchführen, um ein Konfidenzintervall für die Verzögerung zu erhalten? Was für eine funktionale Säule wäre das?
Wenn ich die Auswertung mit der richtigen Formel erneut durchführe, um eine beliebige Anzahl von Zeilen zuzulassen, erhalte ich immer noch nicht die richtige Antwort - selbst wenn ich von einem Verzögerungswert in einen Gradwert zurückkonvertiere. Beispiel: Bei 3601 Zeilen (Werte von 0 bis 3600) erhalte ich die Verzögerungsdiagramme wie folgt:

Und wenn ich das Skript "Verzögerungen abrufen" ausführe - aber jetzt die Spalte betrachte, in der die Verzögerung wieder in Grad konvertiert wird (Formel unten basierend auf den 3601 Zeilen in der Originaltabelle), erhalte ich:

Corr vs. Sin (x-5) Verzögerung in Grad = [-4,89863926687031]
"Corr vs. Sin (x-5) Verzögerung in Verzögerung = [-49]"
Corr vs. Sin (x-45) Verzögerung in Grad = [-40,2888086642599]
"Corr vs. Sin (x-45) Verzögerung in Verzögerung = [-403]"
Corr vs. Cos (x) Verzögerung in Grad = [78.4782004998612]
"Corr vs. Cos (x) lag in lag = [785]"
Unten sehen Sie eine Darstellung von Sin (x) mit Cos (x), die um 900 und 785 Zeilen verzögert ist. Wie zu sehen ist, hat 785 nicht den richtigen Verzögerungswert, der in Zeile 900 (rote Kurve) auftritt.

Ich bekomme also immer noch nicht die richtigen Werte. Neue Datentabellen werden angehängt. Ich habe immer noch die Vermutung, dass ich etwas nicht richtig mache - vielleicht irgendwo eine falsche Formel? Ich kann nicht herausfinden, warum ich nicht die richtigen Werte erhalte.
Danke für die Hilfe!,
DS
Betreff: Falsche Ausgabe für Kreuzkorrelation in Zeitreihenplattform?Es gibt Probleme im zweiten Datensatz. So sieht Sin (x) in den zweiten Daten aus:

So sehen meine 3601 Zeilen aus:

Das erklärt, warum sich Ihr SinX- und CosX-CCF nicht ändert.
Die Stichprobengröße, die hier zählt, ist nicht die Anzahl der Beobachtungen hier, sondern die Anzahl der Zyklen. In den Originaldaten gibt es nur einen Zyklus. Um den CCF zu berechnen, muss die Reihe verschoben werden, wodurch fehlende Werte in einer Reihe entstehen, was dazu führt, dass die Stichprobenmittelwerte wild schwanken. Wenn es viele Zyklen gibt, bleibt der Mittelwert nahe Null, dem wahren Wert.
Wenn man in einer realen Situation nur einen Datenzyklus hat, glaube ich, dass CCF irreführend sein wird, aber das ist ein Datenproblem, und es gibt keine Möglichkeit, es zu beheben.
Betreff: Falsche Ausgabe für Kreuzkorrelation in Zeitreihenplattform?Hallo @peng_liu ,
Vielen Dank für Ihre weiteren Erklärungen. Ich verstehe jetzt, worum es ging und es macht Sinn. Ich kann bestätigen, dass ich die richtigen Werte erhalte, wenn ich mehr Zyklen in das Zeitfenster einbeziehe.
Nun zum eigentlichen Rätsel:
Meine Produktionskollegen möchten die Zeitverzögerung zwischen Daten aus ihrem Produktionshistorikersystem (es zeichnet Dinge wie Ofentemperatur, Bandgeschwindigkeit, Durchflussraten usw. auf) und QC-Messungen am Material ermitteln. Produktionsdaten können in jedem Intervall, 15 Minuten, 30 Minuten, 4 Stunden usw. aus dem System exportiert werden. Wir haben einen ziemlich regelmäßigen QC-Testplan von alle 4 Stunden. Es wird angenommen, dass die Daten des Produktionshistorikers mit den QC-Daten korreliert werden können, wenn die richtige Zeitverzögerung gefunden werden kann. Beispielsweise wird angenommen, dass die Trockner-Temperatur in der Produktion mit einem QC-Test korreliert, aber der QC-Test wird möglicherweise 120 Minuten lang durchgeführt nach dem Das Material ist bereits durch den Trockner gegangen. Wir wissen aus Studien im Labormaßstab, dass bestimmte Verarbeitungsschritte (Werte wie Ofentemperatur) mit bestimmten Testergebnissen korrelieren, aber dies in Produktionsdaten zu finden, ist schwieriger als im Labor.
Ich habe versucht, die Kreuzkorrelation in der Zeitreihe zu verwenden, um festzustellen, ob eine Verzögerung in den Daten gefunden werden kann, sowie mehrere Verzögerungsspalten manuell zu erstellen und mithilfe der multivariaten Plattform nach Korrelationen zwischen den verzögerten Spalten und den QC-Daten zu suchen. aber ich sehe nichts. Natürlich könnte es sein, dass dabei jede Korrelation aus dem Rauschen herausgewaschen wird, aber die andere Option ist, dass weder die Zeitreihen noch die multivariaten Plattformen die richtigen sind, um zu versuchen, die richtige Zeitverzögerung zu bestimmen.
Vielen Dank für das Feedback und die Gedanken / Beiträge, es war sehr hilfreich.
Vielen Dank!,
DS