主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

코퓰러를사용하여종속확률변수시뮬레이션하기

이예제에서는변수사이에복잡한관계가있거나개별변수의분포가각기다른경우코퓰러를사용하여다변량분포에서데이터를생성하는방법을보여줍니다。

MATLAB®은임의의입력값이나잡음을포함해서시뮬레이션하기에이상적인툴입니다。统计和机器学习工具箱™는여러일반적인일변량분포에따라난수데이터수열을생성하는함수를제공합니다。이툴박스에는다변량정규분포및다변량吨분포와같은다변량분포에서난수데이터를생성하는몇가지함수도포함되어있습니다。그러나모든주변분포에대한다변량분포를생성하는방법이나각변수의분포가다를때다변량분포를생성하는방법은제공하지않습니다。

최근에는코퓰러를시뮬레이션모델에많이사용하고있습니다。코퓰러는변수간의종속성을설명하는함수이며,상관관계가있는다변량데이터를모델링하기위해분포를생성하는방법을제공합니다。코퓰러를사용하면데이터분석가가주변일변량분포를지정하고변수간상관관계구조를제공하는특정코퓰러를선택하여다변량분포를생성할수있습니다。이변량분포뿐만아니라더높은차원의분포도가능합니다。이예제에서는统计和机器学习工具箱가제공하는코퓰러함수를사용하여MATLAB에서종속다변량난수데이터를생성하는방법에대해설명합니다。

시뮬레이션입력값간의종속성

몬테카를로시뮬레이션을설계할때는임의의입력값에대해어떤확률분포를선택할지결정해야합니다。각각의개별변수에대한분포를선택하는것은대개간단하지만,입력값간에어떠한종속성이있는지를결정하는것은그렇지않을수있습니다。이상적으로는시뮬레이션의입력데이터는모델링하려는실제수치간에파악된종속성을반영해야합니다。그러나시뮬레이션할때종속성을파악할수있는정보가거의또는전혀없을수있으며,이러한경우모델의민감도를결정하기위해여러다른가능성을시험해보는것이좋습니다。

그렇지만임의의입력값이표준다변량분포가아닌분포형태를띠는경우종속성이있는입력값을실제로생성하기가어려울수있습니다。더나아가표준다변량분포중일부는매우한정된유형의종속성만모델링할수있습니다。입력값을독립변수로만드는게항상가능하며간단한선택이긴하지만이방법이타당하지않은경우도있고잘못된결론을초래할수도있습니다。

예를들어,재무위험에대한몬테카를로시뮬레이션에는보험손실의여러요인을나타내는임의의입력값이있을수있습니다。이러한입력값은로그정규확률변수로모델링될수있습니다。이경우필요한질문은두입력값간의종속성이시뮬레이션결과에어떠한영향을미치는가입니다。실제로,동일한임의조건이두요인에모두영향을미친다는것이실제데이터를통해확인될경우시뮬레이션에서이를무시하면잘못된결론을초래할수있습니다。

독립로그정규확률변수에대한시뮬레이션은간단합니다。가장간단한방법은lognrnd함수를사용하는것입니다。여기서는mvnrnd함수를사용하여독립정규확률변수를Ñ개쌍생성한후거듭제곱하겠습니다。여기에사용되는공분산행렬은대각행렬로서Ž의열은서로독립적입니다。

n = 1000;标准差= 0.5;。SigmaInd =西格玛^ 2 * [1 0。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]);xlabel(X1的);ylabel(“X2”);

종속이변량로그정규확률변수도0이아닌비대각선항을갖는공분산행렬을사용하여쉽게생성할수있습니다。

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

두번째산점도플롯은이두이변량분포간의차이를보여줍니다。

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

두번째데이터세트에서X1의큰값이X2의큰값과연관되는경향이더많으며작은값들도마찬가지임을명확히알수있습니다。이러한종속성은기본이변량정규분포의상관모수RHO로결정됩니다。시뮬레이션에서도출되는결론은X1 X2및가종속성을가지고생성되었는지여부에따라달라질수있습니다。

이경우에는이변량로그정규분포가간단한해결책이며,더고차원으로일반화하거나주변분포가서로다른로그정규분포일때일반화하기도쉽습니다。다른다변량분포도존재합니다。예를들어,다변량t분포및디리클레분포는각각종속t확률변수및베타확률변수를시뮬레이션하는데사용됩니다。그러나단순다변량분포는그목록이길지않으며,주변성분이모두동일한분포군(또는정확히동일한분포)에있는경우에만적용됩니다。이는많은경우실질적인제한이될수있습니다。

종속이변량분포를생성하기위한더욱일반적인방법

위에서설명한이변량로그정규분포생성은간단하지만일반적으로적용가능한방법을보여줍니다。먼저,이변량정규분포에서값쌍을생성합니다。이두변수간에는통계적종속성이있으며각변수는정규주변분포를가집니다。다음으로,변환(지수함수)을각변수에개별적으로적용하여주변분포를로그정규분포로변경합니다。변환된변수는계속해서통계적종속성을가집니다。

적합한변환을찾을수있는경우이방법을일반화하여다른주변분포를갖는종속이변량확률벡터를생성할수있습니다。실제로,지수(거듭제곱)만큼간단하지는않지만이러한변환을생성하는일반적인방법이있습니다。

정의에따르면,정규CDF(여기서는PHI로표시됨)를표준정규확률변수에적용하면구간[0,1]에서균일한확률변수가생성됩니다。이를확인하기위해,Z가표준정규분포를가지면U = PHI(Z)의CDF는다음과같으며

镨【U <= U0} = PR {PHI(Z)<= U0} = PR {Z <= PHI ^( -  1)(U0)} = U0,

이것이U(0,1)확률변수의CDF입니다。시뮬레이션으로생성된정규값과변환된값일부를히스토그램으로그려보면이사실을확인할수있습니다。

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

u = normcdf (z);嘘(u . 05。1:.95);标题('转化到U(0,1)1000模拟N(0,1)的值');xlabel(“U”);ylabel(“频率”);

이제,일변량난수생성이론을빌려서분포˚F의역CDF를U(0,1)확률변수에적용하면분포가정확히˚F인확률변수가생성됩니다。이를역산법이라고합니다。이증명은근본적으로앞사례에서설명한증명과반대입니다。다음은감마분포로의변환을보여주는또다른히스토그램입니다。

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

두단계로구성된이변환은표준이변량정규분포의각변수에적용될수있으며,이경우임의주변분포를갖는종속확률변수가생성됩니다。변환이각성분에대해개별적으로동작하기때문에결과로생성되는두확률변수가동일한주변분포를가지지않아도됩니다。변환은다음과같이정의됩니다。

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

여기서G1 G2및는두개의서로다를수있는분포의역CDF입니다。예를들어,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值”);xlabel(“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)

RHO가정확히1인경우를제외하고RHO보다엄밀히작습니다。위의伽玛/吨생성처럼더욱일반적인사례에서X1 X2과간의선형상관을RHO로표현하기는어렵거나불가능합니다。단,시뮬레이션을사용하면동일한효과가발생하는것을나타낼수있습니다。

그이유는선형상관계수가확률변수간의선형종속성을나타내기때문이며,비선형변환이이확률변수에적용된경우선형상관이유지되지않습니다。대신,켄달의타우(Kendall的tau)와스피어만의로(斯皮尔曼的RHO)와같은순위상관계수가더적합합니다。

간단히말해,이러한순위상관은한확률변수의큰값또는작은값이다른확률변수의큰값또는작은값과연관된정도를측정합니다。그러나선형상관계수와다르게오로지순위의측면에서연관성을측정합니다。그결과,순위상관이모든단조변환에서유지됩니다。특히,방금설명한변환방법은순위상관을유지합니다。따라서,이변량정규분포Z의순위상관을파악하면최종변환된확률변X의수순위상관을정확히확인할수있습니다。기본이변량정규분포를모수화하기위해ρ가여전히필요하지만확률변수간의종속성을설명할때는켄달의타우나스피어만의로가더유용합니다。이둘은주변분포의선택에따라변하지않기때문입니다。

이변량정규분포의경우켄달의타우또는스피어만의로간에단순한일대일매핑이있으며선형상관계ρ수는다음과같습니다。

tau蛋白=(2 / PI)*反正弦(RHO)或RHO = SIN(TAU * pi / 2之间)rho_s =(6 / PI)*反正弦(RHO / 2)或哌= 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]);xlabel('RHO');ylabel(“秩相关系数”);传奇(肯德尔”年代τ斯皮尔曼”年代rho_s“位置”“西北”);

따라서,Z1 Z2과간의선형상관에올바른RHO모수값을선택하여주변분포에관계없이X1 X2과간에원하는순위상관을쉽게생성할수있습니다。

참고로다,변량정규분포의경우스피어만의순위상관이선형상관과거의동일합니다。하지만,최종확률변수로변환한후에는그렇지않습니다。

코퓰러

위에서설명한생성의첫번째단계에서는코퓰러,특히가우스코퓰러라고하는분포를정의합니다。이변량코퓰러는간단히말해서각각균일한주변분포를가지는두개의확률변수에대한확률분포입니다。이두변수는완전히독립적이거나,결정적으로연관되어있거나(즉,U2 = U1),아니면이둘사이의중간일수있습니다。이변량가우스코퓰러군은선형상관행렬인ρ=[1ρ;ρ1]로모수화됩니다。ρ가+ / - 1에가까워질수록U1과U2는선형종속성을띠게되고가ρ0에가까워질수록완전한독립성을띠게됩니다。

다양한수준의ρ에대해시뮬레이션된난수값을산점도플롯으로그려보면여러범위의가우스코퓰러가가능함을알수있습니다。

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的);xlabel(‘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的);xlabel(‘U1’);ylabel(“U2”);Z = mvnrnd([0 0], [1 - 1;-.1, n);U = normcdf (Z, 0,1);次要情节(2、2、3);情节(U (: 1), U (:, 2),'。');标题('RHO = -0.1');xlabel(‘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的);xlabel(‘U1’);ylabel(“U2”);

U1 U2과간의종속성은주변분포X1 = G(U1)및X2 = G(U2)와는완전히별개입니다。X1및X2에는임의의주변분포가주어질수있으며,여전히동일한순위상관을가집니다。이는코퓰러의주요장점중하나입니다。즉,코퓰러에서는이렇게종속성과주변분포를별도로지정할수있습니다。

Ť코퓰러

이변량吨분포에서시작하고그에대응하는吨CDF를사용하여변환을수행함으로써다른코퓰러군을생성할수있습니다。이변량吨분포는선형상관행렬的Rho와자유도NU로모수화됩니다。따라서예를들어,T(1)또는吨(5)코퓰러를각각자유도가1과5인다변량吨를기반으로하여나타낼수있습니다。

다양한수준의RHO에대해시뮬레이션된난수값을산점도플롯으로그려보면여러범위의吨(1)코퓰러가가능함을알수있습니다。

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

t코퓰러는가우스코퓰러와마찬가지로U1및U2에대해균일한주변분포를가집니다。t코퓰러의성분간순위상관τ또는rho_s도가우스코퓰러와동일한의ρ함수입니다。그러나이플롯에서볼수있듯이t(1)코퓰러는성분이동일한순위상관을갖는경우에도가우스코퓰러와상당히다릅니다。그차이는각각의종속성구조에있습니다。자유도모수ν가커지면t(ν)코퓰러는그에대응하는가우스코퓰러에가까워집니다。

가우스코퓰러와마찬가지로,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值”);xlabel(“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]);

앞에서가우스코퓰러를기반으로생성한이변량伽玛/吨분포와비교했을때,여기서吨(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),'。');网格;视图([ -  55,15]);xlabel(‘U1’);ylabel(“U2”);zlabel (U3的);

선형상관모수RHO와예를들어,켄달의타우간의관계는여기에사용된상관행렬卢의각항목에적용됩니다。데이터의표본순위상관이이론적값과대략같은지확인할수있습니다。

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

코퓰러및경험적주변분포

코퓰러를사용하여종속다변량데이터를시뮬레이션하려면다음을지정해야한다는것을확인했습니다。

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

두개의주식수익률데이터세트가있으며이데이터와동일한분포를따르는입력값을사용해서몬테카를로시뮬레이션을실행한다고가정하겠습니다。

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

(이두데이터벡터는길이가같지만이는중요하지않습니다。)

각데이터세트별로모수적모델을피팅하고이렇게얻은추정값을주변분포로사용할수있습니다。하지만,모수적모델이충분히유연하지않을수있습니다。대신주,변분포에경험적모델을사용할수있습니다。역CDF를계산할수만있으면됩니다。

이데이터세트에대한경험적역CDF는1 /脑袋2 /脑袋,……1값에계단이있는계단함수입니다。1.계단높이는정렬된데이터입니다。

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

시뮬레이션을위해여러다른코퓰러와상관관계를실험해볼수있습니다。여기서는상당히큰음의상관모수와함께이변량吨(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个模拟相关的值”);xlabel(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(N 2)* 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개있었기때문에시뮬레이션된데이터가다소“이산적”임을알수있습니다。이를해결하는한방법은시뮬레이션된최종값에가능하면정규분포된불규칙변동을약간추가하는것입니다。이는경험적역CDF의평활화된버전을사용하는것과동일합니다。