Биномиальные переменные обычно создаются путем суммирования независимых переменных Бернулли. Давайте посмотрим, можем ли мы начать с пары коррелированных переменных Бернулли и сделать то же самое.(X,Y)
Предположим, что - переменная Бернулли (то есть и ), а - переменная Бернулли . Чтобы определить их совместное распределение, нам нужно указать все четыре комбинации результатов. Написав мы можем легко вычислить остальное из аксиом вероятности:( p ) Pr ( X = 1 ) = p Pr ( X = 0 ) = 1 - p Y ( q ) Pr ( ( X , Y ) = ( 0 , 0 ) ) = a , Pr ( ( X , Y ) = ( 1 , 0 ) ) = 1 - qX(p)Pr(X=1)=pPr(X=0)=1−pY(q)
Pr((X,Y)=(0,0))=a,
Pr((X,Y)=(1,0))=1−q−a,Pr((X,Y)=(0,1))=1−p−a,Pr((X,Y)=(1,1))=a+p+q−1.
Включение этого в формулу для коэффициента корреляции и ее решение даетa = ( 1 - p ) ( 1 - q ) + ρ √ρ
a=(1−p)(1−q)+ρpq(1−p)(1−q)−−−−−−−−−−−−−√.(1)
При условии, что все четыре вероятности неотрицательны, это даст действительное совместное распределение - и это решение параметризует все двумерные распределения Бернулли. (Когда , существует решение для всех математически значимых корреляций между и ) Когда мы суммируем из этих переменных, корреляция остается той же - но теперь предельные распределения являются биномиальными и Бином , по желанию.- 1 1 n ( n , p ) ( n , q )p=q−11n(n,p)(n,q)
пример
Пусть , , , и мы бы хотели, чтобы корреляция была . Решение - (а другие вероятности составляют около , и ). Вот сюжет из реализаций от совместного распространения:р = 1 / 3 д = 3 / 4 ρ = - 4 / 5 ( 1 ) = 0,00336735 0,247 0,663 0,087 1000n=10p=1/3q=3/4ρ=−4/5(1)a=0.003367350.2470.6630.0871000
Красные линии обозначают средние значения выборки, а пунктирная линия - линия регрессии. Все они близки к их предполагаемым значениям. Точки были случайно выбиты на этом изображении для устранения перекрытий: в конце концов, биномиальные распределения дают только целые значения, поэтому будет большое количество переполнений.
Один из способов генерирования этих переменных - выборка раз из с выбранными вероятностями, а затем преобразование каждого в , каждого в , каждого в и каждый в . Суммируйте результаты (как векторы), чтобы получить одну реализацию .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)