主要内容

连系动词:生成相关样本

连系动词功能描述变量之间的依赖关系,提供一种方法来创建模型相关的多元数据的分布。使用一个连系动词,可以构建一个多元分布通过指定边际单变量分布,然后选择一个介体提供一个变量之间的相关结构。二元分布以及分布在更高的维度,是可能的。

确定模拟输入之间的依赖

的蒙特卡罗模拟的设计决策是一种选择的概率分布随机输入。选择为每个单独的变量分布通常是简单,但决定之间的依赖关系应该存在输入可能不是。理想情况下,输入数据模拟应该反映你知道依赖在你建模的实际数量。然而,可能会有很少或根本没有任何依赖信息,以此为基础的模拟。在这种情况下,是很有用的尝试不同的可能性,以确定模型的灵敏度。

很难生成随机输入和依赖他们的分布不是从一个标准的多元分布。此外,一些标准多元分布模型的有限类型的依赖。它总是可以使输入独立,虽然这是一个简单的选择,它并不总是明智的,可能会导致错误的结论。

例如,金融风险的蒙特卡罗模拟可以有两个随机输入,代表不同的保险损失的来源。你可以将这些输入建模为对数正态随机变量。一个合理的问题是依赖这两个输入之间如何影响仿真的结果。事实上,你可能知道从实际数据,相同的随机条件影响源;忽略,在模拟可能导致错误的结论。

生成并取幂正常随机变量

lognrnd函数模拟独立对数正态随机变量。在以下的示例中,mvnrnd函数生成n对独立正常随机变量,然后取幂。注意,这里使用的协方差矩阵是对角。

n = 1000;σ= 5;SigmaInd =σ。^ 2。* [1 0;0 1]
SigmaInd =2×20.2500 0 0 0.2500
rng (“默认”);%的再现性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 =2×20.2500 0.1750 0.1750 0.2500
ZDep = mvnrnd ([0 0], SigmaDep n);XDep = exp (ZDep);

第二个散点图展示了这两个二元分布之间的差异。

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

很明显,有一种倾向在第二大值的数据集X1与大的值X2和同样为小值。相关参数 ρ 潜在的二元正态决定了这种依赖。仿真得出的结论很可能取决于你是否生成X1X2与依赖。二维对数正态分布是一个简单的解决方案在这种情况下;的情况下很容易推广到高维的边际分布对数正态不同。

其他多元分布也存在。例如,多元t依赖和狄利克雷分布模拟t分别和β随机变量。但简单的多元分布列表不长,和他们只适用于情况的人都是在同一个家庭(甚至完全相同的分布)。在很多情况下这可能是一个严重的限制。

构建相关的二元分布

虽然在前一节中讨论的建设创造了一个简单的二维对数正态,它说明一个更普遍适用的方法。

  1. 从二元正态分布生成的值。有统计这两个变量之间的依赖,每个人都有一个正常的边际分布。

  2. 转换(指数函数)分别适用于每一个变量,改变边际分布为对数正态。转换后的变量还有统计依赖。

如果可以找到一个合适的变换,该方法可以推广到创建相关的二元边际分布随机向量与其他。事实上,一般的方法建造这样一个转换确实存在,虽然它不是简单求幂。

根据定义,应用正态累积分布函数(cdf),这里表示Φ,标准正态随机变量的结果在一个随机变量统一在区间[0,1]上。看到这个,如果Z标准正态分布,然后提供的U=Φ(Z)是

公关 { U u } = 公关 { Φ ( Z ) u } = 公关 ( Z Φ 1 ( u ) } = u

这就是提供Unif(0,1)随机变量。直方图的一些模拟正常和转换值证明的事实:

n = 1000;rng默认的%的再现性z = normrnd (0, 1, n, 1);%生成标准正态数据直方图(z, -3.75: .5:3.75,“FaceColor”,(。8。8 1])%绘制柱状图的数据xlim(4[4])标题(1000年模拟N(0, 1)随机值的)包含(“Z”)ylabel (“频率”)

u = normcdf (z);%计算样本数据的提供值图直方图(u . 05。1: .95,“FaceColor”,(。8。8 1])%绘制直方图提供的值标题(1000年模拟N(0,1)值转换为Unif (0,1) ')包含(“U”)ylabel (“频率”)

借用单变量随机数生成理论,应用逆cdf的分布,F,Unif(0, 1)随机变量的结果是一个随机变量的分布F(见反演方法)。证明本质上就是个相反的前面转发情况证明。另一个柱状图显示了转换到一个伽马分布:

x = gaminv (u 2 1);%变换伽马值图直方图(x)为:.5:9.75,“FaceColor”,(。8。8 1])%情节伽马值的直方图标题(1000年模拟N(0,1)值转换为γ(2,1)”)包含(“X”)ylabel (“频率”)

可以将这两步转换应用到每个变量的一个标准的二元正态,创建具有任意边际分布的随机变量的依赖。因为转换工作在每个组件分别产生两个随机变量不需要甚至有相同的边际分布。转换的定义是:

Z = ( Z 1 , Z 2 ] N ( ( 0 , 0 ] , ( 1 ρ ρ 1 ] ) U = ( Φ ( Z 1 ) , Φ ( Z 2 ) ] X = ( G 1 ( U 1 ) , G 2 ( U 2 ) ]

在哪里G1G2逆cdfs的两个可能不同的分布。例如,下面的生成随机向量的二维分布t5和γ(2,1)的人:

n = 1000;ρ= 7;Z = mvnrnd([0 0]、[1ρ;ρ1],n);U = normcdf (Z);X = [gaminv (U (: 1)、2、1) tinv (U (:, 2), 5)];%画出散点图与柱状图的数据图scatterhist (X (: 1), (:, 2),“方向”,“出”)

这个情节有柱状图和散点图显示两个边际分布,和依赖。

用等级相关系数

相关参数,ρ潜在的二元正态决定之间的依赖X1X2在这个建筑。然而,线性相关性X1X2不是ρ。例如,在最初的对数正态情况下,相关性是一个封闭的形式:

c o r ( X 1 , X 2 ) = e ρ σ 2 1 e σ 2 1

这是严格小于ρ,除非ρ就是1。在更一般的情况下如γ/t建设、线性相关性X1X2是困难的或不可能表达的吗ρ,但模拟显示,发生了同样的效果。

这是因为线性相关系数表示随机变量之间的线性相关,当非线性转换应用于这些随机变量,是不会保留线性相关。相反,等级相关系数,比如肯德尔的τ或枪兵的ρ是更合适的。

粗略地说,这些等级相关性度量的程度大小值随机变量与一个大的或小的值。然而,与线性相关系数不同,他们只测量协会的行列。因此,在任何单调变换保留了等级相关。特别是,刚刚描述的转换方法保留了等级相关。因此,知道二元正态的等级相关Z完全决定了最终转化的等级相关随机变量,X。线性相关系数,ρ,还需要参数化潜在的二元正态,肯德尔的τ斯皮尔曼的ρ更有用的描述随机变量之间的依赖,因为它们是不变的边缘分布的选择。

二元正态,肯德尔之间存在简单的一对一的映射τ斯皮尔曼的ρ,线性相关系数ρ:

τ = 2 π arcsin ( ρ ) ρ =罪 ( τ π 2 ) ρ 年代 = 6 π arcsin ( ρ 2 ) ρ = 2罪 ( ρ 年代 π 6 )

下面的图显示了关系。

ρ= 1:.01:1;τ= 2 * asin(ρ)。/π;rho_s = 6。* asin (rho. / 2)。/π;情节(ρ,τ,“b -”,“线宽”,2)情节(ρ,rho_s“g -”,“线宽”2)图([1],[1],凯西:”,“线宽”2)轴([1 1 1 1])包含(的ρ)ylabel (等级相关系数的)传说(肯德尔”年代{\ \τ}”,斯皮尔曼”年代{\ \ rho_s}”,“位置”,“西北”)

因此,很容易创建所需的等级关系X1X2,不管他们的边际分布,通过选择正确的ρ参数值的线性相关性Z1Z2

多元正态分布,斯皮尔曼等级相关的是几乎相同的线性相关。然而,这是不正确的,一旦你改变最后一个随机变量。

使用二元连系动词

第一步在前一节中描述的结构定义了什么是被称为二元高斯相关。介体是一种多变量概率分布,每个随机变量对单位统一边际分布区间[0,1]。这些变量可能是完全独立的,确定性相关(例如,U2 = U1),或者介于两者之间的任何东西。由于变量之间的依赖关系的可能性,你可以使用一个介体构造一个新的因变量的多元分布。通过将每个变量的接合部分别使用反演方法,可能使用不同的cdfs,由此产生的分布可以有任意的边际分布。这样的多元分布通常用于模拟,当你知道不同的随机输入不是相互独立的。

统计和机器学习工具箱™函数计算:

例如,使用copularnd函数来创建散点图的随机值二元高斯相关各种级别的ρ,来说明不同的依赖结构的范围。二维高斯接合部的家庭是由线性参数化的相关矩阵:

Ρ = ( 1 ρ ρ 1 )

U1U2方法线性相关ρ方法±1,方法完全独立ρ趋于0时:

之间的依赖U1U2是完全分开的边际分布X1 = G (U1)X2 = G (U2)X1X2可以给任何边际分布,仍然有相同的等级相关。这是其中一个主要吸引copulas-they允许这种单独的依赖和边缘分布规范。你也可以计算pdf (copulapdf)和提供(copulacdf连系动词)。例如,这些情节显示pdf和运作ρ=。8:

u1 = linspace (1 e - 3 1-1e-3 50);u2 = linspace (1 e - 3 1-1e-3 50);[U1, U2] = meshgrid (U1, U2);ρ= [1。8;1。8);f = copulapdf (“t”,(U1 (:) U2(:)),ρ,5);f =重塑(f,大小(U1));图()冲浪(u1, u2,日志(f),“FaceColor”,的插值函数,“EdgeColor”,“没有”)视图([-15,20])包含(‘U1’)ylabel (“U2”)zlabel (的概率密度)

u1 = linspace (1 e - 3 1-1e-3 50);u2 = linspace (1 e - 3 1-1e-3 50);[U1, U2] = meshgrid (U1, U2);F = copulacdf (“t”,(U1 (:) U2(:)),ρ,5);F =重塑(F,大小(U1));图()冲浪(u1, u2, F,“FaceColor”,的插值函数,“EdgeColor”,“没有”)视图([-15,20])包含(‘U1’)ylabel (“U2”)zlabel (“累积概率”)

可以由不同家庭的接合部从二元t分布和使用相应的转换tcdf。二元的t分布参数化与P、线性相关矩阵ν的自由度。因此,例如,你可以讲的t1或者一个t5连系动词,基于多元t分别用一个五自由度。

就像高斯接合部,统计和机器学习的工具箱函数t连系动词计算:

例如,使用copularnd函数来创建从一个二元随机值的散点图t1为各种水平的接合部ρ,来说明不同的依赖结构的范围:

n = 500;ν= 1;rng (“默认”)%的再现性U = copularnd (“t”,(1。8;8 1],ν,n);次要情节(2 2 1)情节(U (: 1), U (:, 2),“。”)标题(“{\ \ρ}= 0.8”)包含(‘U1’)ylabel (“U2”)U = copularnd (“t”,(1。1;1。1],ν,n);次要情节(2,2,2)情节(U (: 1), U (:, 2),“。”)标题(“{\ \ρ}= 0.1”)包含(‘U1’)ylabel (“U2”)U = copularnd (“t”约[1;-。11],nu,n);次要情节(2,2,3)情节(U (: 1), U (:, 2),“。”)标题(“{\ \ρ}= -0.1”)包含(‘U1’)ylabel (“U2”)U = copularnd (“t”,(1。8;-。8 1],ν,n);次要情节(2,2,4)情节(U (: 1), U (:, 2),“。”)标题(“{\ \ρ}= -0.8”)包含(‘U1’)ylabel (“U2”)

一个t连系动词有统一的边际分布U1U2,就像一个高斯相关。的等级相关τρ年代组件之间的t连系动词也是相同的函数ρ至于一个高斯分布。然而,这些情节展示,t1从高斯相关接合部相当不同,即使他们的组件相同的等级相关。不同的是在他们的依赖结构。不足为奇的是,作为自由度参数ν大,一个tν连系动词的方法对应的高斯相关。

与一个高斯相关,任何边际分布可以实施了t连系动词。例如,使用一个t连系动词1自由度,可以再次生成随机向量的二维分布和γ(2,1)t5的人使用copularnd:

n = 1000;ρ= 7;ν= 1;rng (“默认”)%的再现性U = copularnd (“t”,(1ρ;ρ1],ν,n);X = [gaminv (U (: 1)、2、1) tinv (U (:, 2), 5)];图()scatterhist (X (: 1), (:, 2),“方向”,“出”)

而二元γ/t构造分布,基于高斯相关,构造分布,基于t1连系动词,有相同的边际分布和相同的等级相关但不同的依赖结构之间的变量。这说明这一事实多元分布定义为边际分布不是唯一的,或者他们的相关性。在应用程序中选择特定的相关可能根据实际观测数据,或不同的介体可用来确定输入分布仿真结果的敏感性。

更高维度的连系动词

高斯和t连系动词被称为椭圆接合部。很容易概括椭圆接合部向更高的维度。例如,从一个小分布模拟数据与γ(2,1),β- (2,2)t5使用高斯相关,不着边际copularnd,如下所示:

n = 1000;ρ= [1。4。2;1。4。8;2 -。8 1];rng (“默认”)%的再现性U = copularnd (“高斯”ρ,n);X = [gaminv (U (: 1)、2、1) betainv (U (:, 2), 2, 2) tinv (U (:, 3), 5)];

图数据。

次要情节(1 1 1)plot3 (X (: 1), (:, 2), X (:, 3),“。”网格)视图([15]-55年)包含(X1的)ylabel (“X2”)zlabel (“X3”)

请注意,线性相关参数之间的关系ρ例如,肯德尔的τ,适用于相关矩阵中的每个条目P这里使用。您可以验证数据的样本秩相关性是约等于理论价值:

tauTheoretical = 2π* asin(ρ)。/
tauTheoretical =3×31.0000 0.2620 0.1282 0.2620 1.0000 -0.5903 0.1282 -0.5903 1.0000
tauSample = corr (X,“类型”,“假象”)
tauSample =3×31.0000 0.2581 0.1414 0.2581 1.0000 -0.5790 0.1414 -0.5790 1.0000

阿基米德连系动词

统计和机器学习的工具箱函数可用于三个二元阿基米德接合部的家庭:

  • 克莱顿连系动词

  • 弗兰克连系动词

  • 甘力克连系动词

这些都是单参数家庭的cdfs直接定义,而不是建设性地使用定义一个标准的多元分布。

比较这三个高斯和阿基米德接合部t二元接合部,首先使用copulastat函数为高斯或找到等级相关t介体与0.8的线性相关参数,然后使用copulaparam函数来找到对应的克莱顿接合部参数等级相关:

τ= copulastat (“高斯”,。8日,“类型”,“假象”)
τ= 0.5903
α= copulaparam (“克莱顿”τ,“类型”,“假象”)
α= 2.8820

最后,情节一个随机样本的克莱顿接合部copularnd。弗兰克和甘力克接合部的重复相同的过程:

n = 500;U = copularnd (“克莱顿”、α- n);次要情节(1,1)情节(U (: 1), U (:, 2),“。”);标题([克莱顿的接合部,{\ \α}= 'sprintf (' % 0.2 f 'α)])包含(‘U1’)ylabel (“U2”)α= copulaparam (“弗兰克”τ,“类型”,“假象”);U = copularnd (“弗兰克”、α- n);次要情节(3、1、2)情节(U (: 1), U (:, 2),“。”)标题(“弗兰克接合部,{\ \α}= 'sprintf (' % 0.2 f 'α)])包含(‘U1’)ylabel (“U2”)α= copulaparam (“甘力克”τ,“类型”,“假象”);U = copularnd (“甘力克”、α- n);次要情节(3,1,3)情节(U (: 1), U (:, 2),“。”)标题(“甘力克接合部,{\ \α}= 'sprintf (' % 0.2 f 'α)])包含(‘U1’)ylabel (“U2”)

模拟使用接合部多元数据的依赖

使用介体来模拟相关的多元数据,您必须指定以下:

  • 连系动词家族(和任何形状参数)

  • 等级变量之间的相关性

  • 每个变量的边际分布

假设你有返回数据为两个股票和想要运行一个遵循相同的蒙特卡罗模拟输入分布的数据:

负载stockreturns脑袋=大小(股票,1);次要情节(2,1,1)直方图(股票(:1),10日“FaceColor”,(。8。8 1])xlim([-3.5 - 3.5])包含(X1的)ylabel (“频率”次要情节(2,1,2)直方图(股票(:,2),10日“FaceColor”,(。8。8 1])xlim([-3.5 - 3.5])包含(“X2”)ylabel (“频率”)

你可以适应参数模型分别对每个数据集,并使用这些估计边际分布。然而,一个参数模型可能不足够灵活。相反,您可以使用非参数模型变换到边际分布。所需要的就是一种计算逆cdf实验组的非参数模型。

最简单的非参数模型实证cdf,所计算的ecdf函数。对于离散边缘分布,这是适当的。然而,连续分布,使用一个模型比阶跃函数计算平滑ecdf。这样做的方法之一是估计中点之间的经验提供和插入用分段线性函数的步骤。另一种方法是使用内核平滑ksdensity。例如,比较实验提供一个内核平滑cdf估计第一个变量:

[Fi, xi] = ecdf(股票(:1));图()楼梯(xi, Fi,“b”,“线宽”,2)Fi_sm = ksdensity(股票(:1),,“函数”,“提供”,“宽度”,酒精含量);情节(xi, Fi_sm的r -,“线宽”(1.5)包含X1的)ylabel (“累积概率”)传说(“经验”,“平滑”,“位置”,“西北”网格)

模拟,尝试不同的介体和相关性。在这里,您将使用一个二元t连系动词与一个相当小的自由度参数。对于相关参数,可以计算数据的等级相关。

ν= 5;τ= corr(股票(:1),股票(:,2),“类型”,“假象”)
τ= 0.5180

找到对应的线性相关参数t连系动词使用copulaparam

ρ= copulaparam (“t”τ,ν,“类型”,“假象”)
ρ= 0.7268

下一步,使用copularnd生成随机值t使用非参数逆cdfs接合部和转换。的ksdensity函数允许你做一个内核的估计分布和评估逆cdf接合部点都在一个步骤:

n = 1000;U = copularnd (“t”,(1ρ;ρ1],ν,n);
X1 = ksdensity(股票(:1),U (: 1),“函数”,“icdf”,“宽度”,酒精含量);X2 = ksdensity(股票(:,2),U (:, 2),“函数”,“icdf”,“宽度”,酒精含量);

另外,当你有大量的数据或需要模拟多个组值,它可能是更有效的网格计算逆cdf的间隔(0,1)中的值,并使用插值计算接合部点:

p = linspace (0.00001, 0.99999, 1000);G1 = ksdensity(股票(:1),p,“函数”,“icdf”,“宽度”,0.15);X1 = interp1 (p, G1 U (: 1),样条的);G2 = ksdensity(股票(:,2),p,“函数”,“icdf”,“宽度”,0.15);X2 = interp1 (p, G2 U (:, 2),样条的);scatterhist (X1, X2)“方向”,“出”)

模拟数据是一个平滑的边缘直方图版本的原始数据的直方图。平滑的数量由带宽控制输入ksdensity

拟合数据介体

这个例子展示了如何使用copulafit用数据来校准接合部。生成数据Xsim分布“就像”(的边际分布和相关性)的分布矩阵中的数据X,您需要合适的边际分布的列X使用适当的cdf函数变换XU,所以U值在0和1之间,使用copulafit适合接合部U,生成新的数据Usim连系动词,使用适当的逆cdf实验组的函数变换UsimXsim

加载和绘制模拟股票返回数据。

负载stockreturnsx =股票(:1);y =股票(:,2);scatterhist (x, y,“方向”,“出”)

转换数据的接合部规模(单位平方)使用一个内核累积分布函数的估计量。

u = ksdensity (x, x,“函数”,“提供”);v = ksdensity (y y“函数”,“提供”);scatterhist (u, v,“方向”,“出”)包含(“u”)ylabel (“v”)

适合t连系动词。

(ρ,ν)= copulafit (“t”(u v),“方法”,“ApproximateML”)
ρ=2×21.0000 0.7220 0.7220 1.0000
ν= 3.2727 e + 06

生成的随机样本t连系动词。

r = copularnd (“t”ρ,ν,1000);u1 = r (: 1);v1 = r (:, 2);scatterhist (u1, v1,“方向”,“出”)包含(“u”)ylabel (“v”甘氨胆酸)组(get (,“孩子”),“标记”,“。”)

将随机样本回到原始数据的规模。

x1 = ksdensity (x, u1,“函数”,“icdf”);日元= ksdensity (y, v1,“函数”,“icdf”);scatterhist (x1, y1,“方向”,“出”甘氨胆酸)组(get (,“孩子”),“标记”,“。”)

为例说明了,介体整合自然与其他分布拟合函数。