生成三个相关的均匀分布的随机变量


15

假设我们有

X1unif(n,0,1),
X2unif(n,0,1),

其中unif(n,0,1)是大小均匀的随机样本n,和

Y=X1,

Z=0.4X1+10.4X2.

那么,Y的相关性ž0.4

如何将其扩展到三个变量:X1个X2X3


我已对您的问题进行了编辑,以使其更易于阅读。请检查一切都OK。关于您的问题,您将在什么意义上扩展程序?关联是为两个随机变量定义的,因此我不清楚您要表达的含义。
ocram 2012年

3
不是统一的,因此,如果您要概括该结果,则似乎并没有尝试生成三个相关的统一RV。你想知道如何计算之间的关系 X 1一个X 1 + b X 2 + c ^ X 3ZX1aX1+bX2+cX3
MånsT

假设我们已经X 2X 3 ù Ñ ˚F Ñ 0 1 ,和ÿ = ˚F X 2X 3ž = ˚F X 1X 2X 3。那么YZ是什么?X1个X2X3  üñ一世Fñ01个Y=f(X2,X3)Z=f(X1,X2,X3)YZ
user9292'7

6
{Distributions of correlated uniforms}{Copulas}
红衣主教

4
为什么不参加讨论?如果X1和X2是单变量随机变量,它们不是简单地在[0,1]上统一吗?
Michael R. Chernick

Answers:


12

问题包含注释中指出的几个错误-如问题中所定义,Z既不是统一的,也不具有指定的相关性。

红衣主教提到copulas,这是最普通的解决方法。但是,有几种非常简单的方法来获取相关的制服(可以看作仅仅是通向各种不同系的捷径)。

因此,让我们从一些获取一相关制服的方法开始。

1)如果添加两个制服,则结果为三角形,而不是制服。但是您可以将结果变量的cdf用作转换,以将结果恢复为统一形式。当然,结果不再是线性相关的。

这是一个R函数,用于将(0,2)上的对称三角形转换为标准均匀

t2u = function(x) ifelse(x<1, x^2, 2-(2-x)^2)/2

让我们检查一下它是否提供了制服

u1 = runif(30000)
u2 = runif(30000)
v1 = t2u(u1+u2)

在此处输入图片说明

它与u1和u2相关:

> cor(cbind(u1,u2,v1))
            u1          u2        v1
u1 1.000000000 0.006311667 0.7035149
u2 0.006311667 1.000000000 0.7008528
v1 0.703514895 0.700852805 1.0000000

但不是线性的,因为单调变换为均匀性

在此处输入图片说明

以此为工具,我们可以生成一些其他变量来获得三种等相关的制服:

u3 = runif(30000)
v2 = t2u(u1+u3)
v3 = t2u(u2+u3)

cor(cbind(v1,v2,v3))
          v1        v2        v3
v1 1.0000000 0.4967572 0.4896972
v2 0.4967572 1.0000000 0.4934746
v3 0.4896972 0.4934746 1.0000000

v变量之间的关系如下所示:

在此处输入图片说明

-

第二种选择是通过混合来产生。与其将制服相加,不如将它们取为固定概率。

例如

z = ifelse(rbinom(30000,1,.7),u1,u2)

cor(cbind(u1,z))
          u1         z
u1 1.0000000 0.7081533
z  0.7081533 1.0000000

在此处输入图片说明

可以再次用来生成多个相关的制服。

-

第三种简单方法是生成相关的法线并转换为均匀性。

n1=rnorm(30000)
n2=rnorm(30000)
n3=rnorm(30000)
x=.6*n1+.8*n2
y=.6*n2+.8*n3
z=.6*n3+.8*n1
cor(cbind(x,y,z))

          x         y         z
x 1.0000000 0.4763703 0.4792897
y 0.4763703 1.0000000 0.4769403
z 0.4792897 0.4769403 1.0000000

所以现在我们转换为制服:

w1 = pnorm(x)
w2 = pnorm(y)
w3 = pnorm(z)
cor(cbind(w1,w2,w3))
          w1        w2        w3
w1 1.0000000 0.4606723 0.4623311
w2 0.4606723 1.0000000 0.4620257
w3 0.4623311 0.4620257 1.0000000

在此处输入图片说明

关于方法2和3的一件好事是,您可以选择多种多样的关联方式(并且不必像此处的示例一样进行关联)。

当然,还有许多其他方法,但是这些方法都是快速简便的。

棘手的部分是准确获得所需的总体相关性。它并不像您只想要相关的高斯人那样简单。Quantibex在“ 生成均匀分布和相关的随机数对”中的答案 给出了一种方法,该方法修改了我在此处的第三种方法,该方法应该给出所需的总体相关性。


Glen_b。谢谢,非常漂亮有趣的答案!
user9292

我不明白第三种方法中0.6和0.8的来源。
manuel

ρρNi+1ρ2NjNiNjρNi1ρ2NjXYZ

2

X1,X2ZX1 0.40.4YY=0.4X1+1(0.4)2X2

ρcos23cos0

这应该使您开始将序列分解为其分量,就像将向量分解为其正交分量一样。

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.