有哪些技术可以对两个相关的随机变量进行抽样?

机器算法验证 相关性 采样 蒙特卡洛 随机过程 系词
2022-02-10 02:32:27

对两个相关随机变量进行抽样的一些技术是什么:

  • 如果它们的概率分布是参数化的(例如,对数正态)

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

数据是两个时间序列,我们可以为其计算非零相关系数。我们希望在未来模拟这些数据,假设历史相关性和时间序列 CDF 是恒定的。

对于情况 (2),一维模拟将是构建 CDF 并从中采样。所以我想,我可以构建一个二维 CDF 并做同样的事情。但是,我想知道是否有办法通过使用单独的 1-D CDF 并以某种方式链接选择来接近。

谢谢!

2个回答

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

从具有相关矩阵C

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

  2. 设置(其中是标准的正常 cdf)。现在,但它们是依赖的。Ui=Φ(Zi)i=1,2ΦU1,U2U[0,1]

  3. 设置其中是变量的边际 cdf 的(伪)逆。这意味着遵循期望的分布(这一步只是逆变换采样)。Yi=Fi1(Ui)Fi1iYi

瞧!尝试一些简单的案例,看看边缘直方图和散点图,很有趣。

虽然不能保证这适用于您的特定应用程序(特别是,您可能需要用 at copula 替换 Gaussian copula),但这应该可以帮助您入门。Nelsen (1999), An Introduction to Copulas是关于 copula 建模的一个很好的参考,但在线也有一些很好的介绍。

另一种流行的方法是“三变量归约”,它对进行采样,以便由随机变量诱导相关性。请注意,这也可以推广到多于 2 维,但比 2-d 情况更复杂。您可能认为您只能获得正相关,但实际上您也可以在生成随机变量时使用获得负相关,这将导致分布出现负相关。X1Y+ZX2W+ZZU(1U)

第三种流行的方法是(NORTA) NORmal To Anything生成相关的正态变量,通过评估它们各自的 cdf 使它们成为均匀的随机变量,然后使用这些“新的”均匀随机变量作为随机源,从新分布中生成抽取。

除了在另一篇文章中提到的 copula(一整类方法)方法外,您还可以从与 copula 方法在精神上相似的最大耦合分布中进行采样。您指定边际分布和来自最大耦合的样本。这是通过 Pierre Jacob在此处描述的 2 个接受-拒绝步骤来完成的。据推测,这种方法可以扩展到比 2 更高的维度,但实现起来可能更复杂。请注意,最大耦合将导致依赖于边际参数值的相关性,请参阅这篇文章,以在西安对我的问题的回答中找到一个很好的例子。

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

此外,您可以使用接受-拒绝方法,但通常很难找到一个主要的密度来采样并评估它与所需密度的比率。

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