在R中,制作概率分布表

时间:2016-06-16 20:22:24

标签: r

在R中,创建概率分布表(将用于抽样)的好方法是什么? 假设我有以下概率分布:

  x   y   p(x,y)
100   0      0.5
100 100      0.1
100 200      0.1
250   0      0.1
250 100      0.1
250 200      0.1

数据框是否是最适合此目的的类型?创建包含此概率分布的数据框(或其他合适的结构)的简单而优雅的方法是什么?

修改 我知道我可以简单地将三个向量连接到一个数据框中。我只是想知道是否有更清晰的方法来构造这样的表,例如(R伪代码):

p[100,0] <- 0.5
p[100,100] <- 0.1
...

1 个答案:

答案 0 :(得分:0)

那个结构很好。以下是您从中抽取10个样本的方法:

d[sample(1:nrow(d), 10, rep = T, prob = d$"p(x,y)"), -ncol(d)]

我们使用rep = T来替换样本。

请注意,prob参数无需归一化为总和为1.R将自动处理此问题。

编辑回复您的修改:您可以像这样构建上面的数据框:

d = data.frame(
    x = c(100, 100, 100, 250, 250, 250),
    y = c(0,   100, 200, 0,   100, 200),
    p = c(.5, .1,  .1,   .1,  .1, .1))