在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
...
答案 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))