有什么技术可以对两个相关的随机变量进行采样?


16

有什么技术可以对两个相关的随机变量进行采样:

  • 如果其概率分布已参数化(例如,对数正态)

  • 如果它们具有非参数分布。

数据是两个时间序列,可以为它们计算非零相关系数。假设历史相关性和时间序列CDF不变,我们希望将来模拟这些数据。

对于情况(2),一维类似物将用于构建CDF并从中采样。所以我想我可以构造一个二维CDF并做同样的事情。但是,我想知道是否有一种方法可以通过使用单个的一维CDF并以某种方式链接这些选项。

谢谢!


3
链接一维CDF使我想到了copula s。不知道它们是否对您有用。
一站式

Answers:


23

我认为您正在寻找的是copula。您有两个边际分布(由参数或经验性cdfs指定),现在您想指定两者之间的依赖关系。对于双变量情况,有各种各样的选择,但是基本配方是相同的。为了便于解释,我将使用高斯系词。

从具有相关矩阵C的高斯关联中得出C

  1. 绘制(Z=(Z1,Z2)N(0,C)

  2. = 1 2(与Φ标准正态累积分布函数)。现在ü 1ü 2ü [ 0 1 ],但他们依赖。Ui=Φ(Zi)i=1,2ΦU1,U2U[0,1]

  3. 其中˚F - 1是可变的边际CDF的(伪)逆。这意味着Y i遵循期望的分布(此步骤只是逆变换采样)。Yi=Fi1(Ui)Fi1iYi

瞧!在一些简单的情况下尝试一下,看看边缘直方图和散点图,这很有趣。

但是,不能保证这适用于您的特定应用程序(特别是您可能需要用at copula替换高斯copula),但这应该可以帮助您入门。copula建模的一个很好的参考是Nelsen(1999),《 Copulas入门》,但在线上也有一些不错的入门。


2
+1 Nelsen可读性强。几年前,即使浏览了许多在线资料,我还是买了本。
ub

1
我找到了不错的教程文件和随附的电子表格:behan.ws/copula.pdfsoa.org/files/xls/rsrch-copula-ex.xls
皮特

1
@Pete,纸的确不错。另一方面,电子表格链接已失效
Boris Gorelik

看来Mathematica和Matlab的最新版本已经具有内置功能来处理此类问题?
LCFactorization 2016年

如果我想和普拉克特·科普拉一样怎么办?正常人和门静脉之间有关系吗?
fedvasu

2

另一种流行的方法是“三变量约简” X1个ÿ+žX2w ^+ž 因此相关性是由随机变量引起的 ž。注意,这也可以推广到2个以上的维度,但比2维情况要复杂得多。您可能认为您只能得到正相关,但实际上您也可以通过使用ü1个-ü 当生成随机变量时,这将引起分布的负相关。

第三种流行的方法是(NORTA)NORmal To Anything;生成相关的正态变量,通过评估其各自的cdfs将其变成统一的随机变量,然后将这些“新的”统一随机变量用作从新分布中生成抽签的随机性来源。

除了另一篇文章中提到的copula(一整套方法)方法之外,您还可以从最大耦合分布中取样,该分布在本质上与copula方法相似。您可以指定边际分布和最大耦合中的样本。这是通过Pierre Jacob 此处描述的2个接受/拒绝步骤来完成的。据推测,该方法可以扩展到大于2的尺寸,但实现起来可能更复杂。请注意,最大耦合将引起依赖于边际参数值的相关性。有关此问题的详细示例,请参见西安的答案。

如果您愿意接受近似(在大多数情况下)的样本,那么MCMC技术也是从多维分布中抽样的一种选择。

同样,您可以使用拒绝接受方法,但是通常很难从中找到主要的密度并评估其与所需密度的比率。

这是我能想到的所有其他方法,但我可能错过了几个。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.