主要内容

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

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

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

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

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

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

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

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

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

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

n=1000;sigma=0.5;SigmaInd=sigma.^2.[10;01]
SigmaInd = 0.2500 00 0.2500
ZInd = mvnrnd([0 0], SigmaInd, n); / /输入XInd = exp (ZInd);情节(XInd (: 1) XInd (:, 2),'.');轴线平等的;轴([0 5 0 5]);包含('X1'); 伊拉贝尔('X2');

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

ρ= 7;SigmaDep =σ。^2 .* [1;ρ1]
SigmaDep=0.2500 0.1750 0.1750.2500
ZDep = mvnrnd([0 0],SigmaDep,N);XDep = EXP(ZDep);

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

绘图(XDep(:,1),XDep(:,2),'.');轴线平等的;轴([0 5 0 5]);包含('X1'); 伊拉贝尔('X2');

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

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

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

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

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

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

Pr{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”); 伊拉贝尔(“频率”);

u = normcdf (z);嘘(u . 05。1:.95);标题(“1000个模拟N(0,1)值转换为U(0,1)”); xlabel('U'); 伊拉贝尔(“频率”);

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

x = gaminv (u 2 1);嘘(x,二十五分:.5:9.75);标题('转化到伽玛(2,1)1000模拟N(0,1)的值'); xlabel('X'); 伊拉贝尔(“频率”);

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

Z=[z1z2]~N([0],[1rho;rho1])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 = gca; title(“1000个模拟依赖性T和灰度值”); xlabel('X1〜伽玛(2,1)'); 伊拉贝尔(‘X2~t(5)’);次要情节(2、2、4);酒吧(ctr1 n1 1);轴([0 12 -max(N1)* 1.1 0]);轴(“关闭”);H2 = GCA;副区(2,2,1);BARH(CTR2,-n2,1);轴([ -  MAX(N 2)* 1.1 0 -8 8]);轴(“关闭”);H3 = GCA;h1.Position = [0.35 0.35 0.55 0.55];h2.Position = [0.35 0.1 0.55 0.15];h3.Position = [0.1 0.35 0.15 0.55];颜色表([8 0.8。1]);

순위 상관 계수

이렇게생성된X1 X2과간의종속성은기본이변량정규분포의상관모수RHO에의해결정됩니다。그러나,X1 X2과의선형상관이RHO는아닙니다. 예를 들어, 원래 로그 정규 사례에서는 해당 상관에 대한 닫힌 형식이 있습니다.

心病(X1,X2)=(EXP(RHO *西格玛^ 2) -  1)./(EXP(西格马^ 2) -  1)

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

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

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

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

τ=(2/pi)*arcin(rho)或rho=sin(τ*pi/2)rho_s=(6/pi)*arcin(rho/2)或rho=2*sin(rho_*pi/6)
次要情节(1 1 1);ρ= 1:.01:1;τ= 2 * asin(ρ)。/π;rho_s = 6。* asin (rho. / 2)。/π;情节(ρ,τ,'-', rho_sρ'-', [-1 1],[-1 1],'K:');轴线([-1 1 -1 1]); xlabel(“rho”); 伊拉贝尔(“秩相关系数”);传奇(“肯德尔的tau”,“斯皮尔曼的rho_s','地点','西北');

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

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

코퓰러

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

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

N = 500;Z = mvnrnd([0 0],[1 0.8; 0.8 1]中,n);U = normcdf (Z, 0,1);副区(2,2,1);情节(U(:,1),U(:,2),'.');标题(ρ= 0.8的); xlabel(‘U1’); 伊拉贝尔(“U2”);Z = mvnrnd([0 0],[1 0.1; 0.1 1]中,n);U = normcdf (Z, 0,1);次要情节(2,2,2);情节(U(:,1),U(:,2),'.');标题(ρ= 0.1的); xlabel(‘U1’); 伊拉贝尔(“U2”);Z = mvnrnd([0 0],[1 -.1; -.1 1]中,n);U = normcdf (Z, 0,1);次要情节(2、2、3);情节(U(:,1),U(:,2),'.');标题('rho=-0.1'); xlabel(‘U1’); 伊拉贝尔(“U2”);Z = mvnrnd([0 0], [1 -.8;-.8 1], n);U = normcdf (Z, 0,1);次要情节(2、2、4);情节(U(:,1),U(:,2),'.');标题('RHO = -0.8'); xlabel(‘U1’); 伊拉贝尔(“U2”);

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

T코퓰러

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

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

N = 500;ν= 1;T = mvtrnd([1 0.8; 0.8 1],NU,N);U = tcdf (T,ν);副区(2,2,1);情节(U(:,1),U(:,2),'.');标题(ρ= 0.8的); xlabel(‘U1’); 伊拉贝尔(“U2”);T = mvtrnd([1 0.1; 0.1 1],NU,N);U = tcdf (T,ν);次要情节(2,2,2);情节(U(:,1),U(:,2),'.');标题(ρ= 0.1的); xlabel(‘U1’); 伊拉贝尔(“U2”);T = mvtrnd([1 - 1;-.1 1], n);U = tcdf (T,ν);次要情节(2、2、3);情节(U(:,1),U(:,2),'.');标题('rho=-0.1'); xlabel(‘U1’); 伊拉贝尔(“U2”);T = mvtrnd([1 -.8; -.8 1],NU,N);U = tcdf (T,ν);次要情节(2、2、4);情节(U(:,1),U(:,2),'.');标题('RHO = -0.8'); xlabel(‘U1’); 伊拉贝尔(“U2”);

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

가우스코퓰러와마찬가지로,叔코퓰러에도주변분포를적용할수있습니다。예를들어,자유도가1인吨코퓰러를사용하여邯(2,1)및吨(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);次要情节(2,2,2); plot(X(:,1),X(:,2),'.')轴([0 15-10 10]);h1=gca;标题(“1000个模拟依赖性T和灰度值”); xlabel('X1〜伽玛(2,1)'); 伊拉贝尔(‘X2~t(5)’)子批次(2,2,4);棒材(ctr1,-n1,1);轴([0 15-最大值(n1)*1.1 0]);轴(“关闭”);H2 = GCA;副区(2,2,1);BARH(CTR2,-n2,1);轴([ -  MAX(N 2)* 1.1 0 -10 10]);轴(“关闭”);H3 = GCA;h1.Position = [0.35 0.35 0.55 0.55];h2.Position = [0.35 0.1 0.55 0.15];h3.Position = [0.1 0.35 0.15 0.55];颜色表([8 0.8。1]);

앞에서 가우스 코퓰러를 기반으로 생성한 이변량 伽马/吨분포와 비교했을 때, 여기서 t(1)코퓰러를 기반으로 생성한 분포는 동일한 주변 분포를 가지며 변수 간 순위 상관도 동일하지만 종속성 구조는 매우 다릅니다. 이는 다변량 분포가 오로지 주변 분포나 상관관계만으로 정의되지 않는다는 사실을 보여줍니다. 실제 관측된 데이터를 기반으로 하여 적용할 특정 코퓰러를 선택하거나, 입력값 분포에 대한 시뮬레이션 결과의 민감도를 결정하기 위해 서로 다른 여러 코퓰러를 사용할 수 있습니다.

고차코퓰러

가우스코퓰러와t코퓰러를타원형코퓰러라고합니다。타원형코퓰러는더높은차원수로쉽게일반화할수있습니다。예를들어,다음과같이가우스코퓰러를사용하여γ(2,1),β- (2,2),t(5)주변성분을갖는삼변량분포에서데이터를시뮬레이션할수있습니다。

次要情节(1 1 1);n = 1000;的Rho = [1 0.4 0.2;0.4 1 -.8;0.2 -.8 1];Z = mvnrnd([0 0 0],ρ,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’); 伊拉贝尔(“U2”);Zlabel(U3的);

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

tauTheoretical = 2π* asin(ρ)。/
理论值=1.0000 0.2620.1282 0.2620 1.0000-0.5903 0.1282-0.5903 1.0000
tauSample=corr(X,'类型',“假象”)
tauSample=1.0000 0.26550.1060.26551.0000-0.6076 0.1060-0.6076 1.0000

코퓰러 및 경험적 주변 분포

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

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

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

加载股票收益脑袋=大小(股票,1);次要情节(2,1,1);嘘(股票(:1)10);包含('X1'); 伊拉贝尔(“频率”);次要情节(2,1,2);嘘(股票(:,2),10);包含('X2'); 伊拉贝尔(“频率”);

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

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

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

invCDF1 =排序(股票(:,1));N1 =长度(股票(:,1));invCDF2 =排序(股票(:,2));N2 =长度(股票(:,2));次要情节(1 1 1);楼梯((1:NOBS)/ NOBS,invCDF1,“b”);持有;楼梯(invCDF2(1:脑袋)/脑袋,“r”);持有;传奇('X1','X2'); xlabel(“累积概率”); 伊拉贝尔('X');

시뮬레이션을 위해 여러 다른 코퓰러와 상관관계를 실험해볼 수 있습니다. 여기서는 상당히 큰 음의 상관 모수와 함께 이변량 t(5)코퓰러를 사용하겠습니다.

n = 1000;RHO = -.8;NU = 5;T = mvtrnd([1个RHO;哌1],NU,N);U = tcdf (T,ν);X = [invCDF1(小区(N1 * U(:,1)))invCDF2(小区(N 2 * U(:,2)))];[N1,CTR1] = HIST(X(:,1),10);[N2,CTR2] = HIST(X(:,2),10);次要情节(2,2,2);积(X(:,1),X(:,2),'.');轴线([-3.5 3.5 -3.5 3.5]); h1 = gca; title(“1000个模拟相关值”); xlabel('X1'); 伊拉贝尔('X2');次要情节(2、2、4);酒吧(ctr1 n1 1);轴([-3.5 3.5 -max(n1)*1.1 0]);轴(“关闭”)h2=gca;子批次(2,2,1);barh(ctr2,-n2,1);轴([-max(n2)*1.10-3.5]);轴(“关闭”);H3 = GCA;h1.Position = [0.35 0.35 0.55 0.55];h2.Position = [0.35 0.1 0.55 0.15];h3.Position = [0.1 0.35 0.15 0.55];颜色表([8 0.8。1]);

시뮬레이션된데이터의주변히스토그램은원래데이터와거의일치하며더많은값쌍을시뮬레이션할수록더일치하게됩니다。값을원래데이터에서추출했고각데이터세트에관측값이단지100개있었기때문에시뮬레이션된데이터가다소 “이산적” 임을알수있습니다。이를해결하는한방법은시뮬레이션된최종값에가능하면정규분포된불규칙변동을약간추가하는것입니다。이는경험적역CDF의평활화된버전을사용하는것과동일합니다。