用于从正态分量和指数分量的混合中采样的 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,则从第一个分布中采样,或
  • 否则从第二个分布中采样。

同样,您可以通过生成均匀或非均匀随机整数从多个分布的混合中采样,然后根据所选的整数从分布中采样。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...