如何解决用于从正态分量和指数分量的混合中采样的 R 代码
我试图从两个分量分布的混合中生成一个双变量样本,即正态分布和伽马分布。我为此使用了“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
,则从第一个分布中采样,或 - 否则从第二个分布中采样。
同样,您可以通过生成均匀或非均匀随机整数从多个分布的混合中采样,然后根据所选的整数从分布中采样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。