问题描述
我试图从两个分量分布的混合中生成一个双变量样本,即正态分布和伽马分布。我为此使用了“copula”包。
我写的代码如下-
library("copula")
mycop = normalcopula(param=c(0),dim=2,dispstr="ex")
mymvd = mvdc(
copula=mycop,margins=c("norm","norm"),paramMargins=list(list(mean=-1,sd=0.5),list(mean=1,sd=0.5)))
这给出了来自 normal(-1,1,0.5^2,0) 的双变量样本。与指数相同的代码将导致该分布的双变量样本。但我不知道如何从 w*Bivariatenormal + (1-w)*BivariateGamma 生成。请帮忙。我在 yt 到处搜索,但找不到任何东西。提前致谢。
解决方法
通常,您从 mixture of two distributions 中取样:
- 生成一个uniform(0,1) 变量(R 中的
runif
),然后 - 如果该变量小于
w
,则从第一个分布中采样,或 - 否则从第二个分布中采样。
同样,您可以通过生成均匀或非均匀随机整数从多个分布的混合中采样,然后根据所选的整数从分布中采样。