我不知道如何在R中绘制某些代码结果的概率分布

时间:2019-04-18 10:35:01

标签: r statistics probability-distribution

我创建了一个程序,可以模拟掷骰子100次。在汇总单个骰子的结果以及如何绘制结果的概率分布方面,我需要帮助。

这是我的代码:

sample(1:6, size=100, replace = TRUE)

1 个答案:

答案 0 :(得分:0)

到目前为止,您已经完成了掷骰子示例的操作(请注意,我添加了一行以设置可重复性的种子:

set.seed(123)
x <- sample(1:6, size=100, replace = TRUE)

“将单个骰子的结果相加[]”的简单命令是table()

table(x)
# x
#  1  2  3  4  5  6 
# 17 16 20 14 18 15

然后,要“绘制结果的概率分布图”,我们必须首先获得该分布图;幸运的是,R提供了方便的prop.table()函数,可用于这种离散分布:

prop.table(table(x))
# x
#    1    2    3    4    5    6 
# 0.17 0.16 0.20 0.14 0.18 0.15 

那么我们可以轻松地绘制它;对于绘制PMF,我首选的绘制类型为"h"

y <- prop.table(table(x))
plot(y, type = "h", xlab = "Dice Result", ylab = "Probability")

enter image description here

更新:加权模具

sample()可以很容易地使用其prob参数来模拟加权模。来自help("sample")

  

用法
  样本(x,大小,替换=假,概率= NULL)

     

参数
  [省略了部分内容]
  概率概率权重向量,用于获取被采样向量的元素。

因此,我们只将您喜欢的权重添加到prob参数中,然后照常进行操作(请注意,我还将您的样本量从100增加到10000):

set.seed(123)
die_weights <- c(4/37, rep(6/37, 4), 9/37)
x <- sample(1:6, size = 10000, replace = TRUE, prob = die_weights)
(y <- prop.table(table(x)))
# x
#      1      2      3      4      5      6 
# 0.1021 0.1641 0.1619 0.1691 0.1616 0.2412 
plot(y, type = "h", xlab = "Dice Result", ylab = "Probability")

enter image description here