R - 二项分布
R - 二项分布
Section titled “R - 二项分布”二项分布是一种基本的离散概率分布。它模拟在固定次数的独立试验中成功的次数,其中每次试验只有两种可能的结果(例如,成功/失败,正面/反面)。例如,我们可以用它来计算在 10 次掷硬币中恰好获得 7 次正面的概率。
R 提供了一套用于处理二项分布的四个函数。这些函数是进行计算和模拟的强大工具。
# R 中的二项分布函数dbinom(x, size, prob) # 密度函数(PDF)- P(X = x)pbinom(q, size, prob) # 累积分布函数(CDF)- P(X ≤ q)qbinom(p, size, prob) # 分位数函数(逆 CDF)rbinom(n, size, prob) # 随机数生成以下是参数的细分说明:
x,q:分位数向量(成功的次数)。p:概率向量。n:要生成的随机值数量。size:试验次数(例如,10 次掷硬币)。prob:单次试验成功的概率(例如,公平硬币为 0.5)。
dbinom() - 概率质量函数
Section titled “dbinom() - 概率质量函数”此函数计算在 size 次试验中观察到恰好 x 次成功的概率。让我们以 50 次试验和 0.5 的成功概率(例如 50 次掷硬币)为例,可视化其概率分布。
对于现代、出版质量的图形,我们将使用 tidyverse 中的 ggplot2 包。
# 确保您已安装 tidyverse: install.packages("tidyverse")library(ggplot2)library(dplyr)
# 定义参数num_trials <- 50prob_success <- 0.5
# 创建用于绘图的数据框binom_data <- tibble( successes = 0:num_trials, probability = dbinom(x = successes, size = num_trials, prob = prob_success))
# 使用 ggplot2 创建图表binom_plot <- ggplot(binom_data, aes(x = successes, y = probability)) + geom_col(fill = "#0072B2", alpha = 0.8) + # 使用柱状图表示离散分布 labs( title = "二项概率分布", subtitle = paste("n = ", num_trials, ", p = ", prob_success), x = "成功次数", y = "概率" ) + theme_minimal() # 使用简洁主题
# 显示图表print(binom_plot)
# 将图表保存到文件:# ggsave("binomial_distribution.png", plot = binom_plot, width = 8, height = 5)执行此代码后,它会生成一个条形图。x 轴显示成功次数(从 0 到 50),y 轴显示每个结果的概率。图表将呈钟形,在 25 次成功处达到峰值,这是最可能的结果。
pbinom() - 累积概率
Section titled “pbinom() - 累积概率”此函数计算事件的累积概率,即获得 q 次或更少成功的概率。这对于回答“在 51 次掷硬币中,获得 26 次或更少正面的概率是多少?”这类问题非常有用。
# 计算从 51 次掷公平硬币中获得 26 次或更少正面的概率。prob_leq_26 <- pbinom(q = 26, size = 51, prob = 0.5)
print(prob_leq_26)当我们执行上述代码时,它会产生以下结果:
[1] 0.610116qbinom() - 分位数函数
Section titled “qbinom() - 分位数函数”这是 pbinom() 的逆函数。它接受一个概率 p,并返回成功次数 x,使得 pbinom(x, ...) 等于 p。它回答诸如“当硬币掷 51 次时,多少次正面会标志着结果的第 25 百分位数?”这类问题。
# 查找当硬币掷 51 次时,25% 的结果低于多少次正面。quantile_val <- qbinom(p = 0.25, size = 51, prob = 0.5)
print(quantile_val)当我们执行上述代码时,它会产生以下结果:
[1] 23rbinom() - 随机数生成
Section titled “rbinom() - 随机数生成”此函数用于模拟。它从具有指定参数的二项分布中生成 n 个随机值。这对于模拟实验非常有用。
# 从一个包含 150 次试验、成功概率为 0.4 的实验中生成 8 个随机结果。set.seed(42) # 设置随机种子以保证可重现性random_outcomes <- rbinom(n = 8, size = 150, prob = 0.4)
print(random_outcomes)由于输出是随机的,除非您使用 set.seed(),否则您的结果会有所不同。将种子设置为 42 后,结果如下:
[1] 61 67 56 61 64 61 58 59