Zmienne dwumianowe są zwykle tworzone przez zsumowanie niezależnych zmiennych Bernoulliego. Zobaczmy, czy możemy zacząć od pary skorelowanych zmiennych Bernoulliego i zrobić to samo.( X, Y)
Załóżmy, że jest zmienną Bernoulliego (to znaczy a ), a jest zmienną Bernoulliego . Aby określić ich wspólną dystrybucję, musimy określić wszystkie cztery kombinacje wyników. Pisząc możemy łatwo ustalić resztę z aksjomatów prawdopodobieństwa:( 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.
Podłączenie tego do wzoru dla współczynnika korelacji i rozwiązanie dajea = ( 1 - p ) ( 1 - q ) + ρ √ρ
a = ( 1 - p ) ( 1 - q) + ρ p q( 1 - p ) ( 1 - q)-------------√.(1)
Pod warunkiem, że wszystkie cztery prawdopodobieństwa nie są ujemne, da to prawidłowy wspólny rozkład - a to rozwiązanie parametryzuje wszystkie dwuwymiarowe rozkłady Bernoulliego. (Gdy , istnieje rozwiązanie dla wszystkich matematycznie znaczących korelacji między a ) Gdy sumujemy tych zmiennych, korelacja pozostaje taka sama - ale teraz rozkłady brzeżne są dwumianowe i Dwumianowy , zgodnie z potrzebami.p = q- 11n( n , p )( n , q)
Przykład
Niech , , , i chcielibyśmy, aby korelacja wynosiła . Rozwiązaniem dla jest (a inne prawdopodobieństwa wynoszą około , i ). Oto wykres realizacji ze wspólnej dystrybucji:n = 10p = 1 / 3q= 3 / 4ρ = - 4 / 5( 1 )a = 0,003367350,2470,6630,0871000
Czerwone linie wskazują średnie próbki, a linia przerywana to linia regresji. Wszystkie są zbliżone do zamierzonych wartości. Punkty zostały przypadkowo roztrzęsione na tym obrazie, aby rozwiązać nakładanie się: w końcu rozkłady dwumianowe produkują tylko wartości całkowite, więc będzie bardzo dużo wykreślania.
Jednym ze sposobów generowania tych zmiennych jest próbkowanie razy z z wybranymi prawdopodobieństwami, a następnie przeliczanie każdego na , każdego na , każde na i każdy na . Zsumuj wyniki (jako wektory), aby uzyskać jedną realizację .n{ 1 , 2 , 3 , 4 }1( 0 , 0 )2)( 1 , 0 )3)( 0 , 1 )4( 1 , 1 )( X, Y)
Kod
Oto R
implementacja.
#
# 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)