You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R生成事件发生次数直方图并计算其发生5次及以下的概率?

R语言实现二项分布可视化与概率计算

针对你需求的二项分布问题(30次试验,单次事件发生概率25%),可以通过R内置统计函数快速完成概率计算与分布可视化:

1. 计算事件发生5次及以下的概率

使用pbinom()函数计算累积二项分布概率,该函数直接返回随机变量≤指定值的概率:

# 计算P(X ≤ 5)
cum_prob <- pbinom(5, size = 30, prob = 0.25)
print(cum_prob)

执行后会得到具体数值(约0.193),代表30次抽样中事件发生次数不超过5次的概率。

2. 绘制事件发生次数的概率直方图

方法一:R基础绘图包

先生成所有可能发生次数(0到30)的概率值,再用barplot()绘制直方图:

# 生成x轴(事件发生次数)和对应概率
x <- 0:30
probabilities <- dbinom(x, size = 30, prob = 0.25)

# 基础直方图
barplot(
  probabilities,
  names.arg = x,
  xlab = "事件发生次数",
  ylab = "概率",
  main = "30次抽样中事件发生次数的概率分布",
  col = "lightblue",
  cex.names = 0.8  # 调整x轴标签大小避免拥挤
)

# 可选:高亮5次及以下的区域
barplot(
  probabilities,
  names.arg = x,
  xlab = "事件发生次数",
  ylab = "概率",
  main = "30次抽样中事件发生次数的概率分布(高亮≤5次区域)",
  col = ifelse(x <= 5, "coral", "lightblue"),
  cex.names = 0.8
)

方法二:ggplot2包(美观可视化)

如果偏好ggplot2风格,代码如下:

library(ggplot2)

# 构造数据框
dist_df <- data.frame(
  发生次数 = 0:30,
  概率 = dbinom(0:30, size = 30, prob = 0.25)
)

# 基础直方图
ggplot(dist_df, aes(x = 发生次数, y = 概率)) +
  geom_bar(stat = "identity", fill = "lightblue") +
  labs(
    x = "事件发生次数",
    y = "概率",
    title = "30次抽样中事件发生次数的概率分布"
  ) +
  theme_minimal()

# 高亮5次及以下的版本
dist_df$填充色 <- ifelse(dist_df$发生次数 <= 5, "coral", "lightblue")
ggplot(dist_df, aes(x = 发生次数, y = 概率, fill = 填充色)) +
  geom_bar(stat = "identity") +
  labs(
    x = "事件发生次数",
    y = "概率",
    title = "30次抽样中事件发生次数的概率分布(高亮≤5次区域)"
  ) +
  scale_fill_identity() +
  theme_minimal()

内容的提问来源于stack exchange,提问作者Evan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:07:19