主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

コピュラを使用した従属確率変数のシミュレーション

この例では,変数間に複雑な関係がある場合や,個体変数が異なる分布から成る場合に,コピュラを使用して多変量分布からデータを生成する方法を示します。

MATLAB®は,ランダムな入力やノイズが含まれるシミュレーションを実行するための理想的なツールです。统计和机器学习工具箱™ には、多くの一般的な一変量分布に従って一連の乱数データを作成するための関数が用意されています。本ツールボックスには多変量正規分布や多変量 t 分布などの多変量分布からランダム データを生成するための関数もあります。ただし、すべての周辺分布についての多変量分布や、各変数が別々の分布に由来する場合の多変量分布を生成する方法は組み込まれていません。

最近,コピュラはシミュレーションモデルで一般的になってきました。コピュラは,変数間の依存関係を記述する関数であり,相関がある多変量データをモデル化する分布を作成する方法を提供します。コピュラを使うと,データ解析者は一変量周辺分布を指定することにより多変量分布を作成し,次に,特定のコピュラを選択し,変数間の相関構造を与えることができます。より高次元の分布と同様に,二変量の分布も可能です。この例では统计和机器学习工具箱を使用して,MATLABで従属多変量乱数データを生成するためにコピュラを使用する方法を説明します。

シミュレーション入力間の依存関係

モンテカルロシミュレーションの設計で決めることの1つは,ランダムな入力に対する確率分布の選択です。それぞれの個体変数に分布を選択することは,多くの場合簡単です。ただし,入力の間にどのような依存関係があるかを判断するのは,難しい可能性があります。理想的には,シミュレーションへの入力データは,モデル化される実際の量間の依存関係について既知であることを,反映しなければなりません。ただし,シミュレーションにおいて任意の依存関係について基準となる情報がほとんどなかったり,あるいはまったくない場合もあります。そのような場合,モデルの感度を判断するために,さまざまな可能性を試すことが有効です。

ただし,分布が標準多変量分布ではない場合,依存関係をもつランダムな入力を実際に作成することは,難しくなることがあります。さらに,標準多変量分布のいくつかでは,依存関係に非常に制限のあるタイプに限りモデル化できます。入力を独立にすることは,常に可能であり容易な選択ですが必ずしも目的にかなったものではなく,誤った結論を導く可能性があります。

たとえば,財務リスクのモンテカルロシミュレーションには,保険損失のさまざまな原因を表す無作為な入力をもつ場合があります。これらの入力は,対数正規分布の確率変数としてモデル化されることがあります。当然疑問となるのは,これら2つの入力間の依存関係がシミュレーションの結果にどのように影響するかということです。実際,同じランダムな条件が両原因に影響することが,実際のデータからわかることがあります。すなわち,シミュレーションにおいて,誤った結論につながる可能性を低減することができます。

対数正規分布を示す独立した確率変数のシミュレーションは自明です。最も簡単な方法は,関数lognrndを使用することです。ここで,関数mvnrndを使用してn個のペアの独立した正規確率変数を生成してから,それらを累乗します。ここで使われている共分散行列は対角形であること,つまりZの列間に独立性があることに注意してください。

n = 1000;σ= 5;SigmaInd =σ。^2 .* [1;0 1]
SigmaInd = 0.2500 00 0.2500
ZInd = mvnrnd([0 0], SigmaInd, n); / /输入XInd = exp (ZInd);情节(XInd (: 1) XInd (:, 2),“。”);轴平等的;轴([0 5 0 5]);包含(X1的);ylabel (“X2”);

相関がある二変量対数正規確率変数は,非ゼロの非対角項をもつ共分散行列を使って,生成することも容易です。

ρ= 7;SigmaDep =σ。^2 .* [1;ρ1]
SigmaDep = 0.2500 0.1750 0.1750 0.2500
ZDep = mvnrnd([0 0], SigmaDep, n); / /XDep = exp (ZDep);

さらに散布図を表示することで,これら2つの二変量分布間の違いがわかります。

情节(XDep (: 1) XDep (:, 2),“。”);轴平等的;轴([0 5 0 5]);包含(X1的);ylabel (“X2”);

X2の大きな値(小さな値の場合も同様)に対してX1の値が大きい場合,2番目のデータセットに相関の傾向があることは明らかです。この依存は,基本的な二変量正規分布の相関関係パラメーターρによって決まります。シミュレーションから導き出された結論は,依存関係をもつX1とX2が生成されたかどうかでかなり異なります。

この場合,二変量対数正規分布を利用することができます。周辺分布が“異なる“対数正規分布である場合は,より高次元に容易に一般化されます。他の多変量分布も考えられますが,たとえば,多変量t分布とディリクレ分布はそれぞれ,t分布とベータ分布する従属確率変数をシミュレートするために使用されます。しかし,簡単な多変量分布は多くはなく,境界がすべて同じ族になる(あるいは,厳密に同じ分布にもなる)場合に,適用が限られます。これは,多くの状況で実質的な制限となることがあります。

依存する二変量分布を作成するための一般的な方法

上記の二変量対数正規分布を作成する構造は簡単ですが,これはより一般に適用できる方法を説明するのに役立ちます。まず,二変量正規分布からの値のペアを生成します。これら2変量には,統計的な依存関係があり,それぞれは,正規周辺分布をもちます。次に,周辺分布を対数正規分布に変更して,それぞれの変数に変換(指数関数)を別々に適用します。変換された変数には,やはり統計的な依存関係があります。

適切な変換が見つかれば,この方法は一般化されて,他の周辺分布をもつ,二変量の従属しているランダムなベクトルを作成できます。実際,累乗法のみを使う場合程簡単ではありませんが,そのような変換を作成する一般的な方法があります。

定義では,ここでφと示される正規累積分布関数(CDF)を標準の正規確率変数に適用すると,区間[0,1]上で一様である確率変数になります。これはZが標準正規分布をもつ場合,U =φ(Z)の累積分布関数が以下のようになることでわかります。

公关U < =情况}={公关{φ(Z) < =情况}=公关{Z <φ= ^(1)(情况)}=情况,

さらに,これはU(0,1)の確率変数の累積分布関数です。シミュレーションによって得られた正規分布と変換された値のヒストグラムは,以下の事実を示します。

n = 1000;z = normrnd (0, 1, n, 1);嘘(z, -3.75: .5:3.75);xlim ([4 4]);标题('1000模拟N(0,1)随机值');包含(“Z”);ylabel (“频率”);

u = normcdf (z);嘘(u . 05。1:.95);标题('1000模拟N(0,1)值转换为U(0,1)');包含(“U”);ylabel (“频率”);

一変量乱数発生の理論によると,任意の分布Fの累積分布逆関数をU(0, 1)の確率変数に適用すると,Fとまったく同じ分布の確率変数が生成されます。これは,逆関数法として知られています。証明は,以前のケースに対する前述の証明とは本質的に逆になります。次のヒストグラムは,ガンマ分布への変換を示しています。

x = gaminv (u 2 1);嘘(x,二十五分:.5:9.75);标题('1000模拟N(0,1)值转换为Gamma(2,1)');包含(“X”);ylabel (“频率”);

この2ステップの変換を二変量標準正規分布の各変数に適用して,任意の周辺分布をもつ従属確率変数を作成できます。変換は各成分に別々に作用するので,2つの結果の確率変数は同じ周辺分布にはなりません。変換は,次の式で定義されます。

Z = [Z1 Z2] ~ N([0 0],[1 rho;U = [PHI(Z1) PHI(Z2)] X = [G1(U1) G2(U2)]

ここでG1とG2は2つの可能な異なる分布の累積分布逆関数です。たとえば,t(5)とγ(2,1)の周辺分布をもつ二変量分布からランダムなベクトルを生成します。

n = 1000;ρ= 7;Z = mvnrnd([0 0], [1 rho;ρ1],n);U = normcdf (Z);X = [gaminv(U(:,1),2,1) tinv(U(:,2),5)];

このプロットは,周辺分布と依存関係の両方を示すために,散布図と同時にヒストグラムも示します。

[n1, ctr1] =嘘(X (: 1), 20);[n2, ctr2] =嘘(X (:, 2), 20);次要情节(2,2,2);情节(X (: 1) X (:, 2),“。”);轴([0 12 -8 8]);甘氨胆酸h1 =;标题(“1000模拟相关的t和Gamma值”);包含(“X1 ~γ(2,1)”);ylabel (“X2 ~ t(5)”);次要情节(2、2、4);酒吧(ctr1 n1 1);轴([0 12 -max(n1)*1.1 0]);轴(“关闭”);甘氨胆酸h2 =;次要情节(2 2 1);barh (ctr2 n2 1);轴([-max(n2)*1.1 0 -8 8]);轴(“关闭”);甘氨胆酸h3 =;h1。Position = [0.35 0.35 0.55 0.55];h2。位置=[。35.0.55.15];h3。位置=[。1.35 . 15.55]; colormap([.8 .8 1]);

順位相関係数

この構造のX1とX2間の依存は,基本的な二変量正規分布の相関関係パラメーターρによって決まります。ただし,X1とX2の線形相関がρであるということは成り立ちません。たとえば,オリジナルの対数正規分布の場合,その相関の閉形式は次のようになります。

软木(X1, X2) = (exp(ρ*σ^ 2)- 1)。/ (exp(σ^ 2)- 1)

ρが1ではない場合は,ρより厳密に小さくなります。上記のガンマ/ t分布のような,より一般的な場合には,X1とX2の線形相関は,ρでの表現が困難または不可能です。しかし,シミュレーションを使用すると,同じ効果が起こることを示すことができます。

これは,線形相関係数は確率変数間の”線形”の依存関係を表すためであり,非線形変換がこれらの確率変数に適用されるときに,線形相関は保存されません。代わりに,ケンドールのτまたはスピアマンのρなどの順位相関係数は,より適切です。

概略を説明すると,これらの順位相関は,他の大きい値(または小さい値)に関連する1つの確率変数の大きい値(または小さい値)に対して,順位を測定します。しかし,線形相関係数とは違い,これらは,順位についての関連のみを測ります。その結果,順位相関は単調な変換では保存されます。特に,前述の转换法は,順位相関を保存します。したがって,二変量正規分布Zの順位相関がわかると,変換した最終的な確率変数の順位相関が正確に決まります。基礎となる二変量正規分布をパラメーター表現するにはρが必要なことに変わりはありませんが,ケンドールのτやスピアマンのρは,どの周辺分布を選択しても不変なので,確率変数間の依存関係の記述ではより有用です。

二変量正規分布の場合,ケンドールのτまたはスピアマンのρと線形相関係数ρには次の簡単な対1写像があります。

rho = (2/pi)*arcsin(rho) or rho = sin(Tau *pi/2) rho = (6/pi)*arcsin(rho) or rho = 2*sin(rho_s*pi/6)
次要情节(1 1 1);ρ= 1:.01:1;τ= 2 * asin(ρ)。/π;rho_s = 6。* asin (rho. / 2)。/π;情节(ρ,τ,“- - -”, rho_sρ“- - -”,[-1 1],[-1 1],凯西:”);轴([-1 1 -1 1]);包含(的ρ);ylabel (等级相关系数的);传奇(肯德尔”年代τ斯皮尔曼”年代rho_s“位置”“西北”);

したがって,Z1とZ2の線形相関に対して,それらの周辺分布にかかわらず,正しいρパラメーター値を選択することによって,X1とX2の指定する順位相関を作成することは容易です。

多変量正規分布の場合,スピアマンの順位相関は線形相関とほとんど同じです。しかし,最後に確率変数に変換すると,このことは成り立ちません。

コピュラ分布

上記の説明の最初のステップは,コピュラ,明確にはガウス型コピュラとして知られるものを定義します。二変量コピュラは2つの確率変数の確率分布であり,それぞれの周辺分布は一様です。これら2つの変数は,完全に独立であるか,確定的に関連(例:U2 = U1)があるか,あるいはこれらの中間的なものです。二変量ガウス型コピュラの族は,線形相関行列ρ=[1ρ;ρ1]によってパラメーター表現されます。U1とU2は,ρが±1に近づくと線形依存性に近づき,ρがゼロに近づくと完全な独立に近づきます。

さまざまなレベルのρに対してシミュレートされた乱数値の散布図は,ガウス型コピュラのさまざまな可能性の範囲を示しています。

n = 500;Z = mvnrnd([0 0], [1.8;1。8),n);U = normcdf (Z, 0,1);次要情节(2 2 1);情节(U (: 1), U (:, 2),“。”);标题(ρ= 0.8的);包含(‘U1’);ylabel (“U2”);Z = mvnrnd([0 0], [1.1;1。1,n);U = normcdf (Z, 0,1);次要情节(2,2,2);情节(U (: 1), U (:, 2),“。”);标题(ρ= 0.1的);包含(‘U1’);ylabel (“U2”);Z = mvnrnd([0 0], [1 - 1;-.1, n);U = normcdf (Z, 0,1);次要情节(2、2、3);情节(U (: 1), U (:, 2),“。”);标题(ρ= -0.1的);包含(‘U1’);ylabel (“U2”);Z = mvnrnd([0 0], [1 -.8;-.8 1], n);U = normcdf (Z, 0,1);次要情节(2、2、4);情节(U (: 1), U (:, 2),“。”);标题(ρ= -0.8的);包含(‘U1’);ylabel (“U2”);

U1とU2の間の依存関係は,X1 = G (U1)とX2 = G (U2)の周辺分布とは完全に別です。X1とX2は,任意の周辺分布でも与えられ,さらに同じ順位相関をもちます。これは,コピュラの主な利点の1つです。依存関係と周辺分布をこのように別々に特定することが可能になります。

tコピュラ

さまざまなコピュラ族は,二変量t分布から始め,対応するt累積分布関数を使って変換することによって作成できます。二変量t分布は,線形相関行列ρと自由度νでパラメーター表現されます。こうして,たとえば,それぞれ自由度1と5をもつ多変量t分布に基づき,t(1)コピュラまたはt(5)コピュラを記述できます。

さまざまなレベルのρに対してシミュレートされた乱数値の散布図は,t(1)コピュラのさまざまな可能性の範囲を示しています。

n = 500;ν= 1;T = mvtrnd([1.8;.8 1], nu, n);U = tcdf (T,ν);次要情节(2 2 1);情节(U (: 1), U (:, 2),“。”);标题(ρ= 0.8的);包含(‘U1’);ylabel (“U2”);T = mvtrnd([1 .1;1 1], nu, n);U = tcdf (T,ν);次要情节(2,2,2);情节(U (: 1), U (:, 2),“。”);标题(ρ= 0.1的);包含(‘U1’);ylabel (“U2”);T = mvtrnd([1 - 1;-.1 1], n);U = tcdf (T,ν);次要情节(2、2、3);情节(U (: 1), U (:, 2),“。”);标题(ρ= -0.1的);包含(‘U1’);ylabel (“U2”);T = mvtrnd([1 -.8;-.8 1], n);U = tcdf (T,ν);次要情节(2、2、4);情节(U (: 1), U (:, 2),“。”);标题(ρ= -0.8的);包含(‘U1’);ylabel (“U2”);

tコピュラは,ちょうどガウス型コピュラがもつように,U1とU2に対する一様な周辺分布をもちます。tコピュラの成分間の順位相関 tau または rho_s は、ガウス・コピュラの rho とも同じ関数です。しかし、これらのプロットが示すように、t(1) コピュラは、これらの成分が同じ順位相関をもつ場合でも、ガウス型コピュラとはかなり異なります。この違いは、それらの依存関係の構造にあります。予想どおり、自由度パラメーター nu が大きくなるにつれて、t(nu) コピュラは対応するガウス型コピュラに近づきます。

ガウス型コピュラと同様に,任意の周辺分布はtコピュラに適用できます。たとえば,自由度1のtコピュラを使って,Gam(2, 1)とt(5)周辺分布をもつ二変量分布から,ランダムなベクトルを再び生成できます。

次要情节(1 1 1);n = 1000;ρ= 7;ν= 1;T = mvtrnd([1;Rho 1], nu, n);U = tcdf (T,ν);X = [gaminv(U(:,1),2,1) tinv(U(:,2),5)];[n1, ctr1] =嘘(X (: 1), 20);[n2, ctr2] =嘘(X (:, 2), 20); subplot(2,2,2); plot(X(:,1),X(:,2),“。”);轴([0 15 -10 10]);甘氨胆酸h1 =;标题(“1000模拟相关的t和Gamma值”);包含(“X1 ~γ(2,1)”);ylabel (“X2 ~ t(5)”);次要情节(2、2、4);酒吧(ctr1 n1 1);轴([0 15 -max(n1)*1.1 0]);轴(“关闭”);甘氨胆酸h2 =;次要情节(2 2 1);barh (ctr2 n2 1);轴([-max(n2)*1.1 0 -10 10]);轴(“关闭”);甘氨胆酸h3 =;h1。Position = [0.35 0.35 0.55 0.55];h2。位置=[。35.0.55.15];h3。位置=[。1.35 . 15.55]; colormap([.8 .8 1]);

ガウス型コピュラに基づき以前に作成された二変量のガンマ/ t分布と比較して,t(1)コピュラに基づきここで作成された分布は,同じ周辺分布と変数間の同じ順位相関をもちますが,非常に異なる依存構造をもちます。これは,多変量分布は,周辺分布またはそれらの相関によって一意に定義されないということを示しています。アプリケーションで特定のコピュラの選択は,実際の観測されるデータに基づくことがあります。あるいは,入力の分布に対するシミュレーションの結果の感度を決める方法として,別のコピュラが使用されることもあります。

より高次元のコピュラ

ガウス・コピュラとtコピュラは,楕円コピュラとして知られています。楕円コピュラをより高次元に一般化することは容易です。たとえば,以下のように,ガウス型コピュラを使用して,γ(2,1),β- (2,2),t(5)周辺分布をもつ三変量分布からのデータをシミュレートします。

次要情节(1 1 1);n = 1000;Rho = [1 4 .2;1。4。8;2 -。8 1];Z = mvnrnd([0 0 0], Rho, n);U = normcdf (Z, 0,1);X = [gaminv (U(: 1)、2、1)betainv (U (:, 2), 2, 2) tinv (U (:, 3), 5)];plot3 (X (: 1) X (:, 2), X (:, 3),“。”);网格;视图([15]-55年);包含(‘U1’);ylabel (“U2”);zlabel (U3的);

線形相関パラメーターρと,たとえば,ケンドールのτの相関は,ここで使用される相関行列ρの各要素に対して成り立つことに注意してください。データの標本化順位相関は,理論的な値にほとんど等しいことを確かめることができます。

tauTheoretical = 2π* asin(ρ)。/
tauTheoretical = 1.0000 0.2620 0.1282 0.2620 1.0000 0.5903 0.1282 0.5903 1.0000
tauSample = corr (X,“类型”“假象”
tauSample = 1.0000 0.2655 0.1060 0.2655 1.0000 0.6076 0.1060 0.6076 1.0000

コピュラと経験的な周辺分布

コピュラを使って従属多変量データをシミュレートするには,以下の項目を指定する必要があることを確認しました。

1) copula族(和任何形状参数),2)变量之间的等级相关性,3)每个变量的边际分布

株式収益のデータセットが2つあり,現在のデータと同じ分布に従う入力を使ってモンテカルロシミュレーションを実行するとします。

负载stockreturns脑袋=大小(股票,1);次要情节(2,1,1);嘘(股票(:1)10);包含(X1的);ylabel (“频率”);次要情节(2,1,2);嘘(股票(:,2),10);包含(“X2”);ylabel (“频率”);

これら2つのデータのベクトルは同じ長さですが,それは重要ではありません。

各データセットを別々にパラメトリックモデルで近似でき,それらの推定を周辺分布として使用できます。しかし,パラメトリックモデルは,十分に適応性がないことがあります。代わりに,経験的モデルを周辺分布として使用できます。累積分布逆関数を計算する方法のみが必要です。

これらのデータセットの経験的な累積分布逆関数は,次の値の位置にステップがある階層型関数です。1 /头,2 /脑袋,…1。ステップの高さは,並べ替えられたデータです。

invCDF1 =排序(股票(:1));n1 =长度(股票(:1));invCDF2 =排序(股票(:,2));n2 =长度(股票(:,2));次要情节(1 1 1);楼梯(invCDF1(1:脑袋)/脑袋,“b”);持有;楼梯(invCDF2(1:脑袋)/脑袋,“r”);持有;传奇(X1的“X2”);包含(“累积概率”);ylabel (“X”);

別のコピュラと相関を試み,シミュレートするとします。ここで,かなり大きな負の相関関係パラメーターをもつ二変量t(5)コピュラを使用します。

n = 1000;ρ=。8;ν= 5;T = mvtrnd([1;Rho 1], nu, n);U = tcdf (T,ν);X = [invCDF1(装天花板(n1 * U (: 1))) invCDF2(装天花板(n2 * U (:, 2))));[n1, ctr1] =嘘(X (: 1), 10);[n2, ctr2] =嘘(X (:, 2), 10);次要情节(2,2,2); plot(X(:,1),X(:,2),“。”);轴([-3.5 3.5 -3.5 3.5]);甘氨胆酸h1 =;标题(“1000个模拟相关值”);包含(X1的);ylabel (“X2”);次要情节(2、2、4);酒吧(ctr1 n1 1);轴([-3.5 3.5 -max(n1)*1.1 0]);轴(“关闭”);甘氨胆酸h2 =;次要情节(2 2 1);barh (ctr2 n2 1);轴([-max(n2)*1.1 0 -3.5 3.5]);轴(“关闭”);甘氨胆酸h3 =;h1。Position = [0.35 0.35 0.55 0.55];h2。位置=[。35.0.55.15];h3。位置=[。1.35 . 15.55]; colormap([.8 .8 1]);

シミュレートされたデータの散布図脇にあるヒストグラムは,オリジナルのデータに対するヒストグラムを平滑化したものです。値はオリジナルデータから取得され,各データセットに観測値が100個しかないため,シミュレートされたデータは多少離散的です。これを解決する1つの方法は,できる限り正規分布に従った少量のランダムな変動を,シミュレートされた最終値に追加することです。これは,経験的な累積分布逆関数を平滑化したものを使用するのと同等です。