如何模擬具有一定程度自相關性的過程數據?我在製造環境中工作,經常看到相對正態分佈的數據,但不一定是隨機分佈的。就過程能力計算而言,總體西格瑪(標準差)通常大於組內西格瑪(控製圖西格瑪)。發生這種情況的原因有多種,例如原材料批次切換和定期儀器校準。我正在嘗試評估一些建議的控制策略,但我不知道如何準確地模擬我的過程。如果我只使用隨機正態(),我不會得到任何我通常會在實際過程數據中看到的自相關。有什麼想法如何模擬穩定性指數不為 1 的數據嗎?這不是數據模式具有可預測週期的傳統時間序列問題。預先感謝大家的幫助。
質量和工藝工程回复:如何模擬具有一定程度自相關性的過程數據?如果你不介意玩弄JSL,那麼你可以無限期地玩模擬遊戲。 請查找附件中的幾個舊腳本,它們可能會給您一些想法。 第一個建立在回复的基礎上@peng_liu並允許您模擬 AR(2) 過程的輸出,並查看估計參數與使用的模型參數如何匹配。 也許這是顯而易見的,但無論使用多少參數,並不是每個過程都可以有效地建模為自回歸。 我總是發現博克斯和盧切諾所著的書在工業環境中非常有用。 第二個腳本模擬了他們所說的“粘性創新過程”。
回复:如何模擬具有一定程度自相關性的過程數據?@馬克貝利向我指出了這篇文章。 我查看了你的數據。 看起來您的數據可以通過所謂的 AR(1) 模型(A 的縮寫)進行充分建模一階自回歸。 它是一種描述具有自相關過程的時間序列模型。
對於AR(1)模型,使用JMP公式列進行模擬可以按以下步驟進行:
首先,擬合 AR(1) 模型,報告如下:

我將腳本包含在您的原始數據中並附上更新的數據表。
接下來,創建一個如下所示的公式列。 您需要上一個報告中的三個數字:模型摘要中的兩個參數估計值和標準差。 並看看它們是如何在公式中使用的。
現在簡單介紹一下這個公式。 首先想像一下JMP表如何計算公式,它是逐行計算的。 所以公式說,如果是第一行,只需根據樣本模擬一些數字,這裡看起來像隨機的 Normal(0,1) 就符合要求。然後,隨著行號的增加,公式根據前一行的值遞歸計算新值。 這就是 Y 的下標的作用。
我也附上成品。 您的原始數據表具有三個腳本。 模擬數據表共有三個腳本。 您可以比較它們的結果,看看模擬數據與原始數據的接近程度。

多說一句,如果你的數據更複雜,AR(1) 不再足夠,你可能需要追求更複雜的時間序列模型。 到那時,仿真不再是一件容易的事。 幸運的是,時間序列平台具有內置的模擬功能。 運行所附表中的時間序列腳本(您的表或模擬表)。 在報告中的“模型比較”中,單擊模型旁邊的紅色小三角,然後選擇“生成模擬”,這將打開一個用於模擬時間序列的對話框。 該對話框大部分應該是不言自明的,所以我不打算詳細說明。

回复:如何模擬具有一定程度自相關性的過程數據?謝謝,馬克。如果有幫助的話——這是我試圖模擬的數據類型的示例。

回复:如何模擬具有一定程度自相關性的過程數據?謝謝, @ih - 你的漂亮腳本使我能夠理解隨機多元正態()功能是如何工作的。這對於模擬多個相關因素非常有用——而且我以前沒有意識到這一點。
回复:如何模擬具有一定程度自相關性的過程數據?我道歉。 我錯了。 您不存在多重相關性(即,多個變量)。 你有一個時間序列。 讓我進一步研究一下。
回复:如何模擬具有一定程度自相關性的過程數據?經過一番調查,一些注意事項:
- 值中添加了一些噪聲,標準差似乎接近 1
- 您需要定義一個均值向量和與均值向量具有相同維度的對稱協方差矩陣。
一些例子:
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"
);
回复:如何模擬具有一定程度自相關性的過程數據?謝謝, @馬克貝利的建議。這看起來應該正是我所需要的,但恐怕我無法弄清楚如何正確實施它。首先,我只想在數據表中生成一個模擬列。我知道 sigma 內的平均值、總體過程標準差(控製圖 sigma - 在這種情況下基於移動極差)以及“自相關”值(來自分發平台中的匯總統計數據)。我還可以從 Fit Y by X 獲得過程參數相對於其自身 Lag()(一行)的相關值 - 並且我可以對不同的行滯後重複相關分析。您是否有機會幫助我理解根據我所掌握的信息我應該如何構建公式(或者讓我知道我是否完全錯過了機會)?
回复:如何模擬具有一定程度自相關性的過程數據?非常感謝, @ih ,求建議!我會嘗試一下這個和馬克的想法。
回复:如何模擬具有一定程度自相關性的過程數據?編輯:我也誤讀並給出了多重相關而不是自相關的建議。 哎呀!
我沒試過@馬克貝利的建議,我認為這可能是做同樣事情的更簡單的方法:
您可以嘗試使用主成分,為潛在變量創建隨機值,然後根據這些潛在變量計算模擬變量並添加單變量誤差。

使用這種方法,您甚至可以通過查找自己的載荷、係數、方差和誤差來製作與您自己的過程類似的數據,然後模擬數據。
這是一個例子:
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 ) )
)
)
回复:如何模擬具有一定程度自相關性的過程數據?有一個函數可以達到這個目的:
