假设我有一个二元离散分布,即对于i = 1,...,n和j = 1的概率值表P(X = i,Y = j)。 ..m。如何从这样的分布生成一个随机样本(X_k,Y_k),k = 1,... N?也许有一个现成的R功能,如:给定二元离散分布的随机样本
sample(100,prob=biprob)
其中biprob是2维矩阵?
一个直观的方法是采样如下。假设我们有一个data.frame
dt=data.frame(X=x,Y=y,P=pij)
其中X和Y来自
expand.grid(x=1:n,y=1:m)
和伊斯兰圣战是P(X = I,Y = j)的。
然后我们得到我们的样本大小为N,通过以下方式(XS,YS):
set.seed(1000)
Xs <- sample(dt$X,size=N,prob=dt$P)
set.seed(1000)
Ys <- sample(dt$Y,size=N,prob=dt$P)
我用set.seed()来模拟 “bivariateness”。直觉上我应该得到类似于我需要的东西。我不确定这是否正确。因此,这个问题:)
另一种方法是使用吉布斯抽样,边际分布很容易计算。
我尝试了谷歌搜索,但没有真正相关出现。
再仔细读这篇文章,这是相同的解决方案,我建议。采样行可能比组合rmultinom和哪个更清晰。关键是要认识到行和列只是符号。 – Tristan
是符号是关键。二元离散分布与单变量离散分布相同,符号改变。我选择Anika的答案是正确的,但仅仅因为代码更简单:) Tristan给出了更好的理论解释。 – mpiktas
+1为好例子 – andi