生成相关的二项式随机变量


21

我想知道遵循线性变换方法是否可能生成相关的随机二项式变量?

下面,我尝试了一些简单的R语言,它产生了一些相关性。但是我想知道是否有原则性的方法可以做到这一点?

X1 = rbinom(1e4, 6, .5) ; X2 = rbinom(1e4, 6, .5) ;  X3 = rbinom(1e4, 6, .5) ; a = .5

Y1 = X1 + (a*X2) ; Y2 = X2 + (a*X3) ## Y1 and Y2 are supposed to be correlated

cor(Y1, Y2)

2
Y1和可能是相关的,但它们将不再是二项式的。例如,则因此不能是二项式随机变量。我建议您研究一下多项分布。X 1 = X 2 = 1 Y 1 = 1.5 Y iY2X1=X2=1Y1=1.5Yi
knrumsey-恢复莫妮卡

1
该问题的简短答案是寻找关键字copula,这有助于生成具有固定边距的因变量。
西安

Answers:


32

通常通过对独立的伯努利变量求和来创建二项式变量。让我们看看是否可以从一对相关的伯努利变量并做同样的事情。(X,Y)

假设是伯努利变量(即和),是伯努利变量。为了确定他们的联合分布,我们需要指定结果的所有四个组合。写我们可以很容易地从概率公理中找出其余部分:X(p)Pr(X=1)=pý q PR X Ý = 0 0 = X Ý = 1 0 = 1 q a Pr(X=0)=1pY(q)

Pr((X,Y)=(0,0))=a,
Pr((X,Y)=(1,0))=1qa,Pr((X,Y)=(0,1))=1pa,Pr((X,Y)=(1,1))=a+p+q1.

将其代入相关系数的公式并求解,即可得出一个= 1 - p 1 - q + ρ ρ

(1)a=(1p)(1q)+ρpq(1p)(1q).

假设所有四个概率均为非负数,这将给出有效的联合分布-并且此解决方案将所有双变量伯努利分布参数化。(当,对于和之间所有在数学上有意义的相关性都有一个解。)当我们对这些变量中的求和时,相关性保持不变-但现在边际分布为二项式和根据需要二项式。1 1 n n p n q p=q11n(n,p)(n,q)

令,,,我们希望相关性为。到该溶液中是(以及其他的概率大约,,和)。这是来自联合分布的实现的图:n=10q = 3 / 4 ρ = - 4 / 5 1 一个= 0.00336735 0.247 0.663 0.087 1000p=1/3q=3/4ρ=4/5(1)a=0.003367350.2470.6630.0871000

散点图

红线表示样本的均值,虚线是回归线。它们都接近其预期值。这些点在该图像中被随机抖动以解决重叠:毕竟,二项式分布仅产生整数值,因此会出现大量的重复绘图。

生成这些变量的一种方法是使用选定的概率从进行次采样,然后将每个转换为,每个转换为,每个变成,每个变成。对结果求和(作为向量),以获得一种实现。{ 1 2 3 4 } 1 0 0 2 1 0 3 0 1 4 1 1 X ÿ n{1,2,3,4}1(0,0)2(1,0)3(0,1)4(1,1)(X,Y)

这是一个R实现。

#
# Compute Pr(0,0) from rho, p=Pr(X=1), and q=Pr(Y=1).
#
a <- function(rho, p, q) {
  rho * sqrt(p*q*(1-p)*(1-q)) + (1-p)*(1-q)
}
#
# Specify the parameters.
#
n <- 10
p <- 1/3
q <- 3/4
rho <- -4/5
#
# Compute the four probabilities for the joint distribution.
#
a.0 <- a(rho, p, q)
prob <- c(`(0,0)`=a.0, `(1,0)`=1-q-a.0, `(0,1)`=1-p-a.0, `(1,1)`=a.0+p+q-1)
if (min(prob) < 0) {
  print(prob)
  stop("Error: a probability is negative.")
}
#
# Illustrate generation of correlated Binomial variables.
#
set.seed(17)
n.sim <- 1000
u <- sample.int(4, n.sim * n, replace=TRUE, prob=prob)
y <- floor((u-1)/2)
x <- 1 - u %% 2
x <- colSums(matrix(x, nrow=n)) # Sum in groups of `n`
y <- colSums(matrix(y, nrow=n)) # Sum in groups of `n`
#
# Plot the empirical bivariate distribution.
#
plot(x+rnorm(length(x), sd=1/8), y+rnorm(length(y), sd=1/8),
     pch=19, cex=1/2, col="#00000010",
     xlab="X", ylab="Y",
     main=paste("Correlation is", signif(cor(x,y), 3)))
abline(v=mean(x), h=mean(y), col="Red")
abline(lm(y ~ x), lwd=2, lty=3)

可以扩展此方法以生成任意数量的二进制变量吗?-拟合给定的相关矩阵(或最大接近以拟合它)?
ttnphns

1
@ttnphns是的,但是选项却爆炸了:概率表必须由边际参数,和与统一约束和(因此)附加参数确定。显然,根据您希望创建的多元属性,您将有很大的自由来选择(或约束)那些参数。同样,可以使用类似的方法来生成具有不同“ ”个参数值的相关二项式变量。帕文:我相信“当我们将这些变量中的相加时”会明确解释代表什么。 k 2 kk 1 n n n2kk2kk1nnn
ub

这是一个很好的结果。只是在您的第一句话上挑一点。为了从独立的伯努利变量获得二项式,它们是否不需要具有相同的p?这对您所做的工作没有影响,因为这只是您采用该方法的动机。
Michael R. Chernick

1
@Michael谢谢您-您说的很对。它与此处概述的方法无关的另一个原因是,该方法仍涉及对具有公共参数的伯努利变量求和:对于所有变量,参数为;对于所有变量,参数为。为了使帖子合理地简短,我没有提供边际分布的直方图来证明它们确实是二项式的(但是我实际上是在我最初的分析中这样做的,只是为了确保它们起作用!)。XpXÿqY
ub

@whuber不错的方法!您能否让我知道我可以参考的论文吗?
T尼克
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.