R中各种成功概率的二项分布图

时间:2018-07-20 14:03:22

标签: r plot

是否有可能在R中彼此相邻的成功概率不同的二项式分布随机变量绘制直方图样条形图/线形图?

试验次数(n)和样本空间保持不变。只有成功的概率(p)是不同的。为了使条形彼此相邻,R代码的外观如何?

这是我的意思的一个小例子:

yval <- 0:10 # sample space
plot(dbinom(yval, 10, 0.5) ~ yval, type = "h", col = "black", ylim = c(0, 0.35))
lines(dbinom(yval, 10, 1/6) ~ yval, type = "h", col = "red")
lines(dbinom(yval, 10, 0.6) ~ yval, type = "h", col = "green")
legend("topright", legend = c("p = 0.5", "p = 1/6", "p = 0.6"),
col = c("black", "red", "green"), lty = 1, cex = 0.7)

使用此代码,线可相互绘制。我必须在这里更改什么?

谢谢。

2 个答案:

答案 0 :(得分:1)

您的意思如下吗?

enter image description here

您可以在其他直方图的x值上添加一个小的偏移量:

yval <- 0:10 # sample space
plot(dbinom(yval, 10, 0.5) ~ yval, type = "h", col = "black", ylim = c(0, 0.35))
lines(dbinom(yval, 10, 1/6) ~ I(yval + 0.1), type = "h", col = "red") # + 0.1
lines(dbinom(yval, 10, 0.6) ~ I(yval + 0.2), type = "h", col = "green") # + 0.2
legend("topright", legend = c("p = 0.5", "p = 1/6", "p = 0.6"),
col = c("black", "red", "green"), lty = 1, cex = 0.7)

答案 1 :(得分:1)

要结束我的评论,这是我们可以使用barplot进行的操作:

prob <- c(0.5, 1/6, 0.6)
yval <- 0:10
Y <- t(outer(yval, prob, dbinom, size = max(yval)))
barplot(Y, names.arg = yval, beside = TRUE, col = 1:3, border = 1:3,
        legend.text = paste0("p = ", format(prob, digits = 2)))

enter image description here

只需将此作为替代。


备注1

请注意上面outer的使用。为什么我们必须额外做t()?我们不能只是这样做吗?

Y <- outer(prob, yval, dbinom, size = max(yval))

不。这会给您许多NaN并带有警告。选中args(dbinom)。函数dbinom期望yval位于prob的前面。


备注2

使用barplot可以很容易地为您产生一些“副作用”,如下所示(这样可以使您更容易比较它们的形状)。

prob <- c(0.5, 1/6, 0.6)
yval <- 0:10
Y <- outer(yval, prob, dbinom, size = max(yval))  ## no `t()` now
barplot(Y, names.arg = paste0("p = ", format(prob, digits = 2)), beside = TRUE)

未设置col的{​​{1}}参数时,将使用灰色,其暗度与条形的高度成正比。

enter image description here