如何用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
相关产品推荐
相关产品推荐

