先有生活,才有科学。在概率论诞生之前,人类早已在生活中处理不确定性问题了。衡量方式主要是定性的、经验性的,甚至带有神秘主义色彩。农夫依靠代代相传的物候谚语推测丰歉,商人凭借模糊的航行记录估量风险,赌徒则通过历次胜负的切身感受来判断“赢面”。这种对不确定性的理解,深深植根于日常生活的重复与实践。它时而诉诸“运气”或“天命”这类神秘主义解释,时而又隐含了某种朴素的、未经量化的频率观念——即从过往事件发生的多寡来预见未来。
第一次关于概率的数学化思考,来自于1654年左右布莱兹·帕斯卡(Blaise Pascal)和皮埃尔·德·费马(Pierre de Fermat)在通信中讨论的“赌金分配问题”。他们通过数学方法解决了中断赌局中的公平分配问题,开创了概率的数学研究。后来,雅各布·伯努利的《猜度术》(1713年)和拉普拉斯的《概率的分析理论》(1814年)进一步完善了这一理论,提出了古典概率的经典定义:一个事件的概率,等于导致该事件发生的情况数目与所有可能情况总数之比。
定义:若某个试验共有\(n\)个互斥且等可能的结果,其中有\(m\)个结果会使事件\(A\)发生,则事件\(A\)发生的概率为:
\[ P(A) = \frac{m}{n} \]
例如,掷一枚公平骰子,所有可能结果的集合为 Ω = {1, 2, 3, 4, 5, 6}。
若事件 A 为“掷出偶数”,则有利于 A 的结果为 {2, 4, 6},因此\(P(A) = \frac{3}{6}\)。
若事件 B 为“掷出大于4的数”,则有利于 B 的结果为 {5, 6},因此\(P(B) = \frac{2}{6}\)。
显然,该定义强烈依赖于“所有结果等可能”这一理想化假设。这一假设在概率论起源的赌博情境中自然成立,例如骰子质地均匀、扑克牌洗匀,每个结果出现的机会均等。
然而,当我们尝试将这种古典概率的定义应用于现实世界的一般情境时,例如估算“明天下雨的概率”,便会立刻遇到根本性的困难。古典概率的核心前提是能够清晰界定一个由“等可能”结果构成的样本空间。但在预测降雨这种问题上,我们既无法穷尽所有影响天气的潜在因素(如大气压力、湿度、风速、云层形态等的无限组合),更难以断言每一种复杂的天气状况出现的可能性是完全相等的。现实世界中的不确定性往往源于复杂、连续且相互关联的变量,它们无法被简单地简化为一个有限的、等可能的结果集合。我们突然发现,简洁的古典概率定义不可行了。
例6-1:
在一个公平的六面骰子实验中,样本空间包含 1 到 6 共 6 个等可能的结果。定义事件 A 为“掷出偶数点”。请使用 R 语言根据古典型概率公式 \(P(A) = m/n\) 计算该事件的概率,并可视化不同点数的分布情况。
library(ggplot2)
# 定义样本空间包含的基本结果总数
n <- 6
# 定义事件 A 包含的有利结果个数(偶数:2, 4, 6)
m <- 3
# 根据古典型概率公式 P(A) = m/n 计算概率
classical_prob <- m/n
# ==================== 结果输出 ====================
{
cat("【参数】\n")
cat("总可能结果数 (n):", n, "\n")
cat("有利结果数 (m):", m, "\n")
cat("------------------------------------------\n")
cat("【计算结果】\n")
cat("古典概率 P(A) =", classical_prob, "\n")
}
## 【参数】
## 总可能结果数 (n): 6
## 有利结果数 (m): 3
## ------------------------------------------
## 【计算结果】
## 古典概率 P(A) = 0.5
# 古典概率可视化
classical_data <- data.frame(
点数 = 1:6,
类型 = c("奇数", "偶数", "奇数", "偶数", "奇数", "偶数"),
概率 = rep(1/6, 6)
)
ggplot(classical_data, aes(x = factor(点数), y = 概率, fill = 类型)) +
geom_col(alpha = 0.8) +
geom_hline(yintercept = classical_prob, linetype = "dashed", color = "red", linewidth = 1) +
annotate("text", x = 3.5, y = classical_prob + 0.05,
label = paste("P(偶数) =", classical_prob), color = "red") +
labs(title = "古典概率:公平骰子掷出偶数的概率",
x = "骰子点数", y = "概率", fill = "类型") +
scale_fill_manual(values = c("orange", "skyblue")) +
theme_minimal()
计算结果显示,样本空间总数为 6,满足“偶数”条件的有利结果共有 3 个(2、4、6)。根据公式计算得事件 A 的概率为 0.5,即 50%。可视化图表清晰地展示了骰子点数的均匀分布,每个点数出现的概率均为 1/6。图中红色虚线标示了事件 A 的概率高度,直观地表明了在等可能假设下,掷出偶数的可能性在理论上是确定的,体现了古典型概率模型的客观性与对称性。
数学家们也在如何更好地定义概率这件事情上困扰了很久。直到柯尔莫哥洛夫(Kolmogorov)提出了终极解决方案:“无法定义,那就不定义了”。他和同时代的数学家们意识到,与其纠结于“概率到底是什么”这个本体论问题,不如转而研究“概率应该满足哪些数学性质”这个更实用的问题。
于是,他们提出了概率的公理化方法。这个方法不关心概率到底是什么,只关心概率这个“数学表达”需要遵守哪些最基本的规则,以保证整个数学体系是逻辑自洽、严密无矛盾的:
设 \(\Omega\) 为样本空间,\(\mathcal{F}\) 为事件域(\(\Omega\) 的子集构成的可测集合),概率测度 \(P\) 是一个满足以下公理的函数:
概率公理的提出具有革命性意义。它将哲学层面的概率解释与数学层面的严格框架分离开来:概率的具体解释与来源可以多元化,但必须遵循统一的数学规则。这一体系突破了古典概型“等可能性”假设的局限,极大地拓展了概率论的应用范围,使其能够处理各类现实世界的不确定性问题。同时,公理化体系保证了逻辑的一致性,为概率运算奠定了坚实的数学基础。在这一严格的“规定”之上,我们可以对概率值的具体来源做出解释了。
频率学派认为概率是长期重复试验中事件出现的相对频率的极限:
\[P(A) = \lim_{n \to \infty} \frac{m}{n}\]
其中n为试验总次数,m为事件A发生的次数。
这种观点将概率视为客观存在的、可通过实验测量的物理量。它适用于在原则上可重复的随机现象(如抛硬币、抽检产品)。其估计值依赖于大量重复实验,例如,说“明天下雨的概率是60%”,意味着在大量类似的气象条件下,有60%的天数会下雨。
频率学派概率观点是客观、可验证的,也为经典统计方法(如假设检验、置信区间)打下了基础。(本书后面的内容就是基于这种观点。)
但它无法为“不可重复事件”分配概率。例如,“某支球队赢得下次世界杯的概率”或“某个特定假说为真的概率”,这些事件无法进行大量重复试验,因此频率解释在此显得力不从心。而后面的这个例子,也是经典假设检验最受质疑的地方。
例6-2:
根据频率学派的观点,概率定义为在相同条件下进行大量重复独立试验时,事件发生的长期相对频率的极限。假设天气预报称“明天下雨的概率是 60%”,这并非指明天某一时段的降雨程度,而是指在气象条件相似的历史日子里,约有 60% 的日子实际发生了降雨。请使用 R 语言模拟这一过程,并通过可视化验证随着样本量增加,观测频率趋于稳定(收敛于理论概率)的统计规律。
library(ggplot2)
# 1. 数据模拟
set.seed(12) # 保证结果可复现
n_similar_days <- 100 # 模拟100个历史相似日
# 生成伯努利试验结果:1=下雨(概率0.6), 0=未下(概率0.4)
simulated_rain <- sample(c(1, 0), n_similar_days, replace = TRUE, prob = c(0.6, 0.4))
# 计算观测到的频率(经验概率)
freq_estimate <- mean(simulated_rain)
# 输出核心数值结果
cat(sprintf("在%d个历史相似日观测到的下雨比例为: %.1f%%", n_similar_days, freq_estimate * 100))
## 在100个历史相似日观测到的下雨比例为: 64.0%
# 2. 可视化验证
freq_data <- data.frame(
天 = 1:n_similar_days,
结果 = factor(simulated_rain, levels = c(1, 0), labels = c("下雨", "未下")),
# 计算累计频率:到第i天为止,下雨天数占比
累计频率 = cumsum(simulated_rain) / (1:n_similar_days)
)
# 使用 ggplot2 绘图
ggplot(freq_data, aes(x = 天)) +
geom_line(aes(y = 累计频率), color = "blue", linewidth = 1) +
# 添加理论概率参考线 (红色虚线)
geom_hline(yintercept = 0.6, linetype = "dashed", color = "red", linewidth = 1) +
geom_point(aes(y = as.numeric(结果) * 0.1 + 0.05, color = 结果), size = 2, alpha = 0.6) +
labs(subtitle = '概率 = 在相似条件下,长期下雨的频率极限',
x = "样本数量", y = "累计下雨频率") +
scale_color_manual(values = c("下雨" = "skyblue", "未下" = "orange"), name = "天气") +
theme_minimal() +
theme(legend.position = "bottom")
模拟结果显示,在 100 个历史相似日中实际观测到的下雨比例为64.0%,与理论值 60% 接近。观察折线图可知,随着样本数量(天数)的增加,累计频率曲线在初期出现剧烈波动后,逐渐趋于平稳并紧密围绕红色虚线(理论概率 0.6)波动。这一过程验证了频率学派的核心观点:概率是大量重复试验中频率的稳定极限。
贝叶斯学派则将概率解释为个体对某个命题为真的信念水平。这种概率是主观的,代表基于现有知识对某事件发生可能性的相信程度。例如,医生基于病人的症状和检验报告,认为“患者得此病的概率是70%”,这反映的是医生个人基于现有证据的主观确信程度。
贝叶斯概率的核心是更新机制:初始的先验信念(Prior Belief)在获得新证据(Data)后,可通过贝叶斯公式更新为后验信念(Posterior Belief):
\[P(Hypothesis | Data) = \frac{P(Data | Hypothesis) \cdot P(Hypothesis)}{P(Data)}\]
这一框架将“从经验中学习”的过程形式化,使其既可应用于可重复现象,也可处理如一次性事件或科学假说检验这类问题,因而更贴近人类在实际决策中的认知模式。
然而,贝叶斯方法的局限性也正源于其主观性:先验概率的设定往往依赖主观判断,若先验选择不当,可能使后续推论偏离实际。此外,其结论的正确性更多依赖于逻辑一致性(即符合概率法则),而非频率学派所强调的客观可重复性。因此,贝叶斯分析常面临“仁者见仁,智者见智”的局面,不同主体可能基于同一证据得到截然不同的结论。
例6-3:
假设我们要评估“明天下雨”的概率,依据贝叶斯学派对概率的定义,我们不再依赖大量重复试验,而是从“先验信念”(历史经验)出发,逐步融入“卫星云图”、“湿度数据”、“数值模型”等新证据。请使用 R 语言模拟这一贝叶斯更新过程,并可视化信念如何随着信息的汇入而逼近最终结论。
library(ggplot2)
library(scales)
# ==================== 参数定义与计算 ====================
# 初始:基于历史数据的基本判断 (先验概率)
prior_belief <- 0.4
# 接收到新证据1:卫星云图显示降水云系正在接近
likelihood_1 <- 0.7
evidence_1 <- prior_belief * likelihood_1 + (1 - prior_belief) * (1 - likelihood_1)
posterior_1 <- (likelihood_1 * prior_belief) / evidence_1
# 接收到新证据2:大气湿度超过90%
likelihood_2 <- 0.65
evidence_2 <- posterior_1 * likelihood_2 + (1 - posterior_1) * (1 - likelihood_2)
posterior_2 <- (likelihood_2 * posterior_1) / evidence_2
# 接收到新证据3:数值天气预报模型一致预测降水
likelihood_3 <- 0.75
evidence_3 <- posterior_2 * likelihood_3 + (1 - posterior_2) * (1 - likelihood_3)
final_belief <- (likelihood_3 * posterior_2) / evidence_3
# ==================== 数据构建 ====================
# 构建更新过程的数据
update_process <- data.frame(
阶段 = c("Step 0: 初始信念",
"Step 1: 加入卫星云图",
"Step 2: 加入湿度数据",
"Step 3: 加入模型预测"),
# 逻辑顺序是:初始 -> 1 -> 2 -> 3
概率 = c(prior_belief, posterior_1, posterior_2, final_belief),
主要信息来源 = c("历史气候数据", "实时卫星数据", "气象站观测", "数值模型"),
证据强度 = c(NA, likelihood_1, likelihood_2, likelihood_3)
)
# ==================== 文本输出 ====================
{
cat("========== 信念更新过程 ==========\n")
for(i in 1:nrow(update_process)) {
cat(sprintf("阶段 %d: %s\n", i-1, update_process$阶段[i]))
if(i > 1) {
cat(sprintf(" -> 接收新证据(%s), 并基于阶段 %d 的结果进行更新\n",
update_process$主要信息来源[i], i-2))
cat(sprintf(" -> 更新后概率: %.1f%%\n", update_process$概率[i]*100))
} else {
cat(sprintf(" -> 基础概率: %.1f%%\n", update_process$概率[i]*100))
}
}
}
## ========== 信念更新过程 ==========
## 阶段 0: Step 0: 初始信念
## -> 基础概率: 40.0%
## 阶段 1: Step 1: 加入卫星云图
## -> 接收新证据(实时卫星数据), 并基于阶段 0 的结果进行更新
## -> 更新后概率: 60.9%
## 阶段 2: Step 2: 加入湿度数据
## -> 接收新证据(气象站观测), 并基于阶段 1 的结果进行更新
## -> 更新后概率: 74.3%
## 阶段 3: Step 3: 加入模型预测
## -> 接收新证据(数值模型), 并基于阶段 2 的结果进行更新
## -> 更新后概率: 89.7%
# ==================== 绘图可视化 ====================
ggplot(update_process, aes(x = 阶段, y = 概率, group = 1)) +
# 连线展示趋势
geom_line(color = "lightgreen", linewidth = 1.2, alpha = 0.8, arrow = arrow(angle = 20, length = unit(0.2, "cm"), type = "closed")) +
# 数据点
geom_point(aes(fill = 主要信息来源), size = 10, shape = 21, color = "white", stroke = 1) +
# 点上标注具体概率数值
geom_text(aes(label = sprintf("%.1f%%", 概率*100)),
color = "white", size = 2.5, fontface = "bold") +
# 标签与美化
labs(subtitle = '信息依次汇入:Step 1 (先验更新) → Step 2 (再次更新) → Step 3 (最终信念)',
x = "",
y = "降雨信念度 (概率)",
fill = "当前阶段引入的信息源",
caption = "注:最终概率(右侧)是包含了左侧所有历史信息的累积结果") +
scale_fill_manual(values = c("历史气候数据" = "grey",
"实时卫星数据" = "skyblue",
"气象站观测" = "orange",
"数值模型" = "darkgreen")) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits = c(0, 1)) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 0, hjust = 0.5, size = 9),
legend.position = "bottom",
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(color = "black", size = 11, face = "italic")
)
模拟过程展示了贝叶斯概率的核心逻辑——主观信念的动态更新机制。我们从 40% 的“先验信念”(基于历史气候经验)出发,随着“卫星云图”、“湿度数据”和“数值模型”三个新证据的依次引入,降雨的信念度被逐步修正,最终攀升至约 89.7%。折线图直观描绘了这一动态更新路径,表明贝叶斯概率并非静止不变的客观参数,而是一种随信息流动而变化的主观信念度量。
在深入探讨离散型分布与连续型分布之前,我们有必要先厘清“离散”与“连续”这两个基本概念。离散,意味着分离、可数、不连续。它像一串珠子,每一颗都是独立的个体,可以一一数清。连续,则意味着连绵、不可分割、无间断。它如同一条平滑流动的河流,任意两点之间仍可找到无限多的中间状态。
我们本能地倾向于认为世界是连续的。时间的流逝、空间的延展、温度的变化,在我们感官中似乎都呈现出平滑无断点的特质。然而,量子力学动摇了这一直觉:能量是一份一份的,电子轨道是分立的,微观世界的基础结构似乎本质上是离散的。于是,我们又转而相信,世界的底层或许是离散的。
然而,执着于微观世界的离散性,对宏观人类尺度的问题而言,往往缺乏实际意义。我们毕竟生活在“人”的尺度上,而非“原子”的尺度上。因此,概率论采取了一种务实而智慧的立场:不纠缠于“世界本质是离散还是连续”的形而上争论,而是将离散与连续视为两种互补的建模视角。
当面对计数问题,如一天内的顾客数量、一批产品中的次品数,我们选择离散分布,因为现实中的计数天然就是整数的、可数的。当处理测量问题,如身高、温度、时间间隔,我们则选用连续分布,因为在理论上,测量值的精度可以无限细化,取值充满整个区间。
更深刻的是,概率论还架起了离散与连续之间的桥梁。中心极限定理揭示:当离散事件的次数足够多时(例如反复投掷一枚硬币),其总体分布会逐渐逼近连续的正态分布。这种从离散到连续的渐进过渡,不仅体现了数学工具的灵活性,也暗示了在不同尺度下,模型可以自由转换。(这一点很重要)
理解了“连续是连接的离散,离散是分离的连续”之后,我们来看两种分布吧。
a) 离散概率分布与概率质量函数
离散概率分布是描述离散型随机变量取值规律的数学模型。所谓离散型随机变量,是指其所有可能的取值能构成一个有限或可数无限的集合,这一集合被称为该变量的样本空间。例如,掷一枚骰子的结果集合 {1, 2, 3, 4, 5, 6} 是有限的;而某网站在一分钟内的访问次数集合 {0, 1, 2, 3, …} 则是可数无限的。
为了精确刻画这种规律,我们引入概率质量函数(Probability Mass Function, PMF)。PMF 为随机变量\(X\)的每一个可能取值\(x_i\)分配一个明确的概率值,记作\(P(X = x_i) = p_i\)。它直接回答了“\(X\)恰好等于\(x_i\)的概率是多少”这一问题。其规律常以分布律表格的形式直观呈现:
| 随机变量\(X\)的取值 (\(x_i\)) | \(x_1\) | \(x_2\) | \(x_3\) | … |
|---|---|---|---|---|
| 概率 (\(P(X=x_i)\)) | \(p_1\) | \(p_2\) | \(p_3\) | … |
任何离散概率分布都建立在以下两条概率公理之上,这也构成了PMF的核心性质:
非负性:任一取值的概率均非负,即\(P(X=x_i) \geq 0, \quad \forall i\)。
归一性:所有可能取值的概率之和为1,即\(\sum_{\text{所有 } i} P(X=x_i) = 1\)。这保证了样本空间的完备性。
基于上述定义,离散分布展现出几个关键特征:
可加性:计算变量落在某区间或集合内的概率,只需将集合内所有个体取值的概率直接相加。例如,P(骰子点数小于3) = P(X=1) + P(X=2)。
单点概率有意义:这是与连续分布的根本区别。在离散分布中,单点概率\(P(X=x_0)\)是一个有具体意义的、可能非零的数值,这使其天然适用于描述“计数”和“分类”问题。
累积分布函数(CDF):离散分布的CDF定义为\(F(x) = P(X \leq x) = \sum_{x_i \leq x} P(X=x_i)\)。其图像是一个右连续的、非递减的阶梯函数,在每个取值点\(x_i\)处发生大小为\(p_i\)的跳跃。
离散概率分布是一种“点状”概率模型,概率质量被分配在有限或可数个孤立的点上。它可以描述计数与分类问题,刻画结果可明确区分、可逐一列举的随机现象。其概率运算基于直接的算术求和,直观且易于理解,许多连续问题也可通过离散化来近似求解。
例6-4:
现有一个经过特殊加权的非公平六面骰子。为了研究其投掷结果的分布规律,我们定义随机变量 \(X\) 为骰子朝上的点数(\(X \in \{1, 2, 3, 4, 5, 6\}\))。通过预先设定的概率分布模型,各点数对应的概率质量函数(PMF)设定为 \(P(X=x) = \{0.1, 0.2, 0.25, 0.25, 0.15, 0.05\}\)。
1.请通过R语言验证该分布是否满足概率公理(即所有概率值非负,且所有可能取值的概率之和为 1)。
计算投掷出点数 3 的单点概率 \(P(X = 3)\)以及投掷点数落在区间 [2, 4] 内的概率 \(P(2 \le X \le 4)\)。
计算该随机变量的累积分布函数 \(F(x)\),并给出 \(F(3)\) 的值(即 \(P(X \le 3)\))。
绘制概率质量函数图,以及累积分布函数图。
library(ggplot2)
library(patchwork) # 用于拼图
# 定义数据:一个非公平骰子以突出分布特征
x <- 1:6 # 所有可能取值
probabilities <- c(0.1, 0.2, 0.25, 0.25, 0.15, 0.05) # 自定义概率,总和为1
df_discrete <- data.frame(x = x, pmf = probabilities)
# 计算累积分布函数 (CDF)
df_discrete$cdf <- cumsum(df_discrete$pmf)
{
cat("=== 离散分布关键分析 ===\n")
cat("1. 概率质量函数 (PMF) 验证:\n")
cat(" - 所有概率值均非负: ", all(df_discrete$pmf >= 0), "\n")
cat(" - 概率总和为1: ", sum(df_discrete$pmf), "\n")
cat("2. 单点概率示例: P(X = 3) =", df_discrete$pmf[df_discrete$x == 3], "\n")
cat(" 区间概率示例: P(2 <= X <= 4) = P(X=2)+P(X=3)+P(X=4) =",
sum(df_discrete$pmf[df_discrete$x %in% 2:4]), "\n")
cat("3. 累积分布函数 (CDF) :\n")
cat(" - P(X <= 3) = F(3) =", df_discrete$cdf[df_discrete$x == 3], "\n")
cat(" - 该值等于P(X=1)+P(X=2)+P(X=3)\n")
}
## === 离散分布关键分析 ===
## 1. 概率质量函数 (PMF) 验证:
## - 所有概率值均非负: TRUE
## - 概率总和为1: 1
## 2. 单点概率示例: P(X = 3) = 0.25
## 区间概率示例: P(2 <= X <= 4) = P(X=2)+P(X=3)+P(X=4) = 0.7
## 3. 累积分布函数 (CDF) :
## - P(X <= 3) = F(3) = 0.55
## - 该值等于P(X=1)+P(X=2)+P(X=3)
# 绘制PMF
p_pmf <- ggplot(df_discrete, aes(x = factor(x), y = pmf)) +
geom_col(fill = "steelblue", width = 0.7) +
geom_point(size = 2) +
labs(subtitle = "PMF:柱高代表单点概率",
x = "骰子点数", y = "概率 P(X = x)") +
theme_minimal()
# 绘制CDF
p_cdf <- ggplot(df_discrete, aes(x = factor(x), y = cdf)) +
geom_col(fill = "darkred", width = 0.7, alpha = 0.8) +
# 添加累积值的标签
geom_text(aes(label = cdf), vjust = -0.5) +
labs(subtitle = "CDF:柱高代表累积概率",
x = "骰子点数", y = "累积概率") +
ylim(0, 1.1) + # y轴设定为0到1.1
theme_minimal()
combined_plot <- p_pmf / p_cdf
print(combined_plot)
b) 连续概率分布与概率密度函数
连续概率分布是描述连续型随机变量统计规律的数学模型。连续型随机变量与离散型的根本区别在于,其可能取值充满某个区间,是不可数的无限集合。例如,某地区成年人的身高可能落在区间 [1.5米, 2.0米] 内的任意实数值,理论上取值是无限精细且不可列的。
为了刻画这种连续统上的概率分布,我们引入概率密度函数(Probability Density Function, PDF)。PDF 是一个非负可积函数,记作\(f(x)\),它本身并不直接代表概率,而是描述概率在数值轴上的“密集程度”。随机变量\(X\)落在区间\([a, b]\)内的概率,可通过对其概率密度函数在该区间上积分求得:
\[ P(a \leq X \leq b) = \int_{a}^{b} f(x) \, dx \]
连续概率分布同样遵循概率公理,表现为概率密度函数的以下性质:
非负性:概率密度函数处处非负,即\(f(x) \geq 0\)。
归一性:概率密度函数在整个实数轴上的积分等于1,即\(\int_{-\infty}^{\infty} f(x) \, dx = 1\),这同样保证了所有可能情况的完备性。
连续分布具有若干重要特征,与离散分布形成鲜明对比:
区间概率有意义,单点概率为零:这是连续分布最显著的特征。由于连续变量取值无限精细,取任一特定值的概率恒为零,即\(P(X = x_0) = 0\)。因此,我们只关心它落在某个区间内的概率。
概率计算依赖积分:概率的计算从离散情形的求和转变为连续情形的积分运算,这反映了概率在连续区间上的“累积”思想。
累积分布函数(CDF):连续分布的CDF定义为\(F(x) = P(X \leq x) = \int_{-\infty}^{x} f(t) \, dt\)。其图像是一条从0单调增长至1的连续曲线,且在概率密度函数连续的点处,CDF是可导的,其导数即为概率密度函数:\(F'(x) = f(x)\)。
连续概率分布本质上是一种“线状”或“面状”的概率模型,概率被理解为密度在区间上的积分。它擅长描述测量类问题,如长度、时间、温度等可在连续尺度上度量的随机现象。
例6-5:
设\(X\)服从区间 \([1, 5]\) 上的连续均匀分布,即\(X \sim U(1, 5)\)。
写出\(X\)的概率密度函数\(f(x)\)的表达式。
计算\(X=2.5\)的概率,以及\(X\)落在区间\((2, 4)\)内的概率,即\(P(2 < X < 4)\)。
计算\(X\)不超过3的概率,即\(P(X \le 3)\)。
绘制概率密度函数(PDF)图,并用阴影区域标注 \(P(2 < X < 4)\) 对应的面积。绘制累积分布函数(CDF)。
library(ggplot2)
library(patchwork) # 用于拼图
# 定义自定义的连续均匀分布参数
a <- 1
b <- 5
{
cat("=== 连续分布关键分析 ===\n")
cat("1. 概率密度函数 (PDF) 验证:\n")
cat(" - 在区间[", a, ",", b, "]内,f(x) =", 1/(b-a), "\n")
cat(" - 在区间外,f(x) = 0\n")
cat("2. 单点概率: P(X = 2.5) = 0 \n")
cat("3. 区间概率示例: P(2 < X < 4) 为计算区间[2,4]上PDF曲线下的面积\n")
prob_interval <- punif(4, a, b) - punif(2, a, b)
cat(" - P(2 < X < 4) = F(4) - F(2) =", prob_interval, "\n")
cat("4. 累积分布函数 (CDF) 示例:\n")
cat(" - P(X <= 3) = F(3) =", punif(3, a, b), "\n")
}
## === 连续分布关键分析 ===
## 1. 概率密度函数 (PDF) 验证:
## - 在区间[ 1 , 5 ]内,f(x) = 0.25
## - 在区间外,f(x) = 0
## 2. 单点概率: P(X = 2.5) = 0
## 3. 区间概率示例: P(2 < X < 4) 为计算区间[2,4]上PDF曲线下的面积
## - P(2 < X < 4) = F(4) - F(2) = 0.5
## 4. 累积分布函数 (CDF) 示例:
## - P(X <= 3) = F(3) = 0.5
# 创建绘图数据
x_continuous <- seq(a - 1, b + 1, length.out = 1000)
df_continuous <- data.frame(
x = x_continuous,
pdf = dunif(x_continuous, min = a, max = b),
cdf = punif(x_continuous, min = a, max = b)
)
# 使用ggplot2绘制PDF并阴影标注区间概率
p_pdf <- ggplot(df_continuous, aes(x = x, y = pdf)) +
geom_line(linewidth = 1, color = "darkred") +
geom_area(data = subset(df_continuous, x >= 2 & x <= 4),
aes(ymax = pdf), fill = "gray70", alpha = 0.5) +
labs(subtitle = "PDF:阴影区域面积表示 P(2 < X < 4)",
x = "x", y = "概率密度 f(x)") +
scale_x_continuous(limits = c(0, 6), breaks = 0:6) +
theme_minimal()
# 使用ggplot2绘制CDF
p_cdf2 <- ggplot(df_continuous, aes(x = x, y = cdf)) +
geom_line(linewidth = 1, color = "purple") +
labs(subtitle = "CDF:一条从0到1的连续单调递增曲线",
x = "x", y = "累积概率 P(X ≤ x)") +
scale_x_continuous(limits = c(0, 6), breaks = 0:6) +
theme_minimal()
combined_plot2 <- p_pdf / p_cdf2
print(combined_plot2)
伯努利分布是离散概率分布体系的基石,它描述了单次“成功/失败”二元试验的随机结果。以此为起点,通过对独立重复伯努利试验设定不同的统计目标,派生出了二项分布(n 次试验中的成功次数)、几何分布(首次成功所需的试验次数)以及负二项分布(第 r 次成功所需的试验次数)。在此基础上,泊松分布可视为二项分布在试验次数极大而单次成功概率极小时的极限形态;而超几何分布则对应于不放回抽样场景,由于抽取过程破坏了试验的独立性,它亦可被视为二项分布在非独立条件下的推广或变体。
a) 伯努利分布 (Bernoulli distribution)
伯努利分布是最简单的离散概率分布,描述了单次伯努利试验的结果。伯努利试验是指仅有两种互斥结果(通常称为“成功”和“失败”)的单次随机试验。例如,在灾害监测中,某地区一日内是否发生森林火灾即为一个伯努利试验(发生记为“成功”)。试验结果常用随机变量 \(X\) 表示:成功记为 \(1\),失败记为 \(0\)。
其概率质量函数为:
\[P(X = x) = \begin{cases} p, & \text{若 } x=1 \\ 1-p, & \text{若 } x=0 \end{cases}\] 该分布的期望为 \(E[X]=p\),方差为 \(Var(X)=p(1-p)\)。
伯努利分布是构建其他复杂离散分布的理论基石。后续的二项分布、几何分布和负二项分布,均可视为在伯努利过程框架下,对多次独立伯努利试验中不同统计量进行建模的推广。这些分布的成立需满足伯努利过程的以下三个条件:
试验由多次相同的独立试验组成;
每次试验只有两种可能结果(成功或失败);
每次试验成功的概率 \(p\) 保持不变。
b) 二项分布 (Binomial distribution)
二项分布来源于对\(n\)次独立伯努利试验中成功总次数的建模。它描述了在固定次数的试验中,恰好获得 \(k\) 次成功的概率。其概率质量函数为:
\[P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}, \quad k = 0, 1, \dots, n\]
在统计特征上,二项分布的期望:\(E[X] = np\);方差:\(Var(X) = np(1-p)\)。 二项分布的形状取决于参数 \(n\) 和 \(p\)。当 \(p=0.5\) 时分布对称;当 \(p \neq 0.5\) 时分布呈现偏态。随着 \(n\) 增大,二项分布逐渐逼近正态分布。当 \(n=1\) 时,二项分布退化为伯努利分布。
例:6-6
假设某地区未来一周(7天)内每天发生强降雨的概率相互独立,且为 \(p=0.1\)。设随机变量 \(X\) 表示这一周内发生强降雨的天数。
计算\(X\)*取所有可能值(即 0 天到 7 天)的对应概率。
绘制该分布的概率质量函数(PMF)图。
library(ggplot2)
# 参数设置:n=7天,每日强降雨概率p=0.1
n <- 7
p <- 0.1
# 计算二项分布概率
x <- 0:n
prob <- dbinom(x, size = n, prob = p)
# 创建数据框
df_binomial <- data.frame(概率 = round(prob, 4))
df_binomial_h <-t(df_binomial)
colnames(df_binomial_h) <- paste0(x, "天")
# 计算并打印概率
{
cat("二项分布的概率:\n")
print(df_binomial_h)
}
## 二项分布的概率:
## 0天 1天 2天 3天 4天 5天 6天 7天
## 概率 0.4783 0.372 0.124 0.023 0.0026 2e-04 0 0
# 绘制概率质量函数图
ggplot(df_binomial, aes(x = factor(x), y = prob)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(x = "一周内发生强降雨的天数", y = "概率") +
theme_minimal()
c) 负二项分布 (Negative binomial distribution)
负二项分布来源于对一系列独立伯努利试验中,为获得第\(r\)次成功所需总试验次数的建模。它描述了在达到指定成功次数之前,需要进行恰好 \(k\) 次试验的概率。其概率质量函数为:
\[P(X = k) = \binom{k-1}{r-1} p^r (1-p)^{k-r}\]
它有两个参数:目标成功次数\(r\)和每次试验的成功概率\(p\)。在统计特征上,负二项分布的期望:\(E[X] = \frac{r}{p}\);方差:\(Var(X) = \frac{r(1-p)}{p^2}\)。负二项分布的形状取决于参数 \(r\) 和 \(p\)。当 \(r=1\) 时,负二项分布退化为几何分布。
负二项分布和二项分布没什么特殊的关系,不是因为它们有正负的关系。而是基于其概率公式中核心数学结构的相似性。
二项分布的概率公式源于二项式定理在正整数次幂的展开,其系数为经典的二项式系数\(\binom{n}{k}\)。
负二项分布的名称则来源于,当将其定义为“获得第\(r\)次成功前所经历的失败次数\(Y\)”时,其概率质量函数可以写成如下形式:
\[ P(Y=y) = \binom{-r}{y} p^r (-(1-p))^y \]
其中,系数\(\binom{-r}{y}\)正是二项式定理推广到负整数指数情形时所定义的负二项式系数。
例6-7:
某项调查寻找特定受访者的难度较大,已知每次寻访成功的概率仅为 0.15。设随机变量 \(X\) 表示为了获得 3 次成功所需进行的总走访次数。
计算从第 3 次到第 10 次走访之间,每种总次数对应的成功概率。
绘制该分布的概率质量函数(PMF)图。
# 参数设置:目标成功次数r=3,每次成功概率p=0.15
r <- 3
p <- 0.15
# 计算负二项分布概率(X: 总走访次数)
# 题目要求计算从第3次到第10次
x <- 3:10
prob <- dnbinom(x - r, size = r, prob = p) # R中参数化为失败次数
# 创建数据框
df_negbinomial <- data.frame(概率 = round(prob, 4))
df_negbinomial_h <- t(df_negbinomial)
colnames(df_negbinomial_h) <- paste0(x, "次")
{
cat("获得3次成功所需总走访次数的概率:\n")
print(df_negbinomial_h)
}
## 获得3次成功所需总走访次数的概率:
## 3次 4次 5次 6次 7次 8次 9次 10次
## 概率 0.0034 0.0086 0.0146 0.0207 0.0264 0.0314 0.0356 0.039
# 绘制概率质量函数图
library(ggplot2)
ggplot(df_negbinomial, aes(x = factor(x), y = prob)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(x = "总走访次数", y = "概率") +
theme_minimal()
d) 几何分布 (Geometric distribution)
几何分布是负二项分布中\(r=1\)的特殊情况,它来源于对一系列独立伯努利试验中,首次成功所需试验次数的建模。其概率质量函数为:
\[P(X = k) = (1-p)^{k-1} p\]
它只有一个参数:每次试验的成功概率\(p\)。在统计特征上,几何分布的期望:\(E[X] = \frac{1}{p}\);方差:\(Var(X) = \frac{1-p}{p^2}\)。其名称源于概率值序列构成了一个公比为\((1-p)\)的几何级数(等比数列)。
例6-8:
在针对某项社会政策的民意调查中,已知受访者表示“支持”的概率为 0.6。设 \(X\) 表示调查员遇到第一位支持者时所累计访问的人数。
请计算并展示前 7 次访问中,首次获得支持的概率分布。
绘制该分布的概率质量函数(PMF)图。
p <- 0.6
# 计算几何分布概率
x <- 1:7 # 考虑前50天
prob <- dgeom(x - 1, prob = p)
# 创建数据框
df_geometric <- data.frame(x = x, prob = prob)
# 创建数据框
df_geometric <- data.frame(概率 = round(prob, 4))
df_geometric_h <- t(df_geometric)
colnames(df_geometric_h) <- paste0(x, "次")
{
cat("前7次访问中首次获得支持的概率:\n")
print(df_geometric_h)
}
## 前7次访问中首次获得支持的概率:
## 1次 2次 3次 4次 5次 6次 7次
## 概率 0.6 0.24 0.096 0.0384 0.0154 0.0061 0.0025
# 绘制概率质量函数图
ggplot(df_geometric, aes(x = x, y = prob)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(x = "首次获得支持时访问的人数(X)",
y = "概率 P(X)") +
scale_x_continuous(limits = c(0.5, 7.5), breaks = 1:7) +
theme_minimal()
e) 超几何分布 (Hypergeometric distribution)
超几何分布来源于对有限总体进行无放回抽样时,样本中成功次数的建模,其试验的独立性因无放回而破坏。它描述了从包含\(M\)个成功个体的\(N\)个总体中,随机抽取\(n\)个个体时,恰好抽到\(k\)个成功个体的概率,其概率质量函数为:
\[P(X = k) = \frac{\binom{M}{k} \binom{N-M}{n-k}}{\binom{N}{n}}\]
它有三个参数:总体大小\(N\),总体中成功个体数\(M\),抽样次数\(n\)。在统计特征上,超几何分布的期望为\(E[X] = n \cdot \frac{M}{N}\),方差为\(\text{Var}(X) = n \cdot \frac{M}{N} \cdot \left(1 - \frac{M}{N}\right) \cdot \frac{N-n}{N-1}\)。超几何分布的名称源于其概率生成函数与超几何级数的关联,与几何分布无直接派生关系。
例6-9:
在一项关于城市居民生活满意度的社会调查中,研究小组建立了一份包含 100 名潜在受访者的名单(总体 \(N=100\))。其中,有 10 名受访者被标记为“具有特定社会学特征的关键受访者”(例如:某行业的工会代表,即成功 \(M=10\))。由于时间和经费限制,研究团队计划随机从名单中选取 15 人进行深度访谈(抽样 \(n=15\))。
求在选出的 15 人中,恰好包含 \(k\) 名“关键受访者”(\(k\) 从 0 到 10)的概率是多少?
绘制该分布的概率质量函数(PMF)图。
library(ggplot2)
# 参数设置
N <- 100
M <- 10
n <- 15
x <- 0:min(M, n)
prob <- dhyper(x, m = M, n = N - M, k = n)
# 创建数据框
df_hypergeometric <- data.frame(概率 = round(prob, 4))
df_hypergeometric_h <- t(df_hypergeometric)
colnames(df_hypergeometric_h) <- paste0(x, "名")
{
# 计算并打印概率表
cat("在15名访谈者中包含k名关键受访者的概率:\n")
print(df_hypergeometric_h)
}
## 在15名访谈者中包含k名关键受访者的概率:
## 0名 1名 2名 3名 4名 5名 6名 7名 8名 9名 10名
## 概率 0.1808 0.3568 0.2919 0.1297 0.0345 0.0057 6e-04 0 0 0 0
# 绘制概率质量函数图
ggplot(df_hypergeometric, aes(x =x, y = 概率)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(x = "抽中关键受访者的人数", y = "概率") +
scale_x_continuous(limits = c(-0.5, 8.5), breaks = 0:8) +
theme_minimal()
f) 泊松分布 (Poisson distribution)
泊松分布常用于建模在固定时间或空间区间内,稀有事件发生的次数,它可以看作是二项分布在 \(n\) 很大而 \(p\) 很小时的一种极限近似。其概率质量函数为:
\[P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0, 1, 2, \dots\]
在统计特征上,泊松分布的期望:\(E[X] = \lambda\);方差:\(Var(X) = \lambda\)。泊松分布的形状完全取决于参数 \(\lambda\)。当 \(\lambda\) 较小时,分布呈现明显的右偏态(长尾巴在右侧);随着 \(\lambda\) 的增大,分布逐渐变得对称并逼近正态分布。在离散型随机变量中,泊松分布的地位极其重要,它不仅是处理计数数据的基础模型,更是构建随机过程理论的核心基石。
例6-10:
假设某地区发生洪涝的年均次数 \(\lambda = 2.5\) 次。
计算一年内发生0到10次洪涝的具体概率。
并绘制该泊松分布的概率质量函数图。
# 参数设置:年均洪涝次数λ=2.5
lambda <- 2.5
# 计算泊松分布概率
x <- 0:10 # 考虑0到10次
prob <- dpois(x, lambda = lambda)
# 创建数据框
df_poisson <- data.frame(概率 = round(prob, 4))
df_poisson_h <- t(df_poisson)
colnames(df_poisson_h) <- paste0(x, "次")
{
# 计算并打印概率
cat("一年内发生洪涝次数的概率:\n")
print(df_poisson_h)
}
## 一年内发生洪涝次数的概率:
## 0次 1次 2次 3次 4次 5次 6次 7次 8次 9次 10次
## 概率 0.0821 0.2052 0.2565 0.2138 0.1336 0.0668 0.0278 0.0099 0.0031 9e-04 2e-04
# 绘制概率质量函数图
ggplot(df_poisson, aes(x = x, y = prob)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs( x = "一年内发生洪涝的次数", y = "概率") +
scale_x_continuous(limits = c(-0.5, 10.5), breaks = 0:10) +
theme_minimal()
连续单变量分布以不同形态刻画了各场景下连续随机变量的规律:正态分布描述对称无界数据,是统计体系的核心,通过对数变换可衍生出处理右偏数据的对数正态分布;伽马分布则是描述正偏态数据的核心,其特殊形式包括用于建模等待时间的指数分布和用于方差分析的卡方分布;而贝塔分布专门描述 \([0,1]\) 区间内的概率或比例数据。这些分布通过参数设定与变换,构成了覆盖多类数据形态与应用场景的连续概率模型体系。
a) 正态分布 (Normal distribution)
正态分布是概率论与统计学中最核心的连续概率分布之一,广泛应用于描述自然界、社会科学及工程领域中大量独立随机因素共同作用下的现象.该分布由高斯系统建立并应用于误差分析,故亦称为高斯分布。其概率密度函数为:
\[ f(x) = \frac{1}{\sigma\sqrt{2\pi}} \, e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \]
它有两个参数参数\(\mu\)为均值,决定分布的中心位置;\(\sigma\)为标准差,反映数据的离散程度。
正态分布具有以下重要数学性质:
对称性
概率密度曲线关于均值\(\mu\)对称,呈典型钟形。这一特性直接导出经验法则,为快速估计数据分布提供便利:
可加性
若\(X_1 \sim N(\mu_1, \sigma_1^2)\),\(X_2 \sim N(\mu_2, \sigma_2^2)\),且二者相互独立,则它们的和与差仍服从正态分布: \[ X_1 \pm X_2 \sim N(\mu_1 \pm \mu_2, \sigma_1^2 + \sigma_2^2) \]
线性变换不变性
若\(X \sim N(\mu, \sigma^2)\),则对任意常数\(a \neq 0\)和\(b\),有: \[ Z = aX + b \sim N(a\mu + b, a^2\sigma^2)。 \] 如果令\(a = \frac{1}{\sigma}\),\(b = -\frac{\mu}{\sigma}\). 我们将会得到著名的标准化公式:
\[ Z = \frac{1}{\sigma}X - \frac{\mu}{\sigma} = \dfrac{X - \mu}{\sigma} \sim N(0, 1). \] 标准化使我们能够将任意正态分布转化为标准正态分布,从而统一使用标准正态分布表进行概率计算,是统计推断的重要基础。
此外,“正态”二字是指标准、正常的分布形态。在适当条件下,许多非正态分布在样本量增大时会趋近于正态分布,这一现象由后面的中心极限定理所揭示,从而奠定了该分布在统计学中的中心地位。
例6-11:
假设某地区成年男性的身高数据服从正态分布。已知父亲身高 \(X_F \sim N(175, 6^2)\)(单位:cm),儿子身高 \(X_S \sim N(178, 7^2)\),且父子身高相互独立。
根据正态分布的可加性,求父子身高差 \(D = X_S - X_F\) 服从的分布(均值与方差)。
利用经验法则,指出大约 68.27% 的家庭,其父子身高差落在什么区间内?
若观察到某对父子身高差为 25 cm,利用标准化变换计算该情况的 Z 分数,判断其发生的概率,说明该情况是否罕见。
R语言:
library(ggplot2)
mu_f <- 175 # 父亲身高均值
sigma_f <- 6 # 父亲身高标准差
mu_s <- 178 # 儿子身高均值
sigma_s <- 7 # 儿子身高标准差
{
# 1. 利用可加性计算身高差 D = Xs - Xf 的分布参数
mu_d <- mu_s - mu_f
sigma_d <- sqrt(sigma_f^2 + sigma_s^2) # 注意标准差是方差的平方根
cat("1. 父子身高差 D 的分布为: N(", mu_d, ",", sigma_s^2 + sigma_f^2, ")\n")
cat(" 即均值 =", mu_d, ",标准差 =", round(sigma_d, 2), "\n\n")
# 2. 利用经验法则描述区间 (Mean +/- 1*SD)
lower <- mu_d - sigma_d
upper <- mu_d + sigma_d
cat("2. 根据经验法则,约 68.27% 的家庭身高差落在区间: [",
round(lower, 2), ", ", round(upper, 2), "]\n\n")
# 3. 计算身高差为 25cm 的 Z 分数和概率
d_val <- 25 # 观察到的身高差
z_score <- (d_val - mu_d) / sigma_d
# 右尾概率 P(Z > z)
prob <- pnorm(z_score, mean = 0, sd = 1, lower.tail = FALSE)
cat("3. 当身高差为 25cm 时:\n")
cat(" Z 分数 =", round(z_score, 2),",")
cat(" 发生该情况及更极端情况的概率 P(Z >", round(z_score, 2), ") =",
round(prob, 4), "\n")
}
## 1. 父子身高差 D 的分布为: N( 3 , 85 )
## 即均值 = 3 ,标准差 = 9.22
##
## 2. 根据经验法则,约 68.27% 的家庭身高差落在区间: [ -6.22 , 12.22 ]
##
## 3. 当身高差为 25cm 时:
## Z 分数 = 2.39 , 发生该情况及更极端情况的概率 P(Z > 2.39 ) = 0.0085
# 4. 绘图
x<-seq(-4,4,length.out=1000)
df<-data.frame(x=x,y=dnorm(x))
shade_df1 <- subset(df, x >= -1 & x <= 1)
shade_df2 <- subset(df, x >= -2 & x <= 2)
ggplot(df, aes(x = x, y = y)) +
# 绘制主密度曲线
geom_line(color = "black", linewidth = 1) +
geom_area(data = shade_df1, aes(x = x, y = y), fill = "blue", alpha = 0.5) +
geom_area(data = shade_df2, aes(x = x, y = y), fill = "steelblue", alpha = 0.5) +
geom_point(aes(x = z_score, y = 0), color = "red", size = 5) +
labs(
subtitle = "该对父子身高差Z分数落在了倍标准差范围之外",
x = "z_score",
y = "概率密度"
) +
theme_minimal()
根据正态分布的性质,独立的正态随机变量的线性组合仍服从正态分布。对于父子身高差 \(D = X_S - X_F\),其均值为 \(\mu_D = 178 - 175 = 3\),方差为 \(\sigma_D^2 = 7^2 + 6^2 = 85\)(注意差的方差是相加)。因此,\(D \sim N(3, 85)\),标准差约为 9.22 cm。这说明平均而言儿子比父亲高 3 cm。
利用正态分布的对称性与经验法则(\(68-95-99.7\) 法则),大约 68.27% 的数据应落在均值左右 1 个标准差范围内。计算得:\(3 \pm 1 \times 9.22\),即区间 \([-6.22, 12.22]\)。这意味着绝大多数(约 68%)家庭的父子身高差介于“父亲高 6.22 cm”到“儿子高 12.22 cm”之间。
为了判断身高差为 25 cm是否异常,我们使用标准化公式将其转化为标准正态分布下的 Z 分数: \(Z = \frac{25 - 3}{9.22} \approx 2.39\)。计算可知,\(P(Z > 2.39) \approx 0.0084\)。这意味着在随机选取的家庭中,父子身高差达到 25 cm 及以上的概率仅为 0.84% 左右。由于这是一个非常小的概率,我们可以认为这种情况是该群体中的极端值或异常情况。
b) 对数正态分布 (Lognormal distribution)
如果某个随机变量的对数服从正态分布,那么这个变量服从什么分布呢?我们把它叫做对数正态分布。其概率密度函数如下:
\[ f(x; \mu, \sigma) = \frac{1}{x\sigma\sqrt{2\pi}} \ e^{-\frac{(\ln x - \mu)^2}{2\sigma^2}}, \quad x > 0 \]
和正态分布类似,它也有两个参数:对数值的均值 μ和对数值的标准差 σ。
由于定义要求\(\ln X \sim N(\mu,\sigma^2)\),而对于正态分布,其均值、中位数、众数是同一个值。我们可以导出对数正态分布的一个更直观的参数化形式。
令\(m\)为\(X\)的中位数(Median)。根据对数正态分布的性质,可以得到一个非常简单的关系:**对数均值 μ 等于原始尺度数据中位数的自然对数,即:\(\mu = \ln m\)
因此,我们可以直接用原始尺度下的中位数\(m\)作为位置参数来描述分布,这构成了对数正态分布的另一种常见参数化形式:\((m, \sigma)\)。
\[ f(x; m, \sigma) = \frac{1}{x\sigma\sqrt{2\pi}} \exp\left(-\frac{(\ln x - \ln m)^2}{2\sigma^2}\right) \]
之所以用对数正态分布的中位数\(m = e^{\mu}\)作为参数,主要源于其对偏态分布的鲁棒性和直观的解释力。由于对数正态分布具有明显的右偏特性,其长右尾会显著拉高算术均值,使其偏离大多数数据点的集中位置;而中位数不受极端值影响,能够更稳健地反映数据的“典型”观测值。从数学上看,中位数与原始参数\(\mu\)直接对应,形式简洁(\(\mu = \ln m\)),这实际体现出在对数尺度上,\(\mu\)是中心位置,转换回原始尺度后,中位数\(m\)便是该中心在几何意义上的自然体现。
在实际应用场景中,许多近似服从对数正态分布的数据,如个人收入、房屋价格等,通常使用收入中位数、房价中位数等指标来描述典型情况,正是因为中位数比均值更能代表普通个体的状况,而不易被少数极高值所扭曲。
两种参数化形式本质等价,只是位置参数的选取不同。我们给出对应的关键统计量公式如下:
| 统计量 | 基于对数尺度的参数\((\mu, \sigma)\) | 基于原始尺度的参数\((m, \sigma)\) |
|---|---|---|
| 中位数 | \(\displaystyle \text{Median} = e^{\mu}\) | \(\displaystyle \text{Median} = m\) |
| 均值(期望) | \(\displaystyle E[X] = e^{\mu + \sigma^2 / 2}\) | \(\displaystyle E[X] = m \cdot e^{\sigma^2 / 2}\) |
| 众数 | \(\displaystyle \text{Mode} = e^{\mu - \sigma^2}\) | \(\displaystyle \text{Mode} = m \cdot e^{-\sigma^2}\) |
| 方差 | \(\displaystyle \text{Var}(X) = e^{2\mu + \sigma^2}(e^{\sigma^2} - 1)\) | \(\displaystyle \text{Var}(X) = m^{2} \cdot e^{\sigma^2}(e^{\sigma^2} - 1)\) |
例6-12:
对数正态分布是描述非负、右偏数据的重要概率分布,可以通过对数变换由正态分布衍生而来。假设某随机变量 \(X\) 服从参数为 \(\mu_{log} = 2\)(对数均值)和 \(\sigma_{log} = 0.5\)(对数标准差)的对数正态分布。
请列出对数正态分布的中位数、均值、众数及标准差。
使用 R 语言绘制该分布的概率密度函数曲线,并验证三者的大小关系是否符合右偏分布的特征(即 均值 > 中位数 > 众数)。
# 对数正态分布实现
library(ggplot2)
mu_log <- 2 # 对数均值
sigma_log <- 0.5 # 对数标准差
# 1. 原始尺度统计量计算
# 原始尺度中位数
median_val <- exp(mu_log)
# 原始尺度均值
mean_val <- exp(mu_log + sigma_log^2 / 2)
# 原始尺度众数
mode_val <- exp(mu_log - sigma_log^2)
# 原始尺度标准差 (根据题目要求补充)
sd_val <- sqrt(exp(2*mu_log + sigma_log^2) * (exp(sigma_log^2) - 1))
{
cat("=== 对数正态分布统计特征 ===\n")
cat("输入参数 (对数尺度): μ =", mu_log, ", σ =", sigma_log, "\n\n")
cat("原始尺度关键统计量:\n")
cat("1. 中位数:", round(median_val, 2), "\n")
cat("2. 均值:", round(mean_val, 2), "\n")
cat("3. 众数:", round(mode_val, 2), "\n")
cat("4. 标准差:", round(sd_val, 2), "\n\n")
}
## === 对数正态分布统计特征 ===
## 输入参数 (对数尺度): μ = 2 , σ = 0.5
##
## 原始尺度关键统计量:
## 1. 中位数: 7.39
## 2. 均值: 8.37
## 3. 众数: 5.75
## 4. 标准差: 4.46
# 2. 绘图
x <- seq(0.1, 20, length.out = 1000)
y <- dlnorm(x, meanlog = mu_log, sdlog = sigma_log)
df <- data.frame(x = x, y = y)
ggplot(df, aes(x = x, y = y)) +
geom_line(color = "black", linewidth = 1.2) +
# 添加统计量垂直线
geom_vline(xintercept = median_val, linetype = "dashed", color = "blue") +
geom_vline(xintercept = mean_val, linetype = "dotted", color = "red", linewidth = 1) +
geom_vline(xintercept = mode_val, linetype = "dotdash", color = "orange") +
# 标注文字
annotate("text", x = mean_val, y = max(y)*0.9,
label = paste("均值:", round(mean_val, 2)), color = "red", size = 4, hjust = 0) +
annotate("text", x = median_val, y = max(y)*0.75,
label = paste("中位数:", round(median_val, 2)), color = "blue", size = 4, hjust = 0) +
annotate("text", x = mode_val, y = max(y)*0.6,
label = paste("众数:", round(mode_val, 2)), color = "orange", size = 4, hjust = 0) +
labs( subtitle = paste0("Lognormal(μ=", mu_log, ", σ=", sigma_log, ")"),
x = "x ", y = "密度 f(x)") +
theme_minimal()
c) Gamma 分布 (Gamma distribution)
“伽马分布”得名于其定义中出现的特殊函数——伽马函数(Gamma Function),记作 \(\Gamma(\alpha)\)。该函数是阶乘概念在实数域和复数域上的推广,满足 \(\Gamma(n) = (n-1)!\)(\(n\) 为正整数)。由于伽马函数在分布的定义和归一化中起着核心作用,因此该分布被命名为“伽马分布”。
伽马分布源于对多个独立随机事件发生所需总时间的建模。如果要等待 \(\alpha\) 个独立事件依次发生,且每个事件的等待时间服从相同的指数分布(参数为 \(\beta\)),则总等待时间就服从伽马分布 Gamma(\(\alpha, \beta\))。因此,它本质上是多个独立指数分布随机变量之和的分布。
伽马分布的概率密度函数由两个参数决定,其形式为:
\[ f(x; \alpha, \beta) = \frac{1}{\beta^\alpha \Gamma(\alpha)} x^{\alpha-1} e^{-x/\beta}, \quad x > 0 \]
其中 \(\alpha\) 为形状参数,控制分布的整体形态;\(\beta\) 为尺度参数,影响数据的离散程度。此外,也常用形状参数 \(\alpha\) 与比率参数 \(\theta = 1/\beta\) 进行参数化,两种形式等价但适用场景不同。
在形态特征上,伽马分布展现出显著的灵活性。当 \(\alpha \le 1\) 时,密度函数从原点单调递减;\(\alpha > 1\) 时则呈右偏单峰形态,且随着 \(\alpha\) 增大逐渐逼近正态分布。尺度参数 \(\beta\) 则控制着分布的“拉伸”或“压缩”,较大的 \(\beta\) 使分布更分散,图像更为扁平。当 \(\alpha = 1\) 时,它退化为指数分布;当 \(\alpha = k/2\) 且 \(\beta = 2\) 时,即为自由度为 \(k\) 的卡方分布。此外,在 \(\alpha\) 较大时,伽马分布经标准化后可近似为正态分布,体现出其形态的广泛适应性。伽马分别的均值为 \(E[X] = \alpha\beta\),方差为 \(\text{Var}(X) = \alpha\beta^2\)。
在应用层面,伽马分布因其非负、右偏的特性,在多个领域发挥着重要作用。它被广泛应用于可靠性分析与生存数据建模,如设备寿命、疾病进展时间;在排队论中用于描述服务总时长;在气象与金融领域用于建模降水量、资产波动等正偏斜连续变量。同时,在贝叶斯统计中,伽马分布也常作为泊松强度或正态精度等参数的共轭先验。
例 6-13:
伽马分布的概率密度函数由形状参数 \(\alpha\) 和尺度参数 \(\beta\) 共同决定。
请分析形状参数 \(\alpha\) 对伽马分布形态的影响,并计算在不同 \(\alpha\) 取值下的均值和方差。
利用 R 语言绘制尺度参数 \(\beta\) 固定为 2,形状参数 \(\alpha\) 分别取 0.5、1、2、5 时的概率密度函数图,观察曲线随 \(\alpha\) 增大如何从单调递减转变为右偏单峰形态。
library(ggplot2)
library(patchwork)
# Gamma分布实现
# 不同形状参数的Gamma分布
shapes <- c(0.5, 1, 2, 5)
scale <- 2
# 生成数据
x <- seq(0, 20, length.out = 1000)
plots <- list()
for (i in seq_along(shapes)) {
alpha <- shapes[i]
# dgamma 函数计算概率密度
y <- dgamma(x, shape = alpha, scale = scale)
df <- data.frame(x = x, y = y)
# 使用 ggplot 绘制图像
p <- ggplot(df, aes(x = x, y = y)) +
geom_line(color = "steelblue", linewidth = 1.2) +
labs(title = paste0("Gamma分布 (α=", alpha, ", β=", scale, ")"),
x = "x", y = "密度 f(x)") +
theme(plot.title = element_text(size = 10))
plots[[i]] <- p
{
if (alpha == shapes[1]) {
cat("=== Gamma分布演示 ===\n")
cat("不同形状参数下的分布形态:\n")
}
cat(sprintf("α=%.1f: 均值=%.2f, 方差=%.2f\n",
alpha, alpha * scale, alpha * scale^2))
}
cat("\n")
}
## === Gamma分布演示 ===
## 不同形状参数下的分布形态:
## α=0.5: 均值=1.00, 方差=2.00
##
## α=1.0: 均值=2.00, 方差=4.00
##
## α=2.0: 均值=4.00, 方差=8.00
##
## α=5.0: 均值=10.00, 方差=20.00
# 组合多个图形
# wrap_plots 函数来自 patchwork 包
gamma_plot <- wrap_plots(plots, ncol = 2) +
plot_annotation(title = "Gamma分布 - 形状参数的影响")
# 显示组合后的图像
print(gamma_plot)
注:位置、尺度、形状
可能你已经注意到了,在描述正态分布时,我们用“位置参数和尺度参数”。而描述伽马分布时,我们用了“形状参数和尺度参数”。到底有什么不同呢?在统计学中,对概率分布参数的命名并非随意,而是基于一套统一的、描述参数如何影响分布形态的准则。这套准则定义了三种核心类型:
位置参数(如正态的均值\(\mu\)):决定了分布在整个数轴上的“锚点”,其作用仅是对概率图形进行整体平移而不改变其固有形态;尺度参数(如正态的标准差\(\sigma\)或伽马的\(\beta\))则调控分布的离散程度,如同对图形进行均匀的拉伸或压缩。这两者共同作用,即可完整描述一类形态固定的“模板”分布——例如正态分布,其完美对称的钟形作为一种固定“模板”,只需通过定位(\(\mu\))与缩放(\(\sigma\))即可适配于各种数据。
然而,当数据世界存在硬性边界(如数值必须大于零)并因而展现出从尖锐衰减到温和偏态等多种根本性形态时,固定的模板便不再适用。此时,形状参数(如伽马分布的\(\alpha\)) 便起作用了,它能驱动曲线在“J形”、“偏态钟形”乃至“近对称山形”之间连续演变。伽马分布正是凭借其形状参数\(\alpha\)来捕获这种形态的内在多样性,再结合尺度参数\(\beta\)来精细调整其分散范围。
d) 指数分布
指数分布是概率论中用于描述连续型随机变量的另一种重要分布,尤其以刻画随机事件发生的时间间隔而闻名。 其概率密度函数如下: \[ f(x; \lambda) = \lambda e^{-\lambda x}, \quad x \geq 0 \] 其中\(\lambda > 0\)称为率参数,表示单位时间内事件发生的平均速率。
指数分布的均值是\(E[X] = \frac{1}{\lambda}\),方差为\(\text{Var}(X) = \frac{1}{\lambda^2}\)。其概率密度曲线从\(\lambda\)开始单调递减,呈右偏形态,其形状完全由\(\lambda\)决定。\(\lambda\)越大,衰减越快,表示事件发生更频繁,平均间隔更短。
指数分布最核心的特性是无记忆性,即满足\(P(X > s + t \,|\, X > s) = P(X > t)\)。这意味着已知某个事件在特定时间内尚未发生,并不会影响其在未来一段时间内发生的概率,这使得它特别适用于描述如客户到达、设备寿命或放射性衰变等无老化效应的等待时间。
在分布族的谱系中,指数分布可视为形状参数 \(\alpha = 1\) 时的伽马分布特例,记作 Gamma(1, λ)。同时,它与泊松分布构成对偶关系:在泊松过程中,单位时间内事件发生的次数服从泊松分布,而连续两次事件间的时间间隔则服从指数分布。此外,指数分布是连续情形下的“几何分布”,两者都具有无记忆性,分别描述连续时间和离散试验中首次成功所需的等待。
例6-14:
指数分布是可靠性理论和排队论中最重要的连续分布之一,常用来描述“等待时间”或“寿命”问题。该分布的一个著名特性是“无记忆性”。
绘制概率密度曲线:在同一个坐标系中绘制率参数 \(\lambda\) 分别取 0.5、1、2 时的指数分布密度曲线(\(x\) 范围设为 0 到 10)。
验证无记忆性:
# 不同率参数的指数分布
rates <- c(0.5, 1, 2)
x <- seq(0, 10, length.out = 1000)
df <- data.frame()
for (rate in rates) {
y <- dexp(x, rate = rate)
df <- rbind(df, data.frame(x = x, y = y,
Distribution = paste0("Exp(λ=", rate, ")")))
}
# 绘制概率密度函数
ggplot(df, aes(x = x, y = y, color = Distribution)) +
geom_line(linewidth = 1.2) +
scale_color_manual(values = c("red", "blue", "orange")) +
labs(title = "指数分布概率密度函数",
x = "x", y = "密度 f(x)") +
theme(plot.title = element_text(face = "bold"),
legend.position = "top")
# 无记忆性
lambda <- 1
s <- 2
t <- 1
# P(X > s + t | X > s) = P(X > t)
prob_conditional <- pexp(s + t, rate = lambda, lower.tail = FALSE) /
pexp(s, rate = lambda, lower.tail = FALSE)
prob_unconditional <- pexp(t, rate = lambda, lower.tail = FALSE)
{
cat("===无记忆性验证:===\n")
cat(sprintf("P(X > %d + %d | X > %d) = %.4f\n", s, t, s, prob_conditional))
cat(sprintf("P(X > %d) = %.4f\n", t, prob_unconditional))
cat("两者相等:", abs(prob_conditional - prob_unconditional) < 1e-10, "\n\n")
}
## ===无记忆性验证:===
## P(X > 2 + 1 | X > 2) = 0.3679
## P(X > 1) = 0.3679
## 两者相等: TRUE
e) Beta分布 (Beta distribution)(后面如果不讲贝叶斯统计学,也可以不放了)
Beta 分布是定义在有限区间 [0, 1] 上的连续概率分布,由两个形状参数 \(\alpha\) 和 \(\beta\) 共同决定。其概率密度函数为:
\[ f(x; \alpha, \beta) = \frac{1}{B(\alpha, \beta)} x^{\alpha-1}(1-x)^{\beta-1}, \quad 0 < x < 1 \]
其中 \(B(\alpha, \beta) = \frac{\Gamma(\alpha)\Gamma(\beta)}{\Gamma(\alpha+\beta)}\) 称为 Beta 函数,充当归一化常数。Beta 分布的名称也来源于此。
Beta 分布的均值与方差分别为:\(E[X] = \frac{\alpha}{\alpha + \beta}\) 和 \(\text{Var}(X) = \frac{\alpha\beta}{(\alpha + \beta)^2(\alpha + \beta + 1)}\)。均值反映了 \(\alpha\) 与 \(\beta\) 的相对大小,方差则随参数增大而减小。
分布形态由参数 \(\alpha\) 和 \(\beta\) 的取值共同控制,呈现出丰富的变化规律:当 \(\alpha, \beta > 1\) 时呈单峰形态,峰值随两者增大而趋于对称;当 \(\alpha < 1, \beta < 1\) 时呈 U 形分布;当 \(\alpha < 1 \le \beta\) 或 \(\beta < 1 \le \alpha\) 时呈 J 形(单调变化),体现了对 [0, 1] 区间内不同数据模式的广泛适应能力。
Beta 分布最核心的性质在于其作为二项分布的共轭先验。在贝叶斯统计中,若对二项分布的成功概率 \(p\) 设定 Beta 先验分布,在观测到数据后,其后验分布仍为 Beta 分布,参数更新为 \(\alpha’ = \alpha +\)(成功次数),\(\beta’ = \beta +\)(失败次数),这一特性极大简化了贝叶斯推断的计算。
在分布族的谱系中:当 \(\alpha = \beta = 1\) 时,退化为 [0, 1] 上的均匀分布,代表“无信息”先验;当参数为整数时,Beta 分布与二项分布、伯努利分布存在深刻联系,其累积分布函数可用二项系数表示;此外,Beta 分布还可视为若干独立 Gamma 分布变量标准化后的比值,在贝叶斯统计分析中扮演着关键的桥梁角色。
例6-15:
Beta分布是定义在区间 [0, 1] 上的连续概率分布,由两个形状参数 \(\alpha\) 和 \(\beta\) 决定,该分布具有极高的形态多样性:当 \(\alpha, \beta < 1\) 时呈 U 形;当 \(\alpha < 1 \le \beta\) 或 \(\beta < 1 \le \alpha\) 时呈 J 形;当 \(\alpha, \beta > 1\) 时呈单峰偏态或对称分布。此外,Beta 分布是二项分布的共轭先验,这一特性在贝叶斯统计中极为重要。
library(ggplot2)
library(patchwork)
# Beta分布实现
# 不同参数组合展示不同形态
params <- list(
c(0.5, 0.5), # U形
c(2, 5), # 左偏
c(5, 2), # 右偏
c(2, 2), # 对称
c(1, 3), # J形
c(3, 1) # 反J形
)
plots <- list()
for (i in seq_along(params)) {
alpha <- params[[i]][1]
beta <- params[[i]][2]
x <- seq(0.001, 0.999, length.out = 1000)
y <- dbeta(x, shape1 = alpha, shape2 = beta)
df <- data.frame(x = x, y = y)
# 使用 ggplot 绘图
p <- ggplot(df, aes(x = x, y = y)) +
geom_line(color = "#6A8EAE", linewidth = 1.2) +
labs(title = paste0("Beta(α=", alpha, ", β=", beta, ")")) +
theme(plot.title = element_text(size = 10))
plots[[i]] <- p
}
# 使用 patchwork 组合图形
beta_plot <- wrap_plots(plots, ncol = 3) +
plot_annotation(
title = "Beta分布 - 形态多样性"
)
# 显示图形
beta_plot
# 共轭先验演示
prior_alpha <- 2
prior_beta <- 2
successes <- 8
failures <- 4
posterior_alpha <- prior_alpha + successes
posterior_beta <- prior_beta + failures
{
cat("Beta分布作为二项分布的共轭先验:\n")
cat("先验分布: Beta(α=", prior_alpha, ", β=", prior_beta, ")\n")
cat("观测数据: 成功", successes, "次,失败", failures, "次\n")
cat("后验分布: Beta(α=", posterior_alpha, ", β=", posterior_beta, ")\n")
cat("后验均值:", round(posterior_alpha / (posterior_alpha + posterior_beta), 3), "\n")
}
## Beta分布作为二项分布的共轭先验:
## 先验分布: Beta(α= 2 , β= 2 )
## 观测数据: 成功 8 次,失败 4 次
## 后验分布: Beta(α= 10 , β= 6 )
## 后验均值: 0.625
统计推断的核心任务是根据样本数据去推断总体的特征,而概率分布则从理论上描述了总体的随机规律。在统计推断中,我们假设数据是由某种特定的概率分布机制生成的(例如假设身高服从正态分布,网站点击服从二项分布)。概率分布作为理论支撑,从一堆杂乱无章的数字中提炼出系统的规律。概率分布不仅提供描述了数据形态(如对称性、离散程度),还为样本统计量(如均值、方差)的行为提供了数学依据。概率分布构建了统计推断得以进行的“现实世界”抽象模型,让我们能够用数学语言去量化不确定性。
概率分布描述的是总体的规律,但统计推断处理的是样本。连接总体与样本的桥梁正是下一章我们会讲到的抽样分布,而抽样分布本身也是概率分布的一种。著名的三大抽样分布(\(t\)分布、\(\chi^2\)分布、\(F\)分布)均源自于正态分布及其他基础概率分布的推导。掌握了概率分布的运算法则,我们才能知道在总体服从某种分布时,基于样本构造的统计量会服从什么分布。这种知识直接决定了我们能否计算出 \(p\)值、能否构建置信区间。对概率分布的深入理解,直接决定了统计推断方法的正确性与有效性,是我们理解“为什么这样计算”的理论根源。
统计推断不仅仅局限于经典的正态假设,现实世界的数据形态千差万别。概率分布家族的庞大(如处理比例数据的 Beta 分布、处理计数数据的泊松分布、处理寿命数据的指数分布)赋予了统计推断处理复杂问题的能力。通过为不同类型的数据匹配最合适的概率分布,我们可以构建更准确的模型,从而得出更可靠的结论。