Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Ich arbeite in einer Fertigungsumgebung und sehe oft Daten, die relativ normal verteilt sind, aber nicht unbedingt zufällig verteilt sind.Das Gesamt-Sigma (Standardabweichung) ist im Hinblick auf Prozessfähigkeitsberechnungen häufig größer als das Innerhalb-Sigma (Kontrollkarten-Sigma).Dies kann verschiedene Gründe haben, z. B. Wechsel der Rohmaterialchargen und regelmäßige Gerätekalibrierungen.Ich versuche, einige vorgeschlagene Kontrollstrategien zu bewerten, kann aber nicht herausfinden, wie ich meinen Prozess genau simulieren kann.Wenn ich nur Random Normal() verwende, erhalte ich keine der Autokorrelationen, die ich normalerweise mit den tatsächlichen Prozessdaten sehen würde.Irgendwelche Ideen, wie man Daten simulieren kann, bei denen der Stabilitätsindex nicht 1 ist?Hierbei handelt es sich nicht um ein herkömmliches Zeitreihenproblem, bei dem das Datenmuster einen vorhersehbaren Zeitraum aufweist.Vielen Dank im Voraus für Ihre Unterstützung.
Qualitäts- und VerfahrenstechnikBetreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Wenn es Ihnen nichts ausmacht, mit JSL herumzuspielen, können Sie das Simulationsspiel unbegrenzt spielen. Im Anhang finden Sie einige alte Skripte, die Ihnen vielleicht Anregungen geben. Der erste baut auf der Antwort von auf @peng_liu und ermöglicht Ihnen, die Ausgabe eines AR(2)-Prozesses zu simulieren und zu sehen, wie die geschätzten Parameter mit den verwendeten Modellparametern übereinstimmen. Vielleicht ist das Offensichtliche gesagt, aber nicht jeder Prozess kann sinnvoll als autoregressiv modelliert werden, egal wie viele Parameter verwendet werden. Ich habe immer gefunden das Buch von Box und Luceno sehr nützlich im industriellen Kontext. Das zweite Skript simuliert einen sogenannten „Sticky Innovation Process“.
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?@Mark_Bailey hat mich auf diesen Beitrag hingewiesen. Und ich habe mir Ihre Daten angesehen. Es sieht so aus, als ob Ihre Daten durch ein sogenanntes AR(1)-Modell, kurz für A, angemessen modelliert werden können utoregressiv von Order One. Es handelt sich um eine Art Zeitreihenmodell, das einen Prozess mit Autokorrelation beschreibt.
Für das AR(1)-Modell kann die Simulation mithilfe der JMP-Formelspalte durch die folgenden Schritte erfolgen:
Passen Sie zunächst das AR(1)-Modell an und hier ist der Bericht:

Ich füge das Skript in Ihre Originaldaten ein und füge die aktualisierte Datentabelle bei.
Erstellen Sie als Nächstes eine Formelspalte wie die folgende. Sie benötigen drei Zahlen aus dem vorherigen Bericht: zwei Parameterschätzungen und die Standardabweichung in der Modellzusammenfassung. Und sehen Sie, wie sie in der Formel verwendet werden.
Nun ein wenig zu dieser Formel. Stellen Sie sich zunächst vor, wie eine JMP-Tabelle die Formel Zeile für Zeile auswertet. Die Formel besagt also: Wenn es sich um die erste Zeile handelt, simulieren Sie einfach eine Zahl gemäß der Stichprobe. Hier sieht es so aus, als ob ein zufälliges Normal (0,1) die Anforderungen erfüllt. Wenn dann die Zeilennummer zunimmt, berechnet die Formel rekursiv neue Werte basierend auf dem Wert aus der vorherigen Zeile. Das ist es, was dieser Index von Y bewirkt.
Ich lege auch das fertige Produkt bei. Ihre ursprüngliche Datentabelle enthält drei Skripte. Die simulierte Datentabelle verfügt über drei Skripte. Und Sie können die Ergebnisse vergleichen, um zu sehen, wie nah die simulierten Daten an Ihren Originaldaten sind.

Noch ein Wort: Wenn Ihre Daten komplizierter sind und AR(1) nicht mehr ausreicht, müssen Sie möglicherweise nach komplizierteren Zeitreihenmodellen suchen. Dann ist die Simulation keine leichte Aufgabe mehr. Glücklicherweise verfügt die Time Series-Plattform über integrierte Simulationsfunktionen. Führen Sie das Zeitreihenskript in den angehängten Tabellen aus, entweder Ihrer eigenen oder der simulierten. Klicken Sie im Bericht im Modellvergleich neben dem Modell auf das rote Dreieck und wählen Sie „Simulation generieren“ aus. Dadurch gelangen Sie zu einem Dialogfeld zum Simulieren von Zeitreihen. Der Dialog sollte größtenteils selbsterklärend sein, daher werde ich nicht näher darauf eingehen.

Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Danke, Mark.Wenn es überhaupt hilft – hier ist ein Beispiel für die Art von Daten, die ich zu simulieren versuche.

Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Danke, @ich h - Ihr raffiniertes Skript hat es mir ermöglicht, zu verstehen, wie die Funktion „Random Multivariate Normal()“ funktionieren sollte.Dies ist großartig, um mehrere korrelierte Faktoren zu simulieren – und das war mir vorher nicht bewusst.
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Ich entschuldige mich. Ich hab mich geirrt. Sie haben keine Mehrfachkorrelation (d. h. mehr als eine Variable). Sie haben eine Zeitreihe. Lassen Sie mich näher darauf eingehen.
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Nach einiger Recherche einige Anmerkungen:
- Den Werten kommt etwas Rauschen hinzu, die Standardabweichung scheint nahe bei 1 zu liegen
- Sie müssen einen Mittelwertvektor und eine symmetrische Kovarianzmatrix mit denselben Abmessungen wie ein Mittelwertvektor definieren.
Einige Beispiele:
Names Default To Here( 1 );
//Make a dataset from a mean vector, covariance matrix, and number of rows
Make Correlated Table = Function({mv, cm, nr, name = "Data Table"}, {dt},
randmvnMat = Random Multivariate Normal( mv, cm, nr );
dt = New Table( name );
dt << Set Matrix(randmvnMat);
dt << Scatterplot Matrix( Y( dt << Get Column References ), Matrix Format( "Lower Triangular" ), Density Ellipses( 1 ) );
dt
);
dt1 = Make Correlated Table(
mv = [0 1 1 0],
cv = [
1 0 0 0,
0 1 0 0,
0 0 1 0,
0 0 0 1
],
nr = 100,
name = "No Correlation"
);
dt2 = Make Correlated Table(
mv = [0 10 20],
cv = [
1 1 0,
1 1 0,
0 0 1
],
nr = 20,
name = "1-2 Correlated"
);
dt3 = Make Correlated Table(
mv = [0 10 20],
cv = [
1 1 1,
1 1 1,
1 1 1
],
nr = 20,
name = "1-2-3 Correlated"
);
dt4 = Make Correlated Table(
mv = [0 10 20],
cv = [
1.0 0.8 -0.5,
0.8 1.0 0.0,
-0.5 0.0 1.0
],
nr = 20,
name = "Some Correlation"
);
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Danke, @Mark_Bailey für den Vorschlag.Das scheint genau das zu sein, was ich brauche, aber ich fürchte, ich habe Probleme damit, herauszufinden, wie ich es richtig umsetzen kann.Zunächst möchte ich nur eine simulierte Spalte in einer Datentabelle generieren.Ich kenne den Mittelwert der Gesamtprozessstandardabweichung innerhalb von Sigma (Kontrolldiagramm-Sigma – das in dieser Situation auf dem gleitenden Bereich basiert) und den „Autokorrelation“-Wert (aus den zusammenfassenden Statistiken in der Verteilungsplattform).Ich kann auch einen Korrelationswert für den Prozessparameter gegenüber der Lag() von ihm selbst (um eine Zeile) aus „Fit Y byGibt es eine Chance, dass Sie mir helfen könnten, anhand der mir vorliegenden Informationen zu verstehen, wie ich die Formel strukturieren soll (oder lassen Sie mich wissen, ob ich den Überblick einfach völlig vermisse)?
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Vielen Dank, @ich h , für den Vorschlag!Ich werde sowohl dies als auch Marks Idee ausprobieren.
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Bearbeiten: Ich habe es auch falsch verstanden und einen Vorschlag für Multikorrelation anstelle von Autokorrelation gemacht. Hoppla!
Ich habe es nicht versucht @Mark_Bailey Ich denke, das könnte ein einfacherer Weg sein, dasselbe zu tun:
Sie könnten versuchen, Hauptkomponenten zu verwenden, Zufallswerte für latente Variablen zu erstellen, dann Ihre simulierten Variablen basierend auf diesen latenten Variablen zu berechnen und einen univariaten Fehler hinzuzufügen.

Mit dieser Methode können Sie sogar Daten erstellen, die Ihrem eigenen Prozess ähneln, indem Sie Ihre eigenen Ladungen, Koeffizienten, Varianzen und Fehler ermitteln und dann genau diese Daten simulieren.
Hier ist ein Beispiel:
New Table( "Example Correlated Data",
Add Rows( 100 ),
New Column( "Prin 1", Numeric, "Continuous", Format( "Best", 12 ),
Formula( Random Normal( 0, 1 ) )
),
New Column( "Prin 2", Numeric, "Continuous", Format( "Best", 12 ),
Formula( Random Normal Mixture( [-1, 2], [0.3, 0.6], [0.25, 0.75] ) )
),
New Column( "X1", Numeric, "Continuous", Format( "Best", 12 ),
Formula( :Prin 1 * 20 + :Prin 2 * 1 + 5 + Random Normal( 0, 3 ) )
),
New Column( "X2", Numeric, "Continuous", Format( "Best", 12 ),
Formula( :Prin 1 * 2 + :Prin 2 * 1 + 3 + Random Normal( 0, 2 ) )
),
New Column( "X3", Numeric, "Continuous", Format( "Best", 12 ),
Formula( :Prin 1 * -1 + :Prin 2 * 0.3 + 200 + Random Normal( 0, 0.2 ) )
)
)
Betreff: Wie simuliert man Prozessdaten mit einem gewissen Grad an Autokorrelation?Dafür gibt es eine Funktion:
