回答
的情況。下面是一個簡單的例子:
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列的矩陣。
在每個 試驗中,具有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
功能轉換的二項式變量二元二項式
非常感謝喬希。我修改了腳本以允許更多的二項分佈。但是,正如http://stat.ethz.ch/pipermail/r-help/2007-Jely/135575.html所示,rho的邊界概率的某個函數的下界和上界有界(rho = 0.8時函數失效)。使用奇數比似乎是解決方案,但是......您是否知道如何概括所提議的功能,以便將比值比轉換爲超過2個分佈的有效二元相關性? – Arnaud
@Josh我問過一個相關的問題,也許你可能想看看它? https://stackoverflow.com/questions/47006881/how-to-generate-a-binomial-vector-of-n-correlated-items – jaySf
- 1. 從指數分佈生成隨機數
- 2. 生成指數分佈的隨機數
- 3. 通過R中的隨機數生成查找分佈
- 4. 用R中的雙變量伽馬分佈生成隨機數
- 5. 均勻分佈的隨機數生成
- 6. 近似R中二項式隨機變量之和的分佈
- 7. R中的隨機數生成
- 8. R中的加權隨機數生成
- 9. 從CUDA中的高斯分佈生成隨機數
- 10. 二分圖的隨機生成樹
- 11. 從反伽瑪分佈隨機生成隨機採樣C++
- 12. 從均勻分佈生成隨機數的最快方法python
- 13. 從離散分佈生成隨機數的算法?
- 14. 製作CURAND從均勻分佈生成不同的隨機數
- 15. C#:從二項式分佈生成數字的數值算法
- 16. R生成聚簇的僞隨機數
- 17. perl中的隨機二項式分佈式數據集
- 18. 有關生成隨機數
- 19. R:如何生成這個條件二項式隨機變量?
- 20. 模擬生成R中截斷的邏輯斯蒂分佈隨機數
- 21. 從列表中創建分佈並生成隨後的分佈在Python中的隨機數
- 22. R中的隨機生成矩陣
- 23. Cholesky R的隨機指數相關矩陣的分解
- 24. 從隨機長生成隨機數
- 25. Ruby中生成高斯(正態分佈)隨機數的代碼
- 26. 在FORTRAN中截斷正態分佈的僞隨機數生成
- 27. python中指數分佈的隨機生成器(日誌功能)?
- 28. Ruby 1.9.2中的分佈式順序隨機數生成
- 29. Python - 生成相同的隨機數
- 30. 生成相同的隨機數onclick
你可以使用'bindata'軟件包,如下:https://stat.ethz.ch/pipermail/r-help/2007-July/135575.html。 (該鏈接是在谷歌搜索'R模擬相關二項變量'返回的第一頁...) –
感謝喬希,但我需要二項數據而不是二進制數據! – Arnaud
@Arnaud - 授予今天早上我沒有任何類型的咖啡因或興奮劑,但不是二項分佈的離散分佈,其中唯一可接受的值是「是/否」,「合格/不合格」,「真/假「,換句話說二進制?這就是[維基百科似乎也這麼想]。(http://en.wikipedia.org/wiki/Binomial_distribution) – Chase