ある程度の自己相関を備えたプロセスデータをシミュレートするにはどうすればよいでしょうか?私は製造環境で働いており、比較的正規に分布しているデータをよく目にしますが、必ずしもランダムに分布しているわけではありません。工程能力の計算に関しては、全体シグマ (標準偏差) が内部シグマ (管理図シグマ) よりも大きくなることがよくあります。これは、原材料のロットの切り替えや定期的な機器の校正など、さまざまな理由で発生する可能性があります。いくつかの提案された制御戦略を評価しようとしていますが、プロセスを正確にシミュレートする方法がわかりません。Random Normal() を使用するだけでは、実際のプロセス データで通常見られるような自己相関はまったく得られません。安定性指数が 1 ではないデータをシミュレートする方法はありますか?これは、データ パターンに予測可能な期間が存在する従来の時系列問題ではありません。皆様のご協力に感謝いたします。
品質およびプロセスエンジニアリングRe: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?JSL をいじることを気にしない場合は、シミュレーション ゲームを無制限にプレイできます。 いくつかのアイデアが得られるかもしれないいくつかの古いスクリプトを添付してください。 最初のものはからの返信に基づいています@peng_liuまた、AR(2) プロセスからの出力をシミュレートし、推定されたパラメーターが使用されるモデル パラメーターとどのように一致するかを確認できます。 当然のことかもしれませんが、使用されるパラメーターの数に関係なく、すべてのプロセスを自己回帰として有効にモデル化できるわけではありません。 いつも見つけてたボックスとルセノの本産業分野では非常に役立ちます。 2 番目のスクリプトは、「スティッキー イノベーション プロセス」と呼ばれるものをシミュレートします。
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?@Mark_Baileyこの投稿を私に教えてくれました。 そしてあなたのデータを見ました。 データは、いわゆる AR(1) モデル (A の略) によって適切にモデル化できるようです。オーダー 1 の自己回帰。 自己相関のあるプロセスを記述する時系列モデルの一種です。
AR(1) モデルの場合、JMP 式列を使用してシミュレートするには、次の手順を実行します。
まず、AR(1) モデルを当てはめると、次のようなレポートが得られます。

元のデータにスクリプトを含め、更新されたデータ テーブルを添付します。
次に、以下のような数式列を作成します。 前のレポートからの 3 つの数値、つまり 2 つのパラメーター推定値と、モデルの概要の標準偏差が必要です。 そして、それらが式の中でどのように使用されるかを見てください。
ここで、この公式について少し説明します。 まず、JMP テーブルが式を行ごとにどのように評価するかを想像してください。 したがって、数式は、それが最初の行である場合は、サンプルに従っていくつかの数値をシミュレートするだけです。ここでは、ランダムな Normal(0,1) が法案に適合するように見えます。その後、行番号が増加するにつれて、式は前の行の値に基づいて新しい値を再帰的に計算します。 これが Y の下付き文字の動作です。
完成品もお付けします。 元のデータ テーブルには 3 つのスクリプトがあります。 シミュレートされたデータ テーブルには 3 つのスクリプトがあります。 また、結果を比較して、シミュレートされたデータが元のデータにどの程度近いかを確認できます。

もう一言、データがより複雑で AR(1) では不十分な場合は、より複雑な時系列モデルを使用する必要があるかもしれません。 その頃には、シミュレーションはもはや簡単な作業ではなくなります。 幸いなことに、Time Series プラットフォームにはシミュレーション機能が組み込まれています。 添付されたテーブル (独自のテーブルまたはシミュレートされたテーブル) で時系列スクリプトを実行します。 レポートの「モデル比較」内のモデルの横にある赤い三角形をクリックし、「シミュレーションの生成」を選択すると、時系列をシミュレートするダイアログが表示されます。 ダイアログのほとんどは説明を見れば分かるはずなので、詳しくは説明しません。

Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?ありがとう、マーク。少しでもお役に立てれば、これは私がシミュレートしようとしているデータの種類の例です。

Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?ありがとう、 @ih - あなたの気の利いたスクリプトのおかげで、Random Multivariate Normal() 機能がどのように機能するかを理解できました。これは、複数の相関関係のある要因をシミュレートするのに最適です。これは、私が以前に気づいたことではありませんでした。
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?謝罪します。 私は間違っていた。 多重相関 (つまり、複数の変数) がありません。 時系列がありますね。 もっと調べてみましょう。
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?いくつかの調査の後、いくつかの注意事項があります。
- 値には多少のノイズが追加されており、標準偏差は 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"
);
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?ありがとう、 @Mark_Bailey提案のために。これはまさに私が必要としているもののように思えますが、残念ながら、それを適切に実装する方法を理解するのに苦労しています。まず、データテーブルにシミュレートされた列を 1 つ生成したいと思います。私はシグマ内の平均、全体のプロセス標準偏差 (管理図シグマ - この状況では移動範囲に基づいています)、および「自己相関」値 (分散プラットフォームの概要統計から) を知っています。また、Fit Y by X から、それ自体 (1 行単位) の Lag() に対するプロセス パラメーターの相関値を取得することもできます。また、さまざまな行のラグに対して相関分析を繰り返すこともできます。私が持っている情報を踏まえて式をどのように組み立てるべきかを理解するのを手伝ってもらえませんか (または、私がまったく理解していない場合は教えてください)。
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?どうもありがとう、 @ih 、ご提案に!これとマークのアイデアの両方を試してみます。
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?編集:私も読み間違えて、自己相関ではなく多重相関を提案しました。 おっと!
試したことはありません@Mark_Baileyの提案、それは同じことを行うより簡単な方法かもしれないと思います:
主成分を使用して潜在変数のランダム値を作成し、それらの潜在変数に基づいてシミュレートされた変数を計算して、一変量誤差を追加してみるとよいでしょう。

この方法を使用すると、独自の荷重、係数、分散、誤差を見つけて、それと同様のデータをシミュレートすることで、独自のプロセスに似たデータを作成することもできます。
以下に例を示します。
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 ) )
)
)
Re: ある程度の自己相関を伴うプロセス データをシミュレートするにはどうすればよいですか?この目的のための関数があります。
