来自给定二元离散分布的随机样本

标签 r statistics

假设我有一个二元离散分布,即概率值表 P(X=i,Y=j),对于 i=1,...n 和 j=1,...m。如何从这样的分布中生成随机样本 (X_k,Y_k), k=1,...N?也许有一个现成的 R 函数,如:

sample(100,prob=biprob)

其中 biprob 是二维矩阵?

一种直观的采样方法如下。假设我们有一个 data.frame
dt=data.frame(X=x,Y=y,P=pij)

x 和 y 来自哪里
expand.grid(x=1:n,y=1:m)

和 pij 是 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() 来模拟“二元性”。直觉上,我应该得到类似于我需要的东西。我不确定这是正确的方法。因此问题:)

另一种方法是使用吉布斯抽样,边缘分布很容易计算。

我尝试谷歌搜索,但没有真正相关的出现。

最佳答案

你快到了。假设您有数据框 dt使用 x、y 和 pij 值,只需对行进行采样!

dt <- expand.grid(X=1:3, Y=1:2)
dt$p <- runif(6)
dt$p <- dt$p / sum(dt$p)  # get fake probabilities
idx <- sample(1:nrow(dt), size=8, replace=TRUE, prob=dt$p)
sampled.x <- dt$X[idx]
sampled.y <- dt$Y[idx]

关于来自给定二元离散分布的随机样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2281561/

相关文章:

python - Scipy - Nan 计算马氏距离时

MySQL 获取月份之间的行

r - 如何从pickerInput文本换行选择,如果选择的长度很长,选择通常会在屏幕之外结束

r - 聚合不返回所有计算

r - 迭代数据框中的列,取平均值并将其与同一列中的每个值进行比较

r - 这两种比较有什么区别?

r - 添加考虑日期的列值

r - stata (11) 中逐个因子交互的语法是什么?

r - 如何将效果大小添加到 t 检验的 ggplot 条形图? (例如 Cohen 的 d 或 Hedges 的 g)

python - 如何从朴素贝叶斯分类器中的概率密度函数计算概率?