3つの相関した一様分布のランダム変数を生成する


15

私たちが持っていると仮定します

X 2UNIFnは0 1

X1unif(n,0,1),
X2unif(n,0,1),

ここで、unif(n,0,1)はサイズnの一様ランダムサンプルであり、

Y=X1,

Z=0.4X1+10.4X2.

この場合、と相関はです。Z 0.4YZ0.4

これを3つの変数、、に拡張するにはどうすればよいですか?X 2 X 3X1X2X3


読みやすくするために質問を編集しました。すべてが正常であることを確認してください。あなたの質問に関して、どのような意味で手続きを延長しますか?相関関係は2つのランダム変数に対して定義されているので、私があなたの言うことを理解するのは明確ではありません。
ocram

3
は均一ではないため、その結果を一般化しようとしている場合、3つの相関した均一なRVを生成しようとしているようには見えません。X 1 a X 1 + b X 2 + c X 3の間の相関を計算する方法について疑問がありますか?Zバツ1aバツ1+bバツ2+cバツ3
MånsT

我々きたと仮定X 2X 3、U N I F nは0 1 、及びY = F X 2X 3Z = F X 1X 2X 3。では、YZは何ですか?バツ1バツ2バツ3  あなたはnfn01Y=fバツ2バツ3Z=fバツ1バツ2バツ3YZ
user9292

6
{Distributions of correlated uniforms}{Copulas}
枢機

4
なぜnは議論に入るのですか?X1とX2が単変量のランダム変数である場合、それらは単に[0,1]で一様ではありませんか?
マイケルR.チャーニック

回答:


12

質問にはコメントに記載されているいくつかのエラーが含まれています。質問で定義されているように、Zは均一ではなく、指定された相関もありません。

枢機はコピュラに言及しており、それが最も一般的な方法です。ただし、相関ユニフォームを取得するための非常に簡単な方法がいくつかあります(これは、さまざまな種類のコピュラへの単なるショートカットと見なすことができます)。

それでは、相関ユニフォームのペアを取得するいくつかの方法から始めましょう。

1)2つのユニフォームを追加すると、結果は均一ではなく三角形になります。ただし、結果の変数のcdfを変換として使用して、結果を均一に戻すことができます。もちろん、結果はもはや線形相関していません。

(0,2)上の対称三角形を標準均一に変換するR関数を次に示します。

t2u = function(x) ifelse(x<1, x^2, 2-(2-x)^2)/2

ユニフォームを与えることを確認しましょう

u1 = runif(30000)
u2 = runif(30000)
v1 = t2u(u1+u2)

ここに画像の説明を入力してください

そして、それはu1とu2と相関しています:

> cor(cbind(u1,u2,v1))
            u1          u2        v1
u1 1.000000000 0.006311667 0.7035149
u2 0.006311667 1.000000000 0.7008528
v1 0.703514895 0.700852805 1.0000000

均一性への単調変換のため、線形ではありません

ここに画像の説明を入力してください

これをツールとして使用すると、3つの等相関ユニフォームを取得するための追加変数を生成できます。

u3 = runif(30000)
v2 = t2u(u1+u3)
v3 = t2u(u2+u3)

cor(cbind(v1,v2,v3))
          v1        v2        v3
v1 1.0000000 0.4967572 0.4896972
v2 0.4967572 1.0000000 0.4934746
v3 0.4896972 0.4934746 1.0000000

v変数間の関係はすべて次のようになります。

ここに画像の説明を入力してください

-

2番目の選択肢は、混合物を生成することです。ユニフォームを合計する代わりに、固定確率でそれらを取ります。

例えば

z = ifelse(rbinom(30000,1,.7),u1,u2)

cor(cbind(u1,z))
          u1         z
u1 1.0000000 0.7081533
z  0.7081533 1.0000000

ここに画像の説明を入力してください

再びこれを使用して、複数の相関ユニフォームを生成できます。

-

3番目の簡単なアプローチは、相関法線を生成し、均一性に変換することです。

n1=rnorm(30000)
n2=rnorm(30000)
n3=rnorm(30000)
x=.6*n1+.8*n2
y=.6*n2+.8*n3
z=.6*n3+.8*n1
cor(cbind(x,y,z))

          x         y         z
x 1.0000000 0.4763703 0.4792897
y 0.4763703 1.0000000 0.4769403
z 0.4792897 0.4769403 1.0000000

それで、均一に変換します。

w1 = pnorm(x)
w2 = pnorm(y)
w3 = pnorm(z)
cor(cbind(w1,w2,w3))
          w1        w2        w3
w1 1.0000000 0.4606723 0.4623311
w2 0.4606723 1.0000000 0.4620257
w3 0.4623311 0.4620257 1.0000000

ここに画像の説明を入力してください

方法2と3の利点の1つは、相関関係のあるものを選択するのに十分な多様性があることです(ここの例のように等相関する必要はありません)。

もちろん、他にもさまざまなアプローチがありますが、これらはすべて迅速かつ簡単です。

トリッキーな部分は、望ましい母集団相関を正確に取得することです。相関ガウス分布が必要な場合ほど単純ではありません。乱数のペアを生成し、均一に分散し、相関させることでのQuantibexの答え は、ここで3番目の方法を修正するアプローチを提供します。


グレン_b。ありがとう、非常に美しくて興味深い答えです!
user9292

3番目のアプローチの0.6と0.8がどこから来たのかわかりません。
マヌエル

ρρNi+1ρ2NjNiNjρNi1ρ2NjXYZ

2

X1,X2ZX1 0.40.4YY=0.4X1+1(0.4)2X2

ρcos23cos0

これにより、ベクトルをその直交成分に分解するのと同じ方法で、系列をその成分に分解する方法が開始されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.