2012-05-10 130 views
10

我試圖找到一種方法來從幾個二項式分佈生成相關的隨機數。從R中的二項分佈生成相關的隨機數

我知道如何使用正態分佈(使用mvrnorm),但我沒有找到適用於二項式函數的函數。

+0

你可以使用'bindata'軟件包,如下:https://stat.ethz.ch/pipermail/r-help/2007-July/135575.html。 (該鏈接是在谷歌搜索'R模擬相關二項變量'返回的第一頁...) –

+0

感謝喬希,但我需要二項數據而不是二進制數據! – Arnaud

+1

@Arnaud - 授予今天早上我沒有任何類型的咖啡因或興奮劑,但不是二項分佈的離散分佈,其中唯一可接受的值是「是/否」,「合格/不合格」,「真/假「,換句話說二進制?這就是[維基百科似乎也這麼想]。(http://en.wikipedia.org/wiki/Binomial_distribution) – Chase

回答

11

的情況。下面是一個簡單的例子:

library(copula) 

tmp <- normalCopula(0.75, dim=2) 
x <- rcopula(tmp, 1000) 
x2 <- cbind(qbinom(x[,1], 10, 0.5), qbinom(x[,2], 15, 0.7)) 

現在x2是與表示是相關的2個二項式變量2列的矩陣。

+0

哇,好,甜! – Arnaud

+0

再次感謝Greg ......在你對R的幫助感到滿意後,你再次拯救我! – Arnaud

+4

這是一個有趣的想法,但它不會返回具有所需相關性的變量。 (例如,我計算了上述代碼重複100次的樣本相關係數:平均相關係數爲0.724,相關係數中只有5個大於0.75)。 –

9

在每個 試驗中,具有n次試驗的二項式變量和成功概率p可以被看作n次伯努利試驗的總和,每次試驗也都具有成功概率p的 。

類似地,你可以通過 構造具有所需相關性r的Bernoulli變量對來構造成對的相關二項式變量。

require(bindata) 

# Parameters of joint distribution 
size <- 20 
p1 <- 0.5 
p2 <- 0.3 
rho<- 0.2 

# Create one pair of correlated binomial values 
trials <- rmvbin(size, c(p1,p2), bincorr=(1-rho)*diag(2)+rho) 
colSums(trials) 

# A function to create n correlated pairs 
rmvBinomial <- function(n, size, p1, p2, rho) { 
    X <- replicate(n, { 
      colSums(rmvbin(size, c(p1,p2), bincorr=(1-rho)*diag(2)+rho)) 
     }) 
    t(X) 
} 
# Try it out, creating 1000 pairs 
X <- rmvBinomial(1000, size=size, p1=p1, p2=p2, rho=rho) 
#  cor(X[,1], X[,2]) 
# [1] 0.1935928 # (In ~8 trials, sample correlations ranged between 0.15 & 0.25) 

重要的是要注意,有許多不同的聯合分佈共享所需的相關係數是非常重要的。 rmvBinomial()中的模擬方法產生了其中的一個,但是它是否合適取決於生成數據的過程。

this R-help answer注意到一個類似的問題(其然後前進到 更詳細地解釋的想法):

而二元正態(給定的均值和方差)唯一地由相關係數定義,這是不是可以使用copula包生成相關的制服,然後用qbinom功能轉換的二項式變量二元二項式

+0

非常感謝喬希。我修改了腳本以允許更多的二項分佈。但是,正如http://stat.ethz.ch/pipermail/r-help/2007-Jely/135575.html所示,rho的邊界概率的某個函數的下界和上界有界(rho = 0.8時函數失效)。使用奇數比似乎是解決方案,但是......您是否知道如何概括所提議的功能,以便將比值比轉換爲超過2個分佈的有效二元相關性? – Arnaud

+0

@Josh我問過一個相關的問題,也許你可能想看看它? https://stackoverflow.com/questions/47006881/how-to-generate-a-binomial-vector-of-n-correlated-items – jaySf