UCSD-Python-数据科学概率统计笔记-全-
UCSD Python 数据科学概率统计笔记(全)
001:课程介绍 🎯
在本节课中,我们将一起了解《使用Python进行数据科学中的概率与统计》这门课程的基本情况、学习目标以及课程结构。
这门课程是加州大学圣地亚哥分校数据科学微硕士项目的第二门课程。课程旨在教授数据科学与机器学习的数学基础。我们将学习如何对数据进行建模、分析、解释,并且最重要的是,如何思考数据。
我们的目标不仅是让你理解概率与统计的数学原理,更是让你能够将这些数学知识应用于真实数据。因此,我们会通过基础示例和简单模拟来引出每个概念,并使用直观且严谨的论证来推导有趣且实用的定理与技术。
课程的核心目标是为你将知识应用于现实世界做好准备。为了实现这一目标,课程讲座将配有Python代码笔记本。你可以运行并修改这些代码,从而在实践中更好地感受概率与统计的应用。
我们深知在线学习者的背景、技能和目标各不相同。因此,课程将从非常基础、自成体系的内容开始。在整个课程中,我们将逐步构建知识体系,为你提供从事数据科学工作以及学习本系列后续两门课程(机器学习和Spark)所需的工具。
以下是本课程的一些核心特点:
- 数学基础:课程聚焦于数据科学与机器学习的数学基础。
- 实践应用:强调将数学知识应用于真实数据,配有可操作的Python代码示例。
- 循序渐进:从基础内容开始,逐步深入,以适应不同背景的学习者。
- 承上启下:为后续的机器学习等高级课程奠定必要基础。
总而言之,在本节课中,我们一起了解了这门课程的整体框架与学习路径。它旨在通过结合严谨的数学理论和动手的Python实践,帮助你建立扎实的数据科学基础思维与技能。
002:课程概览 📚

在本节课中,我们将学习概率与统计的基本概念,了解它们为何是处理不确定性的强大工具,并预览整个课程将要涵盖的核心内容。
课程简介
大家好,我是Yoav Freend,这是概率与统计入门课程。这是第一个视频,因此是概率与统计的入门介绍。
我们将讨论概率,粗略地说,这涉及掷骰子之类的事情。我们也将讨论统计,粗略地说,这涉及记录棒球比赛得分之类的事情。
为何要学习概率与统计?
学习概率与统计,主要是因为它们是处理不确定性的非常强大的工具。
考虑以下示例:谷歌试图为我们提供从A点到B点的最佳路线。这里显示了两条路线:一条是最短路线,另一条是最快路线。
如果我们考虑从A到B的最短路线,一旦我们知道道路是如何构建的,这就是一个确定的事情。另一方面,从A到B的最快路线,则取决于交通状况和其他条件,这确实是我们存在很多不确定性的地方,因此我们需要统计学来帮助我们处理这种不确定性。
以下是另一个例子:搜索引擎。假设你有一个搜索引擎,正在寻找一些信息。你可以进行的第一类查询是确定性查询,例如查找所有包含“特朗普”或“希拉里”以及“辩论”这些词的网页。这是一个非常具体的条件,你可以要求搜索引擎查找所有这些页面。另一方面,更相关的做法可能是询问“特朗普和希拉里辩论”这个查询最相关的10个页面。这不是一个具有明确定义答案集合的查询,它涉及这些页面中出现了哪些词、哪些页面真正最相关、最新等等,这些我们都存在不确定性。
最后一个例子是关于保险公司的。对于保险公司,你有一份合同,其中明确规定:如果你在这家公司购买了人寿保险并且你去世了,那么保险公司必须向你的家人支付规定数额的美元。这是确定的事情。另一方面,保险公司本身必须处理大量的不确定性。它不知道哪些人会去世,因此它必须计算出最低的人寿保险费是多少,使得保险公司在10年内破产的概率小于,比如说1%(可能远小于这个数字)。无论如何,公司需要以某种方式处理的是,有多少投保人会去世以及需要支付多少赔偿金的不确定性。这就是我们需要处理不确定性的情况。
本课程将学习什么?
首先,我之前展示的导航、搜索引擎以及人寿保险市场,这些都是非常高级的问题。你在这里将学习的是这些方法所基于的基础。
你将解决在不确定性下进行推理的基本问题。例如,你将知道如何回答这类问题:如果你抛一枚硬币100次,得到至多10次正面的概率是多少?或者在扑克牌中拿到四条(四张相同点数的牌)的概率是多少?这些都是你将能够回答的问题。
如果你对计算机科学示例感兴趣,这里还有一些你可能能够回答的其他问题:假设你有一个包含一百万个元素的哈希表,你希望最多只有10个元素的间接寻址次数不超过5次,那么这个表需要多大?这是你将能够进行的计算。一个类似的问题是:假设你有一个路由器,该路由器偶尔会故障,故障率大约是每年一次。这给了你一些信息,但你可能想知道,给定它平均每年故障一次,它在第一个月内发生故障的概率是多少?这是你将能够回答的问题。
并非所有人都相信统计学。这里有一个来自篮球教练的例子,他不相信统计学,因为存在太多其他因素等等。确实有很多人基本上不想信任统计学,这没关系。但另一方面,你可以说,在同一领域(这里指篮球)工作的许多其他人确实信任统计学。这是一个为篮球迷提供不同球员统计数据的应用程序,这样他们就可以玩梦幻篮球并赢得很多钱。
总结
总而言之,当我们在世界上做任何事情时,我们周围都充满了不确定性。概率与统计提供了一种理性的方式来应对不确定性。

接下来我们将讨论什么是概率,然后是什么是统计学。我们下次见。
003:概率论入门 🎲

在本节课中,我们将学习概率论的基本概念。我们将通过一个简单的抛硬币实验,来理解概率论如何描述和分析随机事件,并初步探讨概率论与统计学的区别。
什么是概率论?

上一节我们介绍了课程的两个主要部分:概率论与统计学。本节中,我们来看看什么是概率论。

概率论是计算复杂事件概率的数学框架。这个定义听起来有些复杂。它的基本假设是,我们知道基本事件的概率。这里的“概率”和“事件”具体指什么,我们将在后续课程中精确定义。目前,我们可以先从常识角度来理解。
抛硬币实验
为了理解概率,让我们思考一个简单的问题:抛硬币。
我们抛一次硬币,得到反面。我们再抛一次,得到正面。我们通常相信,得到正面和反面的概率是相等的。但这究竟意味着什么?这是否意味着我们抛出的正面和反面次数会完全相等?并非如此。它的意思是,如果我们抛很多次硬币,比如抛10000次,那么正面出现的次数大约会是5000次。这就是我们的预期。
但“大约”是什么意思?我们如何更好地表达“大约”这个概念?因为我们可能实际上想知道,结果与预期值之间的偏差有多大。
模拟抛硬币
我们将使用伪随机数生成器来模拟抛硬币。为了计算方便,我们用 +1 代表正面,用 -1 代表反面。那么,正面的数量就与所有这些 +1 和 -1 的总和有关。我们期望这个总和是 0 或接近 0。
我们将改变抛硬币的次数,用 k 表示。以下是生成此类随机抛硬币结果的部分代码:
# 生成随机抛硬币结果(+1 或 -1)
coin_flips = np.random.choice([1, -1], size=k)
# 对抛硬币结果序列求和
total_sum = np.sum(coin_flips)
我们生成了许多序列(默认 n=100 个序列),并观察总和的分布。完整的代码细节可以在课程配套的笔记本中找到。
下图是一个直方图,展示了抛掷1000次硬币时,总和 S 的分布情况。正如我们所看到的,总和并非正好是 0。每次重新运行这个实验,得到的直方图都略有不同。然而,尽管每次都有所不同,所有这些抛硬币实验都有一个非常共同的特点:它们都集中在 0 附近,但并非正好是 0。对于1000次抛掷,总和低于 -250 或高于 250 的可能性极小。
概率论的解释
通过概率论,我们可以计算出总和 S 的绝对值(因为它可以是负数或正数)的预期范围。我们将证明,总和 Sk 大于 4 * sqrt(k) 的概率是极小的,大约是 2 * 10^{-8} 或 0.000002%。这意味着我们需要重复进行很多很多次1000次抛硬币的序列,才可能看到总和超过 4 * sqrt(k)。
让我们通过模拟来验证这一点。在模拟中,我们分别进行了100次、1000次和10000次抛硬币实验。红色标记线表示概率论预测的边界,在这个边界内,抛硬币的总和极有可能出现。
每次重新运行实验,分布都有些不同,但它从未超出红色标记线。这与我们的理论预测一致。
如果我们不按边界缩放,而是绘制完整的尺度,我们会看到:随着抛硬币次数 k 的增加,分布相对于总范围(例如,从 -k 到 k)而言,越来越集中在 0 附近。分布的宽度与 sqrt(k) 成正比。
实验总结
我们进行了一些实验,对 k 个对应于抛硬币的随机数(X 为 -1 或 +1,概率各半)进行求和。
我们的实验表明,总和几乎总是在 [-4 * sqrt(k), +4 * sqrt(k)] 这个范围内。
我们可以这样表述:当 k 趋近于无穷大时,范围 4 * sqrt(k) 除以 k,即 4 / sqrt(k),会趋近于 0。因此,我们可以说,Sk / k(即正面与反面次数之差除以总次数)趋近于 0。这基本上就是我们所说的概率各为一半的含义。
概率论的本质
那么,什么是概率论?它就是通过数学方法,精确地证明我们上面所做的陈述。之前我们只是进行了模拟,并提到了未来将证明的内容。但概率论的本质正是以精确的方式证明这些结论。
在大多数情况下,我们可以使用模拟(称为蒙特卡洛模拟)来近似计算这些概率,这基本上就是我们上面所做的小实验。
但这为什么不够呢?首先,计算概率能给出精确答案,而蒙特卡洛模拟只能给出近似值,并且需要运行更长时间才能获得更准确的答案。其次,计算概率通常比蒙特卡洛模拟快得多,本质上也是出于同样的原因。
课程总结

本节课中,我们一起学习了概率论的基本介绍。我们通过抛硬币实验,理解了概率论如何描述随机事件的长期规律,即大量重复试验中频率的稳定性。我们看到了实验总和 Sk 与 sqrt(k) 成正比的关系,并理解了 Sk/k 趋近于 0 是概率均等的数学表达。最后,我们区分了精确的概率计算与近似的蒙特卡洛模拟。

下一节,我们将探讨什么是统计学。
004:统计学 📊

在本节课中,我们将要学习统计学的基本概念,了解它如何与概率论相辅相成,并探索其在现实世界中的应用,如民意调查和A/B测试。
上一节我们介绍了概率论,它从已知的基础分布出发,计算复杂事件的概率。本节中我们来看看统计学,它处理问题的方向恰恰相反。
在统计学中,我们面对的是由某个随机过程生成的数据。我们的目标是从这些数据中,推断出该随机过程的性质。
从抛硬币到统计推断 🪙
让我们回到抛硬币的例子。我们假设一枚硬币是公平的(即正反面概率各为50%)。但我们如何验证这一点?
以下是统计推断的逻辑:
我们首先假设硬币是公平的。然后,我们计算在此假设下,观察到特定结果(例如,抛1000次得到570次正面)的概率。如果这个概率极小,我们就有信心拒绝“硬币公平”的假设,并认为硬币可能是有偏的。
如何计算概率?
回忆我们之前模拟抛硬币时,用 +1 代表正面,-1 代表反面。抛掷 k 次后,将所有结果求和得到 S_k。
- 如果正面次数为570,反面为430,则
S_k = 570*(+1) + 430*(-1) = 140。 - 根据概率论中的一个结论(将在后续课程中证明),对于公平硬币,
|S_k|的值极不可能超过4 * sqrt(k)。 - 当
k=1000时,4 * sqrt(1000) ≈ 126.5。由于140 > 126.5,因此观察到S_k = 140的概率极低。
由此,我们可以很有信心地得出结论:硬币很可能是有偏的。
如果正面次数是507呢?此时 S_k = 507 - 493 = 14,远小于126.5。这意味着,一个公平硬币产生此结果的概率是相当大的。因此,仅凭507次正面这个数据,我们无法得出硬币有偏的结论。
现实世界中的统计学应用 🌍
统计学不像概率论是纯数学分支,它直接解决现实世界的问题。以下是一些将“判断硬币是否公平”的逻辑应用于实际场景的例子。
1. 民意调查
假设即将举行一场只有D党和R党参与的选举。我们想知道选民的整体投票意向。询问所有选民成本过高,因此我们采用民意调查:随机选取一小部分人,询问他们的投票计划,然后据此推断整体情况。
数学上,这完全等同于抛掷一枚有偏的硬币(选民选择D党或R党),并判断正面(D党)出现的概率是否大于反面(R党)。
2. A/B测试
在网页界面设计中,A/B测试非常普遍。例如,我们有两个备选设计方案A和B(比如某个按钮在屏幕左侧或右侧)。为了判断用户更喜欢哪个设计,我们在用户访问网站时,随机展示设计A或B。
然后,我们测量用户停留时间、广告点击率等指标,来判断哪个设计更优。这同样类似于判断一枚“有偏硬币”(用户偏好)更倾向于哪一面。
除了上述例子,统计学还广泛应用于许多其他领域,例如:
- 估算全球变暖的速度。
- 判断某种医疗程序是否有效。
- 这些应用虽然更复杂,但核心的统计推断思想是相通的。
总结 📝
本节课中我们一起学习了:
- 统计学的目标:从随机过程生成的数据中,推断该过程的性质。
- 统计推断的基本逻辑:先建立假设(如“硬币公平”),再计算在该假设下观察到实际数据的概率,根据概率大小决定是否拒绝该假设。
- 统计学的现实应用:包括民意调查和A/B测试等,它们本质上都是对“有偏硬币”问题的建模与求解。

本节结束了对概率与统计的概述。接下来,我们将开始深入探讨如何进行具体的概率计算。
005:三卡拼图 🃏

在本节中,我们将通过一个名为“三卡拼图”的实际例子,探讨为什么需要严谨的概率论概念来解决看似简单的问题。我们将分析一个涉及三张特殊卡片的游戏,并揭示直觉推理可能导致的错误结论。
在之前的视频中,我简要解释了什么是概率。你可能会疑惑,为什么需要所有这些数学知识?它真的能帮助解决现实世界的问题吗?这里我将给出一个小谜题,这是一个非常自然的谜题,并非人为构造。我请你思考如何解答这个名为“三卡拼图”的问题。
想象你有一顶帽子,里面有三张卡片。
第一张卡片一面是红色,另一面是蓝色。
第二张卡片两面都是蓝色。
第三张卡片两面都是红色。
让我展示给你看:这是一张一面红一面蓝的卡片,这是一张两面红的卡片,这是一张两面蓝的卡片。很简单。我们将这些卡片放入帽子中并混合。
然后我们进行以下操作:我们随机抽取一张卡片,并将其放在桌子上。例如,这里桌子上有一张蓝色面朝上的卡片。我们称朝上一面的颜色为 U,它可以是蓝色(B)或红色(R)。
以下是游戏规则:如果卡片另一面的颜色不同,我付给你1美元。如果另一面的颜色相同,你付给我1美元。我认为这是公平的。为什么?假设朝上的是蓝色(实际上例子中就是蓝色),那么这张卡片可能是两面蓝的卡片,也可能是一面蓝一面红的卡片。所以有两种可能:另一面是红色,或者另一面是蓝色。两者发生的概率相同,因此1比1的赔率是公平的。
让我们看看这次的结果。实际上我翻到了红色,所以我付给你1美元。
为了确定赢得或失去1美元的概率,我们可以像之前一样使用蒙特卡洛模拟。我们将编写一个小程序,随机生成卡片的顺序,选择一张卡片,然后选择卡片的一面,最后打印出卡片以及哪一方获胜的结果。
以下是蒙特卡洛模拟的结果,你可以重新运行它。
每次运行都会得到略有不同的结果,但如果你看下面显示的数字,“不同”出现了17次,“相同”出现了33次。显然,“不同”发生的情况远少于“相同”。所以,尽管这个游戏看起来简单,但它对你不公平,平均来说我会从中赚钱。
正如我们所看到的,模拟结果与我们之前的论证不符。之前的论证一定是错误的。在模拟中,两面颜色相同的次数大约是颜色不同的两倍,因此其概率也大约是两倍。这意味着,如果你玩这个游戏,你输掉1美元的可能性大约是你赢得1美元的两倍。
因此,平均而言,你每次游戏会损失33美分,因为你以2/3的概率输掉1美元,以1/3的概率赢得1美元。
这里有一个替代论证:如果我们随机抽取一张卡片,那么有2/3的概率抽到两面颜色相同的卡片,只有1/3的概率抽到两面颜色不同的卡片。这基本上解释了我们所看到的现象。
所以,现在我们似乎理解了这个游戏。但问题是,最初的论证听起来也很有说服力,但它是错误的。那么,在不进行模拟的情况下,我们如何区分这个论证和另一个论证,并判断哪个是正确的?模拟固然可行,但有时正如你所见,运行模拟来回答概率问题可能很困难,你需要运行很长时间,而且只能得到近似结果。
因此,为了确保我们的论证正确,我们需要更形式化的理论。这就是本节视频的重点。我们需要诸如“结果”和“事件”这样的概念,这些内容我们将在下周开始讨论。
本节总结

在本节中,我们一起学习了“三卡拼图”游戏。通过这个例子,我们看到了直觉推理在概率问题中可能导致错误结论。我们使用蒙特卡洛模拟揭示了游戏的真正概率分布:抽到两面颜色相同的卡片的概率是2/3,而抽到两面颜色不同的卡片的概率是1/3。这解释了为什么游戏对玩家不公平。最后,我们认识到,为了严谨地分析和解决此类问题,需要引入更形式化的概率论概念,如“结果”和“事件”,这将是我们后续课程的重点。
006:概率论与统计学发展史 📜
在本节课中,我们将学习概率论与统计学的发展简史。了解这段历史有助于我们理解概率与统计学的整体框架,以及人们通常会提出哪些类型的问题。我们将看到,这些问题主要分为两大类。
概述
现代形式的概率与统计学大约始于1650年。然而,历史上人们提出的问题总体上可以分为两大类:一类是重复的机遇游戏,另一类是关于证据强度与信念程度的问题。下面的图表展示了这两条主线在历史上的许多重要事件,我们将在后续视频中详细解读。现在,我们先来了解一些主要组成部分。请记住,红色部分代表“机遇游戏”,蓝色部分则关乎“信念程度”。



机遇游戏 🎲
机遇游戏的历史非常悠久,远在1600年之前,甚至可能早于公元前就已存在。
最早的这类游戏基于所谓的“距骨”或“骰子”,这些是从山羊身上取下的骨头,被用来玩游戏。这类游戏的一个重要特点是它们会被反复进行多次。上图展示了人们玩距骨游戏的场景。

当然,今天我们有许多不同类型的机遇游戏,例如骰子、轮盘赌、纸牌和抛硬币等。在概率论为人所知之前,这通常被视为检验运气或解读神意的方式。
玩这些游戏时,最简单的假设是等概率假设。例如,一个骰子有六个面,每个面出现的概率就是 1/6;一枚硬币每面出现的概率是 1/2。你仅仅因为游戏道具的设计而假设所有结果出现的可能性相同。这是概率论最简单的设定,我们将会大量使用它。但并非所有情况都符合这个假设,例如骰子和轮盘赌符合,但距骨不符合,因为距骨是不对称的,落在不同面上的概率并不相同。
那么,当我们说距骨不同结果具有不同概率时,这意味着什么?如前所述,距骨落在窄面上的概率小于落在宽面上的概率。每个距骨都不同,因此概率也不同。但我们现在假设四个面的概率分别为 0.1、0.2、0.3 和 0.4,每个面对应你获得的点数。

我们可以通过模拟来验证。你可以下载相关笔记本来模拟投掷距骨多次并观察结果。例如,我们投掷1000次。下图展示了1000次结果的序列,底部统计了每个结果出现的次数(如105次、197次等)。当我们根据总次数进行归一化后,得到的频率(0.105、0.197、0.29、0.41)非常接近我们设定的真实概率(0.1、0.2、0.3、0.4)。

这就是我们所说的长期频率。长期频率的基本假设是:当你将某物投掷很多、很多次时,每个可能结果出现的次数占总次数的比例会收敛于某个固定数值。当然,这取决于你投掷的次数。如果我们只投掷100次,得到的频率与真实概率的差距就会变大。如果只投掷10次,那么概率为 0.3 的结果可能一次都没出现,频率为 0。因此,当重复游戏的次数很少时,你得到的结果可能与概率无关;但从长期来看,你会得到长期概率。
以上就是关于概率可以提出的问题类型。一个著名的例子是1654年帕斯卡写给费马的信中提出的问题:假设有一个纯靠运气的纸牌游戏,双方各投入1美元,赢家拿走全部2美元。如果游戏在决出胜负前被迫中止,双方必须分开,那么每个人应该拿走多少钱?要回答这个问题,你需要说:给定玩家一手中的牌,他在游戏结束时获胜的概率是多少?帕斯卡为某些情况解决了这个问题,并将其写在信里寄给了费马。这是一个关于机遇游戏、频率和概率的经典问题。
这就是频率主义的观点。它基本上认为,概率的唯一含义是:当你对许多人或许多情况重复相同的游戏或试验很多、很多次时,你得到的结果会收敛于这些概率。这就是概率的意义。这为概率论的大部分数学构建了基础,在游戏、民意调查等情境中是合理的。
信念与证据强度 🧠
然而,并非所有情况都适合将概率视为重复多次相同游戏的结果。以下是一些例子。
假设气象学家说明天下雨的概率是 10%。这意味着什么?明天要么下雨,要么不下雨。而明天只会发生一次,你无法重复同一个明天很多次。因此,你不能真的将这 10% 的概率理解为“如果重复同一天很多次,有 10% 的时间会下雨”,因为那一天只发生一次。
类似地,假设外科医生告诉你,你正在考虑的某个特定手术出现并发症的概率是 2%。这可能意味着 2% 接受该手术的患者出现了并发症。这是一个合理的含义。但这对你个人意味着什么?也许大多数并发症发生在90岁以上的患者身上,而你只有35岁,那么这个 2% 对你来说可能毫无意义。
这引导我们走向另一种类型的概率,它与置信度、衡量证据以及量化观点有关。如果我们回溯到1650年以前,人们使用“可能的”这个词,但其含义并非量化的。即使在今天,如果你说“这很可能”或“probably”,它也没有任何量化含义。韦氏词典给出的定义是:“在似乎合理真实、符合事实、可预期或没有太多怀疑的范围内”。所有这些基本上都是在说“很可能意味着非常可能发生”或“我相当确定它会发生”,这很常见,但与数学、与机遇游戏无关。
1650年之前使用的一个术语“probable doctor”(可能的医生),展示了“可能的”这个词是如何被使用的。它的意思是“被某个权威机构批准的医生”。在当时欧洲的语境下,“批准”通常意味着教会。因此,“可能的”这个含义与我们今天直观的理解非常不同。今天,医学博士也需要通过委员会考试获得认证,才能成为“好医生”或“委员会认证的医生”,所以我们与那时在本质上并无太大不同,尽管用词不同。
现在,让我们思考医生面临的问题类型。如果你想诊断一个病人,需要整合许多不同的信息片段。下图展示了进入诊断过程的不同类型信息:患者访谈、体格检查、病史、医学检查等。

大多数信息都是不确定的。你并不确切知道一个人的血液成分,特定样本的结果可能每天都有变化。此外,不同的信息片段具有不同的相关性。血液检查结果可能相关性不大,而X光片可能揭示很多信息,或者MRI可能揭示很少。当你处于这种情况时,你拥有来自不同地方的信息。对于每一片信息,你都想以某种方式关联你当前的置信度。医生在很大程度上是凭直觉做到这一点的,但这类问题无处不在,不仅限于医学。
当我们谈论整合证据时,我们谈论的是医学、经济学、投资、法律、科学、技术等许多领域的核心问题,它们都依赖于整合证据。如果人们想定量地做这件事,就会使用概率和统计学。通常,你并不会多次重复一个实验。在某些特定情况下你会,但在你或医生面临的大多数重要决策中,他们只有这一个需要治疗的病人,因此说“某事的概率是多少”并没有实际意义。
这方面的数学由概率论提供,但围绕它的大部分讨论并非数学性的。它确实与说服以及如何比较不同证据有关。其中一些是数学,但很多是讨论,这就是你在统计学中会遇到的情况,你并不会得到非常明确的结果。将所有这些纳入一个通用框架的流行方法是贝叶斯统计学。贝叶斯统计学的核心是如何评估证据以及如何整合证据。尽管从根本上它们使用相同的数学,但它并不采取与频率主义相同的方法。
总结
以上就是大致的介绍。图表中有更多细节,在未来的视频中,我将带您详细了解这张图,并讲述更多细节。

本节课中,我们一起学习了概率论与统计学的简要发展史。我们了解到,现代概率统计起源于17世纪中叶,其核心问题主要沿着两条主线发展:一是基于长期频率的“机遇游戏”问题,形成了频率主义学派;二是关于证据强度与主观信念的问题,这引出了贝叶斯统计学。理解这两种不同的视角,对于我们后续深入学习概率与统计的数学细节和应用场景至关重要。
007:元素、集合与隶属关系 👨🏫

在本节课中,我们将开始学习集合论的基础知识。我们将首先为事物命名,以便精确而简洁地描述它们。具体内容包括:元素、集合、一些常见的集合、隶属关系,以及空集与全集。
元素与集合 🧱
上一节我们介绍了课程目标,本节中我们来看看集合论的基础构件。
集合的基石是元素。元素是如此基本,我们可以将其视为“原子”。元素可以是任何事物,例如著名运动员莱奥西、科技公司谷歌或常用药物阿司匹林。
在实际应用中,我们处理的元素通常更具结构性,例如字母、单词、文档或网页。由于我们关注概率与统计,因此会大量讨论数字。但为众多不同事物寻找图示可能变得繁琐,因此数字可能以抽象形式表示,但我们知道它们代表的是真正有趣的内容。
除了单个元素,我们常常需要关注更宏观的图景。为此,我们引入集合。集合就是元素的集合,“集合”与“收集”是同义词。定义一个集合,我们需要明确其包含的元素。
以下是定义集合的几种方法:
- 列举法:直接列出所有元素,并用大括号
{}括起来。例如,硬币的两面可以表示为{正面, 反面}。 - 隐式描述法:当集合较大时,可以省略部分元素并用“...”表示。例如,数字集合可以表示为
{0, 1, ..., 9}。 - 描述法:用语言描述集合的特性。例如,“所有四个字母的单词的集合”。
随着描述层级的提升,表达变得更紧凑、更具表现力,但也可能带来模糊性。因此,无论选择哪种方法,核心是确保定义清晰明确。
常见集合 📚
上一节我们了解了如何定义集合,本节中我们来看看一些在数学和计算机科学中常见的特定集合。
我们可以使用上述方法描述几个常见的集合:
- 整数集 (Z):包含所有负整数、零和正整数,从负无穷到正无穷。记作 Z。
- 自然数集 (N):包含零及所有正整数(0, 1, 2, 3, ...)。记作 N。
- 正整数集 (P):包含所有大于零的整数(1, 2, 3, ...)。记作 P。
- 有理数集 (Q):所有可以表示为两个整数之比的数(分子和分母都是整数,分母不为零)。记作 Q(代表商)。
- 实数集 (R):包含所有有理数和无理数的集合。
注意,我们通常使用便于记忆的助记名称,例如 R 代表实数,Q 代表商(有理数),P 代表正数。整数集使用 Z 是因为它源自德语单词“Zahlen”(数字)。
我们将遵循一个方便的约定:使用大写字母(如 A, B, Z)表示集合,使用小写字母(如 x, y, a)表示元素。
隶属关系 ↔️
上一节我们认识了一些标准集合,本节中我们来看看如何描述元素与集合之间的关系。
一旦定义了集合,我们就需要说明哪些元素在集合内,哪些在集合外。
- 属于:如果元素
x是集合A的成员,我们说x属于A,记作x ∈ A。- 例如:
0 ∈ {0, 1},π ∈ R(实数集)。
- 例如:
- 包含:等价地,我们也可以说集合
A包含元素x,记作A ∋ x(这是∈符号的反转)。- 例如:
{0, 1} ∋ 0,R ∋ π。
- 例如:
我们同样需要其对立面的表述:
- 不属于:如果元素
x不在集合A中,我们说x不属于A,记作x ∉ A。- 例如:
2 ∉ {0, 1},π ∉ Q(有理数集)。
- 例如:
- 不包含:等价地,集合
A不包含元素x,记作A ∌ x。- 例如:
{0, 1} ∌ 2,Q ∌ π。
- 例如:
小测验:考虑“美国州”的集合。判断以下是否属于该集合:
- 加利福尼亚州:
∈(属于) - 佛罗里达州:
∈(属于) - 纽约州:
∈(属于) - 以色列国:
∉(不属于)
在集合定义中,元素的顺序和重复出现无关紧要。集合 {0, 1} 与 {1, 0} 或 {0, 1, 1, 1} 是同一个集合。如果你需要考虑顺序或重复,则需要使用有序元组或多重集,这将在后续课程中讨论。
空集与全集 ⚫️⚪️
上一节我们讨论了元素与集合的一般关系,本节中我们来看看两个特殊的集合。
在所有集合中,有两个集合尤为特殊。
- 空集 (∅ 或 {}):不包含任何元素的集合。记作
∅或{}(这是Python中表示空集的方式)。- 空集的性质是:对于任何元素
x,都有x ∉ ∅。
- 空集的性质是:对于任何元素
- 全集 (Ω):包含所有可能元素的集合。记作
Ω。- 全集的性质是:对于任何元素
x,都有x ∈ Ω。
- 全集的性质是:对于任何元素
引入全集 Ω 是为了让我们只关注相关的元素。例如,如果设定 Ω = Z(整数集),那么当我们谈论“质数”时,就明确指的是像2, 3, 5这样的数字,而不是亚马逊Prime会员或优质房地产。
需要注意的是,全集 Ω 取决于具体的应用场景。例如,讨论温度时,Ω 可能是实数集 R;讨论文本时,Ω 可能是所有单词的集合。空集是唯一的(因为没有元素的集合只有一个),但全集可以有很多个,随应用而变化。
Python中的集合操作 💻
上一节我们学习了集合的数学概念,本节中我们来看看如何在Python中实现这些基本操作。
定义集合
在Python中,可以使用花括号 {} 或 set() 函数来定义集合。
# 方法一:使用花括号
set_one = {1, 2}
print(set_one) # 输出: {1, 2}
# 方法二:使用set()函数
set_two = set([2, 3]) # 传入一个列表
print(set_two) # 输出: {2, 3}
定义空集
定义空集时,只能使用 set() 函数。使用 {} 定义的是空字典。
# 正确方法
empty_set1 = set()
print(type(empty_set1)) # 输出: <class 'set'>
print(empty_set1) # 输出: set()
# 这也是空集
empty_set2 = set([]) # 传入空列表
print(type(empty_set2)) # 输出: <class 'set'>
# 错误方法:这会创建一个空字典,而不是空集
not_a_set = {}
print(type(not_a_set)) # 输出: <class 'dict'>
测试隶属关系
使用关键字 in 和 not in 来测试元素是否属于集合。
furniture = {"desk", "chair"}
# 检查元素是否在集合中
print("desk" in furniture) # 输出: True
print("bed" in furniture) # 输出: False
# 检查元素是否不在集合中
print("desk" not in furniture) # 输出: False
print("bed" not in furniture) # 输出: True
检查集合是否为空及获取大小
使用 len() 函数获取集合中元素的数量(大小)。检查集合是否为空,可以判断其长度是否为0,或者直接使用 not 运算符(但后者可能不够直观)。
S = set() # 空集
T = {1, 2}
# 方法一:使用 not 运算符 (不够直观)
print(not S) # 输出: True (S为空)
print(not T) # 输出: False (T不为空)
# 方法二:检查长度是否为0 (推荐)
print(len(S)) # 输出: 0
print(len(S) == 0) # 输出: True (S为空)
print(len(T)) # 输出: 2
print(len(T) == 0) # 输出: False (T不为空)
总结 📝

本节课中我们一起学习了集合论的基础知识:
- 元素与集合:元素是构成集合的基本单位,集合是元素的聚集。
- 常见集合:我们认识了整数集(Z)、自然数集(N)、有理数集(Q)、实数集(R)等标准数学集合。
- 隶属关系:学习了如何使用符号
∈(属于)和∉(不属于)来描述元素与集合的关系。 - 特殊集合:了解了唯一的空集 (∅) 和依赖于上下文的全集 (Ω)。
- Python实现:掌握了在Python中定义集合、测试隶属关系以及检查集合是否为空的方法。

下一节课,我们将探讨更多关于集合的基本操作。
008:若干简单集合 📚
在本节课中,我们将学习如何定义和表示几种基础的集合类型,包括区间、倍数集合等。这些工具对于后续理解更复杂的概率与统计概念至关重要。
上一节我们介绍了集合的基本概念,本节中我们来看看如何定义一些更具体的、常用的简单集合。
定义集合的通用方法
我们可以通过“满足某条件”的方式来定义一个集合。其通用写法是:{ x ∈ A | 条件 }。这表示“所有属于集合A且满足给定条件的元素x的集合”。
有时,我们也会用冒号:来代替竖线|。例如,自然数集可以定义为:{ x ∈ Z | x ≥ 0 },即所有大于等于0的整数。
这种方法非常有用,例如:
{ x ∈ R | x² ≥ 0 }的结果是全体实数集R。{ x ∈ R | x² = 1 }的结果是集合{-1, 1}。{ x ∈ R | x² = 0 }的结果是只包含一个元素的集合{0},我们称之为单元素集。{ x ∈ R | x² = -1 }的结果是空集∅,因为没有实数的平方等于-1。但如果我们定义{ x ∈ C | x² = -1 }(在复数范围内),结果就是{i, -i}。这说明集合的定义也依赖于我们限定的全集。
整数区间
基于上述方法,我们可以定义一些简单的集合。首先是整数区间。
定义 M..N 为所有满足 M ≤ i ≤ N 的整数 i 的集合。这是一个闭区间,包含端点M和N。
例如:
3..5是集合{3, 4, 5}。3..4是集合{3, 4}。3..3是单元素集{3}。3..2是空集∅,因为没有整数同时满足≥3和≤2。
一个方便的约定是,用 [N] 来表示集合 1..N,即从1到N的所有整数。
实数区间
类似于整数区间,我们可以定义实数区间。方括号 [ 和 ] 表示包含端点,圆括号 ( 和 ) 表示不包含端点。
以下是几种常见的实数区间表示法:
[a, b] = { x ∈ R | a ≤ x ≤ b }(闭区间)(a, b) = { x ∈ R | a < x < b }(开区间)[a, b) = { x ∈ R | a ≤ x < b }(左闭右开区间)(a, b] = { x ∈ R | a < x ≤ b }(左开右闭区间)
例如:
[3, 5]包含3和5以及之间的所有实数。(3, 5)包含3和5之间的所有实数,但不包含3和5本身。[3, 5)包含3以及3到5之间的实数,但不包含5。
一些特例:
[3, 3]是单元素集{3}。[3, 2],(3, 2],[3, 2)都等同于空集∅。
整除与倍数
接下来,我们引入整数之间整除的概念。
对于两个整数 m 和 n,如果存在某个整数 c 使得 n = c * m,那么我们就说 m 整除 n,记作 m | n。同时,n 是 m 的一个倍数。
公式:m | n ⇔ ∃ c ∈ Z, 使得 n = c * m
例如:
3 | 6,因为6 = 2 * 3。4 | -8,因为-8 = -2 * 4。-2 | 0,因为0 = 0 * (-2)。
如果不存在这样的整数 c,则称 m 不整除 n,记作 m ∤ n。例如,3 ∤ 4。
关于0需要注意:
0是任何整数的倍数吗?不是。因为对于任何非零整数n,不存在c使得n = c * 0。所以0 ∤ n(n ≠ 0)。- 任何整数都整除
0吗?是的。因为对于任何整数m,0 = 0 * m总是成立。所以m | 0对所有m成立。
让我们通过几个小问题来巩固理解:
- 3的倍数有哪些?
{..., -6, -3, 0, 3, 6, ...} - 1的倍数有哪些? 所有整数,因为任何整数
n都可以写成n = n * 1。 - 0的倍数有哪些? 只有
0本身。 - 4的因数(能整除4的数)有哪些?
{1, 2, 4, -1, -2, -4} - 能整除0的数有哪些? 所有整数。
- 能整除任何非零整数的数有哪些?
1和-1。
倍数集合
利用整除的概念,我们可以定义特定的倍数集合。
令 m 为一个整数,我们用 mZ 表示所有 m 的整数倍构成的集合。
定义:mZ = { i ∈ Z | m | i }
例如:
2Z = {..., -4, -2, 0, 2, 4, ...},也称为偶数集E。1Z = Z,即所有整数。0Z = {0}。
更进一步,对于正整数 n,我们定义 D_m(n) 为在集合 [n](即 {1, 2, ..., n})中,所有 m 的倍数构成的集合。
定义:D_m(n) = { i ∈ [n] | m | i }
例如:
D_3(13) = {3, 6, 9, 12}(1到13中3的倍数)D_7(13) = {7}D_1(13) = {1, 2, 3, ..., 13} = [13]D_14(13) = ∅(因为14 > 13,1到13中没有14的倍数)
在Python中实现
最后,我们看看如何在Python中表示这些概念。
整数区间:Python使用 range 函数。需要注意的是,range(n) 生成 0, 1, ..., n-1,这与我们的 [n](从1开始)不同,因为Python索引通常从0开始。
# 生成 0, 1, 2
set(range(3))
# 生成 2, 3, 4 (注意:range(2,5) 包含2,不包含5)
set(range(2, 5))
# 生成步长为3的序列:2, 5, 8, 11
set(range(2, 12, 3))
倍数集合:我们可以结合 range 和取余操作符 % 来生成。例如,生成1到n中d的倍数:
n = 13
d = 3
# 列表推导式:遍历1到n,筛选出能被d整除的数
multiples = [i for i in range(1, n+1) if i % d == 0]
print(multiples) # 输出: [3, 6, 9, 12]

总结
本节课中我们一起学习了如何定义和使用几种基础的集合工具:
- 描述法定义集合:使用
{x ∈ A | 条件}的形式。 - 整数区间:
M..N和[N]。 - 实数区间:开区间
(a,b)、闭区间[a,b]及其混合形式。 - 整除与倍数:
m | n表示m整除n,n是m的倍数。 - 倍数集合:
mZ表示所有m的整数倍;D_m(n)表示1到n中m的倍数。 - Python实现:使用
range()函数和列表推导式来生成序列和倍数集合。

这些集合是构建更复杂数学对象的基石。下一节,我们将学习如何可视化这些集合,以便更直观地理解它们之间的关系。
概率与统计在数据科学中的应用:P9-3:集合的可视化 🎨
在本节课中,我们将学习如何可视化集合。集合是概率论和数据分析的基础,而可视化能帮助我们更直观地理解集合之间的关系及其运算。
上一节我们介绍了集合的定义与创建,本节中我们来看看如何将集合以图形化的方式呈现。正如我们所知,可视化是理解复杂概念的有力工具。对于集合而言,最经典的可视化工具是维恩图。
维恩图以数学家约翰·维恩的名字命名。他将集合表示为平面上的一个区域,通常是一个圆形。集合中的元素则表示为该区域内的点。
- 对于单个集合,我们画一个圆,圆内的点属于该集合,圆外的点则不属于。
- 对于两个集合,我们画两个可能重叠的圆。重叠区域(交集)内的点同时属于两个集合,而不重叠区域内的点只属于其中一个集合。
- 对于三个集合,我们画三个相互重叠的圆,这样可以清晰地展示出所有可能的组合区域(例如,只属于A的区域、同时属于A和B的区域、同时属于A、B和C的区域等)。
为什么维恩图如此重要?因为一图胜千言。在处理集合和概率问题时,维恩图可以将冗长的文字证明和定义转化为直观的视觉表示和证明。从某种意义上说,一幅维恩图抵得上一整本词典。
以下是使用Python绘制维恩图的具体步骤。
首先,需要安装并导入必要的库。我们将使用 matplotlib_venn 这个专门绘制维恩图的包。

import matplotlib.pyplot as plt
import matplotlib_venn as venn

接着,定义你想要可视化的集合。
S = {1, 2, 3}
T = {2, 3, 4, 5}
U = {3, 4, 6}
然后,使用相应的函数进行绘制。对于两个集合,使用 venn2 函数。

venn.venn2([S, T], set_labels=('S', 'T'))
plt.show()
这段代码会生成一个双圆维恩图,并分别用“S”和“T”标记两个集合。图形会自动根据集合大小调整圆形的面积,并高亮显示交集部分。
对于三个集合,则使用 venn3 函数。
venn.venn3([S, T, U], set_labels=('S', 'T', 'U'))
plt.show()
这段代码会生成一个三圆维恩图,清晰地展示出三个集合之间所有可能的交集和并集区域。

本节课中,我们一起学习了集合的可视化方法,重点介绍了维恩图的原理及其在Python中的实现。维恩图是帮助我们思考、证明和理解集合关系的强大工具,这在后续学习概率论和数据分析时将非常有用。下一节,我们将探讨集合之间的具体关系。
010:集合关系 🔗
在本节课中,我们将学习集合之间的基本关系。我们将从数字关系的类比出发,探讨集合的相等、交集和子集关系,并使用Python代码进行演示。
上一节我们介绍了集合的概念及其可视化方法。本节中,我们来看看集合之间有哪些重要的关系。


集合的相等与不相等
集合的相等关系是数字相等关系的推广。两个集合A和B被称为相等,记作 A = B,当且仅当它们拥有完全相同的元素。
例如,集合 {0, 1} 和 {1, 0} 拥有完全相同的元素(0和1),因此它们是相等的。在文氏图中,两个相等的集合完全重叠,表示它们之间没有只属于其中一个集合的元素。


反之,如果两个集合不相等,则称它们为不同的集合,记作 A ≠ B。例如,集合 {0, 1} 和 {1, 2} 不相等,因为前者包含元素0,而后者不包含。在文氏图中,两个不同的集合至少有一个区域(只属于A或只属于B)是非空的。


关于集合相等,有一个有趣的观察:建立相等关系(要求所有元素都相同)很难,但破坏它(只需一个元素不同)却很容易。
集合的交集与互斥
接下来,我们讨论集合的交集。两个集合A和B相交,意味着它们至少共享一个公共元素。用逻辑术语表达,即 ∃x (x ∈ A ∧ x ∈ B)。
例如,集合 {0, 1} 和 {1, 2} 共享元素1,因此它们相交。在文氏图中,相交的集合其重叠区域非空。


反之,如果两个集合没有公共元素,则称它们为互斥(或不相交)的集合。逻辑上表达为:∄x (x ∈ A ∧ x ∈ B) 或等价地 ∀x (x ∉ A ∨ x ∉ B)。
例如,集合 {0, 1} 和 {2, 3} 没有公共元素,因此它们是互斥的。在文氏图中,互斥的集合被画成完全分离的。


以下是关于交集和互斥的几个要点:
- 空集与任何集合都是互斥的。
- 一个非空的全集(例如所有实数的集合)与任何集合都相交。
- 一个非空集合总是与自身相交。
- 这些概念可以推广到多个集合:多个集合相交意味着它们共享一个公共元素;多个集合两两互斥,则称它们为“相互互斥”。
集合的子集与超集
子集关系推广了数字的“小于或等于”关系。如果集合A中的每一个元素也都是集合B中的元素,那么我们称A是B的子集,记作 A ⊆ B。
例如,集合 {0} 是集合 {0, 1} 的子集,因为元素0同时属于这两个集合。任何集合都是其自身的子集。在文氏图中,子集A被完全包含在超集B内部。


等价地,我们也可以说B是A的超集,记作 B ⊇ A。
如果A不是B的子集,记作 A ⊈ B,这意味着A中至少有一个元素不在B中。
关于子集,有以下重要性质:
- 空集是任何集合的子集。
- 任何集合都是其自身的子集。
- 任何集合都是全集(所讨论的所有对象的集合)的子集。
- 子集关系具有传递性:如果 A ⊆ B 且 B ⊆ C,那么 A ⊆ C。
- 如果 A ⊆ B 且 B ⊆ A,那么 A = B。
真子集与属于关系
如果A是B的子集,但A不等于B,那么我们称A是B的真子集,记作 A ⊂ B。这推广了数字的“严格小于”关系。例如,{0} 是 {0, 1} 的真子集。

初学者常混淆“属于”(∈)和“子集”(⊆)这两个符号。
- 属于(∈):表示一个元素与一个集合之间的关系。例如,
0 ∈ {0, 1}是正确的,但{0} ∈ {0, 1}是错误的,因为{0}本身是一个集合,而不是{0, 1}中的一个元素。 - 子集(⊆):表示两个集合之间的关系。例如,
{0} ⊆ {0, 1}是正确的,因为集合{0}中的唯一元素0也属于集合{0, 1}。

一个有趣的谜题是:能否找到两个集合A和B,使得A既是B的元素(A ∈ B),又是B的子集(A ⊆ B)?我们将在后续课程中探讨。
Python中的集合关系操作
现在,让我们看看如何在Python中实现这些集合关系。
以下是检查集合相等、不等和互斥的代码示例:
# 定义几个集合
S1 = {0, 1}
S2 = set([0, 1]) # 使用set函数创建
S3 = {1, 0, 1} # 重复元素会被自动去重
T = {0, 2}
# 检查相等
print(S1 == T) # 输出: False
print(S1 == S2) # 输出: True
print(S1 == S3) # 输出: True

# 检查不等
print(S1 != S2) # 输出: False
print(S1 != T) # 输出: True
# 检查是否互斥
print(S1.isdisjoint(T)) # 输出: False (因为共享元素0)
print(S1.isdisjoint({2})) # 输出: True
以下是检查子集、超集和真子集的代码示例:
# 定义集合
zero = {0}
Z_plus = {0, 1}
Z_minus = {0, -1}
# 检查子集 (使用 <= 或 issubset())
print(Z_minus <= Z_plus) # 输出: False
print(zero.issubset(Z_minus)) # 输出: True
# 检查真子集 (使用 <)
print(Z_plus < Z_minus) # 输出: False
print(zero < Z_minus) # 输出: True
# 检查超集 (使用 >= 或 issuperset())
print(Z_plus >= Z_minus) # 输出: False
print(Z_plus.issuperset(zero)) # 输出: True
# 检查真超集 (使用 >)
print(Z_minus > Z_minus) # 输出: False (不是真超集)
print(Z_plus > zero) # 输出: True
总结
本节课中,我们一起学习了集合之间的基本关系:
- 相等(=)与不相等(≠):基于是否拥有完全相同元素。
- 交集与互斥:基于是否共享公共元素。
- 子集(⊆)与超集(⊇):基于一个集合的所有元素是否都包含于另一个集合。
- 真子集(⊂)与真超集(⊃):是子集/超集关系,但排除相等的情况。
- 我们区分了“属于”(∈)和“子集”(⊆)这两个关键概念。
- 最后,我们使用Python代码演示了如何判断这些关系。

下一节,我们将学习集合的运算,例如并集、交集和补集。
概率与统计在数据科学中的应用:第11讲:集合运算 🧮
在本节课中,我们将学习集合的基本运算,包括补集、交集、并集、差集和对称差。这些运算与数字的加、减、乘类似,是处理集合关系的基础工具。

概述
上一节我们介绍了集合之间的关系,如相等、子集和真子集。本节中,我们将探讨集合的运算,这些运算帮助我们组合和比较不同的集合。
补集
补集是集合运算的基础。给定一个全集 Ω(包含所有考虑的元素),集合 A 的补集(记作 Aᶜ)包含所有在 Ω 中但不在 A 中的元素。
用逻辑表达式表示为:
例如,如果全集 Ω = {0, 1},那么:
- {0} 的补集是 {1}。
- {0, 1} 的补集是空集 ∅。
- 空集 ∅ 的补集是 {0, 1}。
补集的性质包括:
- ∅ᶜ = Ω
- Ωᶜ = ∅
- A 和 Aᶜ 不相交。
- (Aᶜ)ᶜ = A(补集运算是对合的)。
- 如果 A ⊆ B,那么 Bᶜ ⊆ Aᶜ。
交集
两个集合 A 和 B 的交集(记作 A ∩ B)包含所有同时属于 A 和 B 的元素。
用逻辑表达式表示为:
例如:
- {0, 1} ∩ {1, 3} = {1}
- {0} ∩ {1} = ∅
- 区间 [0, 4) ∩ [3, 6) = [3, 4)
并集
两个集合 A 和 B 的并集(记作 A ∪ B)包含所有属于 A、属于 B 或同时属于两者的元素。
用逻辑表达式表示为:
例如:
- {0, 1} ∪ {1, 2} = {0, 1, 2}
- 区间 [0, 2) ∪ (1, 3] = [0, 3]
这些运算可以推广到多个集合。例如,多个集合的并集包含属于其中至少一个集合的所有元素。

集合运算的基本定律
以下是集合运算的一些基本恒等式(定律):
- 恒等律:
- A ∩ Ω = A
- A ∪ Ω = Ω
- 支配律:
- A ∩ ∅ = ∅
- A ∪ ∅ = A
- 幂等律:
- A ∩ A = A
- A ∪ A = A
- 补集律:
- A ∩ Aᶜ = ∅
- A ∪ Aᶜ = Ω
- 交换律:
- A ∩ B = B ∩ A
- A ∪ B = B ∪ A
- 结合律:
- (A ∩ B) ∩ C = A ∩ (B ∩ C)
- (A ∪ B) ∪ C = A ∪ (B ∪ C)
- 分配律:
- A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
- A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)
- 德摩根定律(非常重要):
- (A ∩ B)ᶜ = Aᶜ ∪ Bᶜ
- (A ∪ B)ᶜ = Aᶜ ∩ Bᶜ
德摩根定律表明,交集的补集等于补集的并集,并集的补集等于补集的交集。
差集与对称差
差集(记作 A \ B 或 A - B)包含所有属于 A 但不属于 B 的元素。
用逻辑表达式表示为:
一个重要关系是:A \ B = A ∩ Bᶜ。
例如:
- {0, 1} \ {1} = {0}
- 区间 [1, 3) \ [2, 4) = [1, 2)

对称差(记作 A Δ B)包含所有恰好属于 A 和 B 中一个集合的元素(即只属于其中一个,不同时属于两者)。
用逻辑表达式表示为:
它可以表示为:A Δ B = (A \ B) ∪ (B \ A)。
例如:
- {0, 1} Δ {1, 2} = {0, 2}
- 区间 [0, 2) Δ (1, 4] = [0, 1] ∪ (2, 4]
在Python中实现集合运算
Python的set数据类型直接支持这些集合运算。

以下是核心操作的代码示例:
# 定义两个集合
A = {1, 2}
B = {2, 3}
# 并集
print(A | B) # 输出: {1, 2, 3}
print(A.union(B)) # 输出: {1, 2, 3}
# 交集
print(A & B) # 输出: {2}
print(A.intersection(B)) # 输出: {2}
# 差集 (A - B)
print(A - B) # 输出: {1}
print(A.difference(B)) # 输出: {1}
# 对称差
print(A ^ B) # 输出: {1, 3}
print(A.symmetric_difference(B)) # 输出: {1, 3}

总结

本节课中我们一起学习了集合的五种核心运算:
- 补集 (Aᶜ):在全集中不属于A的元素。
- 交集 (A ∩ B):同时属于A和B的元素。
- 并集 (A ∪ B):属于A或B(或两者)的元素。
- 差集 (A \ B):属于A但不属于B的元素。
- 对称差 (A Δ B):恰好属于A和B中一个集合的元素。
我们还了解了支配这些运算的基本定律,特别是德摩根定律,并学会了如何在Python中执行这些运算。下一讲我们将探讨集合的笛卡尔积。
012:元组与笛卡尔积 📐
在本节课中,我们将要学习集合论中的最后一个重要运算——笛卡尔积。我们将从元组和有序对的概念开始,逐步理解笛卡尔积的定义、几何意义及其在数据科学中的应用。

概述
上一节我们介绍了集合的并集和交集等运算。本节中,我们将探讨笛卡尔积。笛卡尔积以法国哲学家、数学家勒内·笛卡尔命名,他因提出“我思故我在”等思想而闻名,并在数学上为坐标系奠定了基础。
元组与有序对
首先,我们需要理解元组的概念。集合是元素的无序集合,其中元素的顺序和重复都不重要。例如,集合 {A, B, C} 与 {B, C, A} 是相同的。
然而,当我们希望顺序和重复都重要时,我们使用元组。元组用圆括号表示,元素之间用逗号分隔。
- n元组:包含n个元素的元组,记作
(a1, a2, ..., an)。 - 有序对:n=2时的特殊元组,包含两个元素,记作
(a, b)。例如,(3, 7)就是一个有序对。
注意:符号
(3, 7)也可能表示实数区间。通常我们可以根据上下文区分其含义。
笛卡尔积的定义
两个集合 A 和 B 的笛卡尔积,记作 A × B,是所有可能有序对 (a, b) 的集合,其中 a 来自集合 A,`b** 来自集合 B。
用集合构造式表示为:
A × B = { (a, b) | a ∈ A, b ∈ B }

如果对同一个集合 A 做笛卡尔积,可以简写为 A²。
最著名的笛卡尔积是实数集 R 与自身的笛卡尔积 R × R,也称为实数平面或笛卡尔平面,记作 R²。它包含了所有形如 (x, y) 的点,其中 x 和 y 都是实数。
笛卡尔积的几何表示
当集合 A 和 B 是实数的子集时,它们的笛卡尔积 A × B 是 R² 的一个子集,通常可以表示为一个矩形。
例如,若 A = [0, 2],B = [1, 4],则:
A × B = { (x, y) | x ∈ [0, 2], y ∈ [1, 4] }
这在平面上表示为一个以 x 轴范围 [0, 2] 和 y 轴范围 [1, 4] 确定的矩形。


对于离散集合(有限或可数无限),笛卡尔积的表示更简单。例如,若 A = {a, b},B = {1, 2, 3},则:
A × B = { (a,1), (a,2), (a,3), (b,1), (b,2), (b,3) }
我们可以将第一个集合 A 的元素垂直排列,第二个集合 B 的元素水平排列,来形象化地表示这些点,这类似于矩阵的坐标系统。
笛卡尔积的运算性质
以下是笛卡尔积的一些基本运算性质:
- 与空集的积:A × ∅ = ∅ × A = ∅
- 对并集的分配律:A × (B ∪ C) = (A × B) ∪ (A × C)
- 对交集的分配律:A × (B ∩ C) = (A × B) ∩ (A × C)
- 对差集的分配律:A × (B \ C) = (A × B) \ (A × C)
这些性质直观上易于理解。例如,分配律意味着先取并集再做笛卡尔积,等价于先分别做笛卡尔积再取并集。
应用:表格与序列
理解了离散集合的笛卡尔积后,我们来看看它的实际应用。
1. 数据库表格
在计算机科学中,数据库的表格本质上就是笛卡尔积的一种体现。表格的每一行(记录)可以看作一个元组,每一列(属性)代表一个维度。整个表格是所有行与所有列属性值可能组合的一个子集。
2. 序列
序列是我们经常使用的概念,它本质上就是去掉括号和逗号的元组。例如,序列 A1 A2 A3 对应元组 (A1, A2, A3)。在计算机中,二进制序列空间如 {0,1}²(所有两位二进制数)就是笛卡尔积 {0,1} × {0,1} 的结果,包含 00, 01, 10, 11。
笛卡尔积可以推广到两个以上的集合。例如,A × B × C 表示一个三维空间中的“长方体”点集。
在Python中实现笛卡尔积
在Python中,我们可以使用 itertools 库中的 product 函数轻松计算笛卡尔积。
以下是使用示例:
# 导入 product 函数
from itertools import product
# 定义两个集合
faces = ['Jack', 'Queen', 'King']
suits = ['Diamonds', 'Spades']
# 计算并打印笛卡尔积中的所有有序对
for card in product(faces, suits):
print(card)
运行这段代码将输出所有可能的(点数,花色)组合,例如 ('Jack', 'Diamonds'), ('Jack', 'Spades') 等。
总结
本节课中我们一起学习了:
- 元组和有序对:它们是元素有序且可重复的集合。
- 笛卡尔积:定义为 A × B = { (a, b) | a ∈ A, b ∈ B },是两个集合所有可能有序对的集合。
- 几何意义:对于实数子集,笛卡尔积对应平面上的矩形区域;对于离散集合,则对应一个点阵。
- 运算性质:笛卡尔积对并、交、差运算满足分配律。
- 实际应用:数据库表格和序列都是笛卡尔积概念的具体体现。
- Python实现:使用
itertools.product函数可以方便地生成笛卡尔积。

下一讲,我们将探讨一个令人困惑的悖论。
概率与统计在数据科学中的应用:13:罗素悖论 🧩

在本节课中,我们将探讨集合论中一个引人入胜且出人意料的结论——罗素悖论。我们将从基础的集合概念出发,逐步揭示一个看似合理的集合定义如何导致逻辑上的矛盾。
概述
本节是集合主题的第四个也是最后一个视频。我们将展示,即便是之前讨论过的简单集合概念,也能引发出有趣且令人惊讶的后果,即一个著名的悖论。
这个悖论由英国数学家、哲学家兼作家伯特兰·罗素提出。他以其广泛的见解闻名,尤其对人类智慧有独到评论。他曾说:“在民主制度中,愚人有权利投票;在独裁制度中,愚人有权利统治。”以及“多数人宁愿死也不愿思考,事实上,多数人确实如此。”或许最贴合我们课程的是:“人生而无知,并非愚蠢,是教育让他们变得愚蠢。”那么,就让我们来了解一下他的悖论。
集合基础回顾
首先,我们简单回顾一下集合。在集合论中,请记住,集合本身也可以作为元素。例如,这里有一个集合,另一个集合,而两者都是包含它们俩的那个集合的元素。
同时,每个集合都是其自身的子集。例如,空集包含于自身。
更有趣的问题是:一个集合能否属于自身,或者说成为自身的元素? 即,是否存在一个集合 S,使得 S 是 S 的一个元素?
通常,集合并不属于自身。例如,只包含数字0的集合 {0},其唯一元素是数字0,因此集合 {0} 不是 {0} 的元素。同样,空集不包含任何元素,因此空集自然也不是空集的元素。
然而,有些集合确实包含自身。考虑一个例子:集合 N(非特朗普集合),即包含所有“不是特朗普”的事物的集合。这个集合包含许多元素,例如克林顿(不是特朗普)、数字0(不是特朗普)、集合 {1,2}(不是特朗普)等等。事实上,除了唐纳德·特朗普本人,一切事物都在这个集合中。因此,集合 N 本身也不是唐纳德·特朗普,所以 N 自身也是 N 的一个元素。因此,我们得出结论:集合 N 属于自身。
这有些令人惊讶,并且确实会导致有趣的后果。其中之一是,如果一个集合包含自身,就会产生一种无限递归。但不必担心这一点,我们只需要知道:有些集合是自身的元素(如 N),而有些集合不是自身的元素(如 {0})。这是我们讨论罗素悖论所需的全部背景知识。
罗素悖论详解
那么,什么是罗素悖论?它指出,你可以定义一个不可能存在的集合。
罗素考虑了如下集合 R:所有不属于自身的集合所构成的集合。
用数学语言定义就是:
R = { S | S ∉ S }
让我们仔细理解这个定义:我们定义了一个集合 R,其元素是那些“不是自身元素”的集合。也就是说:
- 如果一个集合 S 是自身的元素(S ∈ S),那么 S 就不在 R 中。
- 如果一个集合 S 不是自身的元素(S ∉ S),那么 S 就在 R 中。
根据之前的例子:
- 集合
{0}不是自身的元素,因此{0}∈ R。 - 集合 N(非特朗普集合)是自身的元素,因此 N ∉ R。
现在,关键问题来了:集合 R 本身是否属于 R?
根据逻辑排中律,只有两种可能:要么 R ∈ R,要么 R ∉ R。然而,我们将证明,无论哪种情况都会导致矛盾,因此这样的集合 R 不可能存在。
情况一:假设 R ∈ R。
如果 R 是自身的元素(即 R ∈ R),那么根据集合 R 的定义(R 只包含那些“不属于自身”的集合),R 必须满足“R ∉ R”这个条件才能成为 R 的元素。这与我们“R ∈ R”的假设直接矛盾。因此,如果 R ∈ R,则会推导出 R ∉ R,矛盾。
情况二:假设 R ∉ R。
如果 R 不是自身的元素(即 R ∉ R),那么看看集合 R 的定义:R 恰好包含所有“不属于自身”的集合。既然 R 满足“不属于自身”这个条件,那么根据定义,R 就应该被包含在 R 中,即 R ∈ R。这又与我们“R ∉ R”的假设矛盾。
综上所述,无论假设 R 属于自身还是不属于自身,都会导致逻辑矛盾(R ∈ R 且 R ∉ R 同时成立)。这意味着我们定义的集合 R 在逻辑上无法存在。这就是罗素悖论。
悖论的根源与变体
我们看到了问题根源在于递归或自指的定义。当我们考虑包含自身的集合时,会导致无限递归;而当我们考虑“所有不包含自身的集合”时,则直接导致了矛盾。
为了避免这类问题,在朴素的集合论中,我们通常只考虑那些非递归定义、非自指的集合,以保持逻辑的一致性。这部分内容虽然有趣,但并非考试必需,不过了解它有助于深化对数学基础的理解。
这个悖论有几个著名的变体:
- 理发师悖论:一个理发师宣称:“我只给那些不自己刮胡子的人刮胡子。”那么,他给自己刮胡子吗?如果他给自己刮,那么他就给了一个“自己刮胡子的人”刮胡子,违背誓言;如果他不给自己刮,那么他就没给“不自己刮胡子的人”刮胡子,也违背誓言。
- 说谎者悖论:“这句话是假的。”这句话本身是真的还是假的?
- 艺术领域的自指:马格利特的画作《形象的叛逆》(这不是一个烟斗)。
- 甚至伍迪·艾伦的一句自嘲也体现了这种逻辑:“我永远不想加入任何愿意接纳我这种人的俱乐部。”

总结
本节课中,我们一起学习了罗素悖论。我们从集合的基本概念——集合可以作为元素以及“属于自身”的概念——出发,定义了一个特殊的集合 R(所有不属于自身的集合的集合)。通过逻辑推理,我们发现无论假设 R 是否属于自身,都会导出矛盾,从而证明这样的集合 R 不可能存在。这揭示了在未加限制的集合论中,自指定义可能带来的根本性问题。理解这个悖论有助于我们更严谨地看待数学和逻辑的基础。
概率与统计:P14-04-02-03:集合大小 📏
在本节课中,我们将学习如何描述和计算集合的大小,即集合中元素的数量。这是后续学习计数技巧的基础。
集合大小的定义
集合 S 中元素的数量称为其大小或基数,记作 |S| 或 #S。
以下是几个示例:
- 比特集合
{0, 1}的大小是 2。 - 硬币的两面
{正面, 反面}的大小是 2。 - 骰子的六个面
{1, 2, 3, 4, 5, 6}的大小是 6。 - 十进制数字集合
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}的大小是 10。 - 英文字母集合
{a, b, c, ..., z}的大小是 26。 - 空集
∅的大小是 0。 - 整数集
Z、自然数集N、有理数集Q和实数集R的大小都是无穷大。其中,Z、N、Q是可数无穷,而R是不可数无穷,但本节课我们暂不深入讨论这种区别。
整数区间的大小
上一节我们定义了集合的基本概念,本节中我们来看看如何计算特定集合的大小。首先,我们回顾一下整数区间。
对于 m ≤ n,我们定义 [m..n] 为从 m 到 n(包含两端)的整数集合。例如,[3..5] = {3, 4, 5}。
该区间的大小计算公式为:
|[m..n]| = n - m + 1
初学者常会问为何要加 1。我们可以通过小例子来理解:
[5..5] = {5},其大小为5 - 5 + 1 = 1。[1..3] = {1, 2, 3},其大小为3 - 1 + 1 = 3。
从几何角度看,n - m 计算的是从 m 到 n 的距离或单位间隔数。而要计算点的数量,我们需要在间隔数的基础上,加上起点 m 本身这个点,因此需要 +1。
倍数集合的大小
接下来,我们看看如何计算一个范围内特定倍数集合的大小。
我们用 [1..n] 表示从 1 到 n 的整数集合。那么,在 [1..n] 中能被 d 整除(即 d 的倍数)的整数集合记作 {k ∈ [1..n] : d | k}。
以下是计算其大小的示例:
- 在
[1..8]中,3的倍数集合是{3, 6},其大小为 2。 - 在
[1..9]中,3的倍数集合是{3, 6, 9},其大小为 3。
该集合大小的通用计算公式为:
|{k ∈ [1..n] : d | k}| = ⌊n / d⌋
其中,⌊x⌋ 表示向下取整函数,即小于等于 x 的最大整数。
- 对于第一个例子:
⌊8 / 3⌋ = ⌊2.666...⌋ = 2。 - 对于第二个例子:
⌊9 / 3⌋ = ⌊3⌋ = 3。
在Python中操作集合
最后,我们学习如何在Python中获取集合的大小并进行相关计算。
在Python中,使用 len() 函数获取集合(或列表等可迭代对象)的大小。
以下是相关操作的代码示例:
# 计算集合大小
print(len({-1, 1})) # 输出:2
# 计算集合元素之和
print(sum({-1, 1})) # 输出:0
# 查找集合中的最小值和最大值
print(min({-1, 1})) # 输出:-1
print(max({-1, 1})) # 输出:1
# 使用循环迭代计算元素总和
a = {1, 2, 3}
total = 0
for i in a:
total += i
print(total) # 输出:6
# 更简洁的求和方式
print(sum(a)) # 输出:6
总结
本节课中我们一起学习了:
- 集合大小(基数) 的定义和表示法
|S|。 - 计算整数区间
[m..n]大小的公式:n - m + 1。 - 计算倍数集合
{k ∈ [1..n] : d | k}大小的公式:⌊n / d⌋。 - 在Python中使用
len()、sum()、min()、max()函数以及循环来处理集合的大小和元素。


掌握了计算单个集合大小的方法后,下节课我们将进一步学习如何计算并集、交集等复合集合的大小。
015:不相交并集 🧮
在本节课中,我们将学习集合论中的一个重要概念——不相交并集。我们将探讨加法规则、减法规则,并通过一些简单的例子来理解它们的应用。最后,我们会看到一个有趣的“头发问题”,帮助你思考如何应用这些规则。
不相交并集与加法规则
上一节我们介绍了基本的计数方法。本节中,我们来看看不相交并集。
假设有两个集合:集合 A 包含两个元素,集合 B 包含三个元素。这两个集合是不相交的,意味着它们没有共享任何元素。因此,并集的大小就是两个集合大小的简单相加:2 + 3 = 5。
用公式表示,对于任意两个不相交的集合 A 和 B,有:
这被称为加法规则。它表明,对于不相交的集合,并集的大小等于各自大小的和。
以下是两个应用加法规则的简单例子:
- 例子1:班级学生:一个班级有2名男生和3名女生。班级总人数是男生集合与女生集合的并集。由于这两个集合不相交,总人数为 2 + 3 = 5。
- 例子2:罐中弹珠:一个罐子里有1颗蓝色、2颗绿色和3颗红色弹珠。总弹珠数是三个不相交集合(蓝色、绿色、红色)的并集大小,即 1 + 2 + 3 = 6。
补集与减法规则
最典型的不相交集合是一个集合和它的补集。
对于全集 Ω 中的一个子集 A,它的补集 Aᶜ 包含了 Ω 中所有不属于 A 的元素。显然,A 和 Aᶜ 是不相交的,并且它们的并集就是全集 Ω。
根据加法规则:
我们可以重新排列这个公式,得到:
这被称为减法规则或互补规则。它表明,一个集合的补集大小等于全集大小减去该集合本身的大小。
以下是一个应用减法规则的例子:
- 例子:骰子点数:考虑一个六面骰子,全集 Ω = {1, 2, 3, 4, 5, 6},大小为6。设集合 D 为能被3整除的点数,即 D = {3, 6},大小为2。那么 D 的补集 Dᶜ 就是不能被3整除的点数,即 {1, 2, 4, 5}。根据减法规则,Dᶜ 的大小为 6 - 2 = 4,这与我们直接数出的结果一致。
减法规则的灵活应用
减法规则有时可以反过来用,这在我们计算复杂集合的大小时非常有用。
如果直接计算集合 A 的大小很困难,但计算其补集 Aᶜ 的大小相对容易,那么我们可以利用公式:
来间接求出 |A|。
以下是一个例子:
- 例子:1到100中非3的倍数:我们想计算集合 A = {1到100之间不能被3整除的整数} 的大小。直接计算很繁琐。全集 Ω 是1到100的所有整数,大小为100。A 的补集 Aᶜ 就是1到100之间能被3整除的整数,即 {3, 6, 9, ..., 99}。这个集合的大小很容易计算:99 ÷ 3 = 33。因此,根据减法规则,|A| = 100 - 33 = 67。
更一般的减法规则
减法规则可以推广到任意包含关系的集合。
如果集合 A 是集合 B 的子集(即 A ⊆ B),那么集合差 B \ A(在 B 中但不在 A 中的元素)的大小为:
这是因为 B 可以表示为 A 和 B \ A 这两个不相交集合的并集,然后应用加法规则即可推导出上述公式。
这个规则在生活中有实际应用。例如,给宠物称重:

以下是给宠物称重的步骤:
- 称量你自己的体重。
- 抱着你的宠物一起称重。
- 用你和宠物的总重量减去你自己的重量,就得到了宠物的重量。
这种方法巧妙地运用了“减去已知部分以得到未知部分”的思想。


总结与思考:头发问题 🧑🦰
本节课中,我们一起学习了不相交并集、加法规则和减法规则,并看到了它们在简单计数和实际问题中的应用。
最后,我们以一个“头发问题”作为思考结束:假设你的一位朋友声称她能瞬间精确地说出任何人头上的头发数量。你能否通过问她几个问题,就能相当确定她是否在说实话?(提示:解决方法并不仅仅适用于人类。)

希望你能运用本节课学到的集合思维来思考这个问题。我们下节课再见!
016:总体并集
在本节课中,我们将学习如何计算任意集合的并集大小。我们将介绍容斥原理,并展示如何将其应用于两个或多个集合。课程将从回顾一个有趣的“头发问题”开始,然后深入探讨并集大小的通用计算方法。

头发问题与减法规则
上一节我们讨论了集合的并集。现在,我们来看一个有趣的谜题:假设你的朋友声称能瞬间精确地说出你头上头发的数量。你如何通过提问来验证她是否在说实话?
一个简单的解决方案是使用减法规则。你可以问她两个问题:
- 首先,问她你现在有多少根头发。
- 然后,你到一个她看不见的地方,拔掉8根头发。
- 回来后,再问她你现在有多少根头发。
根据减法规则,如果她两次的答案之差正好是8,那么她很可能说的是真话。如果差值不是8,那么她至少有一次说错了。

实际上,你甚至可以只问一个问题:直接问她你拔掉了多少根头发。如果她的答案是8,那么她很可能知道真实的头发数量。这个思路在“零知识证明”中有应用,即在不泄露具体信息(如初始头发数)的前提下证明自己知道某个信息。
两个集合的并集大小
对于两个不相交的集合A和B,其并集的大小是各自大小之和:
|A ∪ B| = |A| + |B| (当 A ∩ B = ∅ 时)

然而,对于一般的集合(即可能相交),情况并非如此。例如,集合A与其自身的并集仍是A,因此 |A ∪ A| = |A|,而不是 |A| + |A| = 2|A|。这是因为A与自身有交集。
为了计算一般情况下的并集大小,我们使用容斥原理。当我们计算 |A| + |B| 时,位于交集 A ∩ B 中的元素被计算了两次。因此,我们需要减去多算的一次:
|A ∪ B| = |A| + |B| - |A ∩ B|

示例:宝可梦集合
假设我们有如下宝可梦:
- 水属性宝可梦集合 W =
- 飞行属性宝可梦集合 F =
我们想知道总共有多少只不同的宝可梦(即并集的大小)。直接观察可知是4只(杰尼龟,卡咪龟,暴鲤龙,波波)。使用容斥原理计算:
- |W| = 3
- |F| = 2
- |W ∩ F| = 1 (暴鲤龙既是水属性也是飞行属性)
- |W ∪ F| = 3 + 2 - 1 = 4
结果与直接观察一致。

示例:整除性问题
求1到100之间能被2或3整除的整数个数。
- 设 D2 = {能被2整除的数},则 |D2| = floor(100/2) = 50
- 设 D3 = {能被3整除的数},则 |D3| = floor(100/3) = 33
- D2 ∩ D3 = {能被2和3同时整除的数} = {能被6整除的数},则 |D2 ∩ D3| = floor(100/6) = 16
根据容斥原理:
|D2 ∪ D3| = |D2| + |D3| - |D2 ∩ D3| = 50 + 33 - 16 = 67
因此,1到100之间能被2或3整除的数共有67个。
多个集合的并集大小
对于三个集合A, B, C,容斥原理的公式扩展如下:
|A ∪ B ∪ C| = |A| + |B| + |C| - |A ∩ B| - |A ∩ C| - |B ∩ C| + |A ∩ B ∩ C|
这个公式的逻辑是:
- 先加各个集合的大小,此时两两交集部分的元素被计算了两次,三重重合部分的元素被计算了三次。
- 减去所有两两交集的大小,此时两两交集部分的元素被减掉一次(变为计算一次),但三重重合部分的元素被减掉了三次(变为计算零次)。
- 最后加上三重重合部分的大小,使其被正确计算一次。
此模式可以推广到n个集合。并集大小的公式是一个交替求和序列:加上所有单个集合的大小,减去所有两两交集的大小,加上所有三三交集的大小,减去所有四四交集的大小……依此类推,直到加上或减去所有n个集合的交集大小(符号取决于n的奇偶性)。
应用示例:学生编程语言调查
一个班级有8名学生,每名学生至少会C、R或Python中的一种语言。已知:
- 会C语言的学生有5人。
- 会R语言的学生有5人。
- 会Python的学生有5人。
- 同时会C和R的学生有3人。
- 同时会C和Python的学生有3人。
- 同时会R和Python的学生有3人。
问:同时会三种语言的学生有多少人?
设集合C、R、P分别代表会对应语言的学生。已知 |C ∪ R ∪ P| = 8。
根据容斥原理:
|C ∪ R ∪ P| = |C| + |R| + |P| - |C∩R| - |C∩P| - |R∩P| + |C∩R∩P|

代入已知数值:
8 = 5 + 5 + 5 - 3 - 3 - 3 + |C∩R∩P|
8 = 15 - 9 + |C∩R∩P|
8 = 6 + |C∩R∩P|
|C∩R∩P| = 2
因此,同时会三种语言的学生有2人。利用这个结果,我们可以进一步推算出只精通某一种或两种语言的学生人数。
原理验证与总结
最后,我们用容斥原理验证一些直观结论:
- 若A与B不相交:则 |A ∩ B| = 0,公式简化为 |A ∪ B| = |A| + |B|,符合预期。
- 若A等于B:则 |A ∪ A| = |A|,公式计算为 |A| + |A| - |A| = |A|,符合预期。
- 并集大小的范围:对于任意两个集合,有 max(|A|, |B|) ≤ |A ∪ B| ≤ |A| + |B|。当一个是另一个的子集时取到下界,当两者不相交时取到上界。

本节课中我们一起学习了:
- 如何利用减法规则解决“头发问题”。
- 计算两个集合并集大小的通用方法——容斥原理,其公式为 |A ∪ B| = |A| + |B| - |A ∩ B|。
- 如何将容斥原理推广到三个及更多个集合,以计算复杂并集的大小。
- 通过编程语言调查等实例,掌握了如何应用该原理解决实际问题。

下一节,我们将探讨集合的笛卡尔积。
概率与统计在数据科学中的应用:P17-04-05-03:笛卡尔积 🧮
在本节课中,我们将要学习笛卡尔积的概念及其在计数中的应用。上一节我们介绍了广义并集的大小,本节中我们来看看如何计算两个或多个集合组合形成的笛卡尔积的大小。
笛卡尔积是集合论中的一个基本概念。如果有一个集合A(例如 {A, B})和另一个集合B(例如 {1, 2, 3}),那么它们的笛卡尔积 A × B 是一个由所有有序对 (a, b) 组成的集合,其中 a 属于A,b 属于B。

根据乘法原理(或称乘积法则),笛卡尔积的大小等于各个集合大小的乘积。其核心公式为:

|A × B| = |A| × |B|
这个规则可以推广到多个集合。对于n个集合 A₁, A₂, ..., Aₙ,其笛卡尔积的大小为:
|A₁ × A₂ × ... × Aₙ| = |A₁| × |A₂| × ... × |Aₙ|

以下是笛卡尔积的一些具体应用示例:
应用一:表格数据
我们日常使用的数据表格本质上就是一个笛卡尔积。表格的行代表记录,列代表属性。表格中的单元格总数,就是行集合与列集合的笛卡尔积的大小。例如,一个有5行、3列的表格,其单元格总数为 5 × 3 = 15。

应用二:服装搭配
假设一个人有3件衬衫、2条裤子和5双鞋。一套完整的穿搭由一件衬衫、一条裤子和一双鞋组成。所有可能的穿搭组合集合就是这三个集合的笛卡尔积。因此,不同的穿搭总数为 3 × 2 × 5 = 30 套。

应用三:商品计数
在超市购买成卷的卫生纸时,包装通常是多层排列的。例如,一个包装的排列方式是 3 × 3 × 4。虽然无法直接数清每一卷,但根据乘积法则,我们可以快速计算出总卷数为 3 × 3 × 4 = 36 卷。

应用四:三明治定制
以赛百味(Subway)定制三明治为例。假设顾客需要从以下选项中各选一项:
- 面包种类:2种
- 肉类种类:5种
- 奶酪种类:3种
- 蔬菜种类:4种
- 酱料种类:3种

那么,所有可能的三明治组合就是这五个集合的笛卡尔积。根据乘积法则,可以制作的不同三明治总数为 2 × 5 × 3 × 4 × 3 = 360 种。实际上,由于选项更多,真实的可组合数量非常庞大。

本节课中我们一起学习了笛卡尔积和乘积法则。我们了解到,计算多个集合组合形成的所有可能有序元组的数量,只需将各个集合的大小相乘即可。这个原理是组合计数的基础,在数据分析、概率计算和日常生活中的许多场景都非常有用。
下一节,我们将探讨笛卡尔积的一种特殊形式——笛卡尔幂。
018:笛卡尔幂 📊
在本节课中,我们将要学习笛卡尔幂的概念。这是笛卡尔积的一种特殊形式,即一个集合与自身进行多次笛卡尔积运算。我们将探讨其定义、性质、应用,并通过实例和Python代码来加深理解。
上一节我们介绍了笛卡尔积,本节中我们来看看笛卡尔幂。
概述 📝
笛卡尔幂是指一个集合与自身进行多次笛卡尔积运算。例如,集合A的平方(A²)是A与自身的笛卡尔积,即A × A。更一般地,集合A的n次幂(Aⁿ)是A与自身进行n次笛卡尔积。其元素数量遵循指数增长规律,即|Aⁿ| = |A|ⁿ。
笛卡尔幂的定义与性质 🔢
笛卡尔幂的正式定义如下:对于集合A,其n次笛卡尔幂记作Aⁿ,定义为A与自身进行n次笛卡尔积。用公式表示为:
Aⁿ = A × A × ... × A (共n次)
其元素数量(基数)的计算公式为:
|Aⁿ| = |A|ⁿ

这个简单的公式在理论和实践中都有重要应用。
应用实例:车牌系统 🚗
以下是加州车牌系统的演变过程,它展示了笛卡尔幂在实际计数问题中的应用。
- 早期(1913年起):车牌格式为最多6位数字。假设所有从0到999999的数字组合都可用,则可能的车牌总数为10⁶,即100万个。
- 1956年:车牌号码即将用尽,格式改为“3个字母 + 3个数字”。根据乘法原理,可能的组合数为26³ × 10³,约1760万个。
- 1969年:再次面临号码耗尽,格式改为“3个字母 + 4个数字”。这使可能的组合数增加了10倍,达到约1.76亿个。
这个例子清晰地展示了如何通过增加集合(字母集、数字集)的笛卡尔幂的指数来极大地扩展可能性空间。
核心应用领域 💡
笛卡尔幂在计算机科学和数学中有几个基础且重要的应用。
1. 二进制字符串
取集合{0, 1}的n次笛卡尔幂,即{0, 1}ⁿ,得到的是所有长度为n的二进制字符串的集合。
例如:
- {0, 1}¹ =
- {0, 1}² =
- {0, 1}³ =
其数量为:|{0, 1}ⁿ| = 2ⁿ
2. 子集计数
一个集合S的幂集P(S)(即S的所有子集构成的集合)与二进制字符串存在一一对应关系。
具体来说,对于大小为|S|的集合,其每个子集可以唯一地用一个长度为|S|的二进制串表示(某位为1表示包含对应元素,为0表示不包含)。

因此,集合S的幂集的大小等于所有长度为|S|的二进制串的数量,即:
|P(S)| = 2^{|S|}
3. 函数计数
从集合A到集合B的所有可能函数的数量,也遵循笛卡尔幂的计数原理。
要定义一个函数f: A → B,需要为A中的每一个元素指定一个B中的像。这相当于为每个“位置”(A中的元素)从B中选择一个值。
因此,所有可能函数的集合可以看作|A|个B的笛卡尔积,即B^{|A|}。其数量为:
从A到B的函数数量 = |B|^{|A|}

指数增长与Python实现 🐍
指数函数(如2ⁿ)的增长速度远快于任何多项式函数(如n²)。理解这种增长对于评估算法复杂度和问题规模至关重要。
在Python中,我们可以轻松计算笛卡尔幂和指数。
以下是计算笛卡尔幂和指数的示例代码:

# 计算笛卡尔幂
import itertools
# 定义一个集合
my_set = {5, 9}
# 计算该集合的2次笛卡尔幂(即自身与自身的笛卡尔积)
cartesian_power_2 = set(itertools.product(my_set, repeat=2))
print(f“集合 {my_set} 的2次笛卡尔幂是:{cartesian_power_2}”)
# 计算指数
base = 3
exponent = 2
result = base ** exponent # 使用双星号 ** 表示幂运算
print(f“{base} 的 {exponent} 次方是:{result}”)
棋盘与麦粒的传说 ♟️

有一个著名的传说,形象地说明了指数增长的威力。一位聪明的农夫为国王发明了国际象棋,国王答应给他任何奖励。农夫请求在棋盘的第一格放1粒麦子,第二格放2粒,第三格放4粒,以此类推,每一格都是前一格的两倍。

国王起初认为这个要求很谦逊,但最终发现,放到第64格时需要2⁶³粒麦子。这个数字(约9.22×10¹⁸)如此巨大,足以耗尽国王的所有财富。这个故事的寓意是:务必警惕指数增长的力量。

总结与下节预告 📚
本节课中我们一起学习了笛卡尔幂。我们了解到:
- 笛卡尔幂Aⁿ是集合A与自身进行n次笛卡尔积。
- 其元素数量为|A|ⁿ,呈现指数增长。
- 它在二进制字符串、子集计数和函数计数中有直接应用。
- 指数增长非常迅速,在算法设计和问题分析中需要特别注意。
最后,我们留下一个思考题:如果某个计数问题的答案是2^{2ⁿ}(双重指数),那么这个问题可能是什么?我们将在下一讲中揭晓答案。

下一节,我们将讨论目前所学各种计数方法的变体与应用。
019:计数变体 🧮
在本节课中,我们将学习如何组合使用加法规则、减法规则和乘法规则,来计算更复杂集合的大小。我们将通过分析不同约束条件下的个人识别码(PIN码)来应用这些规则。
概述
到目前为止,我们已经讨论了如何计算不同类型的集合,如并集、笛卡尔积和笛卡尔幂。今天,我们将探讨这些集合的几种变体,并学习如何组合使用计数规则来解决实际问题。

双指数计数问题的两个例子
上一节末尾我们提出了一个问题:是否存在一个自然的计数问题,其答案是双指数形式的?本节将给出两个答案:一个使用子集,另一个使用函数。
例子一:幂集的幂集
首先,我们回顾一下集合 S 的幂集 P(S) 的定义,它是 S 的所有子集构成的集合。其大小公式为:
例如,集合 {A, B} 的幂集是 {∅, {A}, {B}, {A, B}},大小为 4,即 2^2。
现在,考虑幂集的幂集 P(P(S)),即 P(S) 的所有子集构成的集合。其大小公式为:
这就是一个双指数形式的答案。例如,对于集合 {1, 2, ..., n},其幂集的幂集大小为 2^{2^n}。
例子二:二元函数

其次,我们考虑从集合 A 到集合 B 的函数。函数集合 B^A 的大小公式为:
现在,考虑具有 n 个二元变量的函数。具体来说,是函数 f: {0, 1}^n → {0, 1}。这类函数的数量为:
这同样是一个双指数形式的答案。例如,一个具有 6 个输入引脚的芯片,理论上可以实现 2^{2^6} 种不同的函数,这个数字非常巨大。

应用计数规则分析PIN码
现在,让我们回到今天的主题,通过分析PIN码的例子来组合应用加法、减法和乘法规则。
基础:四位数PIN码的数量
设 D 代表数字集合 {0, 1, ..., 9}。所有四位数PIN码的集合是 D 的四次笛卡尔幂 D^4。根据乘法规则,其大小为:
变体一:可变长度的PIN码
考虑长度在 3 到 5 位之间的PIN码。有效PIN码的集合是:
由于这些集合互不相交(长度不同的PIN码必然不同),我们可以使用加法规则。因此,总数为:
变体二:包含禁止序列的PIN码
考虑不允许出现特定序列的四位数PIN码。例如,禁止所有数字相同的序列(如 3333)和连续数字序列(如 3456)。
- 所有数字相同的序列有
10个(0000到9999)。 - 连续数字序列有
7个(0123,1234, ...,6789)。
禁止序列集合是这两个集合的并集,且它们互不相交。因此,禁止序列的数量为:
允许的PIN码集合是 D^4 减去禁止序列集合。根据减法规则,其大小为:
变体三:包含数字0的PIN码
我们想计算包含至少一个数字 0 的 n 位数PIN码的数量。我们将以 n=2 为例,展示两种方法:容斥原理和补集规则。
方法一:容斥原理
设 ExistZero 为包含至少一个 0 的两位数PIN码集合。
设 Z1 为第一位是 0 的PIN码集合,Z2 为第二位是 0 的PIN码集合。
显然,ExistZero = Z1 ∪ Z2。
|Z1| = 10(第一位固定为0,第二位有10种选择)|Z2| = 10(第二位固定为0,第一位有10种选择)|Z1 ∩ Z2| = 1(只有00同时满足两个条件)
根据容斥原理:
方法二:补集规则
设全集 Ω = D^2,即所有两位数PIN码。
ExistZero 的补集 AllNonZero 是所有位数都不为 0 的PIN码集合,即 {1,...,9}^2。
根据乘法规则:
根据补集(减法)规则:
两种方法得到相同结果。对于更大的 n,补集规则通常更简单。
推广到 n 位数
使用补集规则,包含至少一个 0 的 n 位数PIN码数量为:
这里,AllNonZero_n = {1,...,9}^n,其大小为 9^n。
总结
在本节课中,我们一起学习了:
- 通过幂集的幂集和二元函数两个例子,了解了双指数形式的计数问题。
- 组合运用加法规则、减法规则和乘法规则,计算了在不同约束条件下(固定长度、可变长度、包含禁止序列、必须包含特定数字)的PIN码数量。
- 对比了容斥原理和补集规则在解决“包含至少一个某元素”这类问题上的应用,并认识到补集规则在多数情况下更为简洁直观。

下一节,我们将讨论如何计数树结构。
020:计数树 🌳
在本节课中,我们将学习如何将笛卡尔积视为一种特殊的树结构,并探讨更一般的树结构如何推广笛卡尔积。我们将介绍一种系统性的方法来计算树中的路径数量,并简要提及这种方法在建模随机现象中的应用。
笛卡尔积与树结构 🌲
上一节我们介绍了集合的计数方法,本节中我们来看看笛卡尔积如何与树结构联系起来。
笛卡尔积可以视为序列的集合。例如,考虑笛卡尔积 {A, B} × {1, 2, 3}。我们知道这个集合的大小是 |{A, B}| × |{1, 2, 3}| = 2 × 3 = 6。我们可以将这个笛卡尔积解释为所有序列的集合:(A,1), (A,2), (A,3), (B,1), (B,2), (B,3)。
这些序列可以表示为一棵树。树的根节点开始,每个分支代表一个选择。例如,从根节点选择 A 或 B,然后在下一层选择 1, 2, 或 3。每个从根节点到叶子节点的路径对应一个序列。因此,序列的数量等于树中叶子节点的数量。在这棵树中,第一层有2个分支,第二层每个节点有3个分支,所以叶子节点总数为 2 × 3 = 6。
公式:
对于笛卡尔积 A × B,其大小计算公式为:
|A × B| = |A| × |B|
树的推广:超越笛卡尔积 🌿
树结构比笛卡尔积更一般化。在笛卡尔积对应的树中,每一层的所有节点具有相同的分支数(度数)。但树结构允许不同节点有不同的分支数。
考虑一个例子:假设一所新大学“数据科学大学”有三个系:计算机科学(CS)、电子工程(EE)和数学(Math)。每个系提供不同的课程:
- CS系提供:机器学习、Python
- EE系提供:图像处理、信息论
- Math系提供:概率、统计
这个(系,课程)对的集合不是一个笛卡尔积,因为并非所有组合都存在(例如,CS系不提供概率课)。然而,我们仍然可以计算课程总数。我们可以将其表示为一棵树:根节点代表大学,第一层是三个系节点,每个系节点下有两个课程节点(叶子)。
虽然这不是笛卡尔积,但计数方式相同:因为每个系都提供2门课程,所以总课程数为 3 × 2 = 6。我们仍然可以应用乘积法则,因为在这个特定层级上,所有节点的度数相同。
核心思想:
树可以表示任何序列集合,而不仅仅是笛卡尔积。只要我们能识别出树的结构,就可以系统性地计算路径或叶子节点的数量。
应用实例:体育比赛赛制 🏆
树结构在计数场景中非常有用,例如分析体育比赛赛制。在许多体育项目中,采用“n局胜”制(如七局四胜)。通常,当一方赢得超过半数的局数时,比赛就会提前结束。
以三局两胜制为例,参赛者是Roger和Serena。比赛序列可以用树来表示。以下是所有可能的获胜序列树:
- Roger赢第一局
- Roger赢第二局 -> 比赛结束 (R, R)
- Serena赢第二局
- Roger赢第三局 -> 比赛结束 (R, S, R)
- Serena赢第三局 -> 比赛结束 (R, S, S)
- Serena赢第一局
- Serena赢第二局 -> 比赛结束 (S, S)
- Roger赢第二局
- Serena赢第三局 -> 比赛结束 (S, R, S)
- Roger赢第三局 -> 比赛结束 (S, R, R)
我们希望计算有多少种可能的比赛序列(即树中有多少叶子节点)。以下是系统性的计数方法:
- 自底向上递归计数:
- 每个叶子节点自身的后代叶子数计为1。
- 对于非叶子节点,其后代叶子数等于其所有子节点的后代叶子数之和。
通过这种方法,我们可以计算出总共有6个叶子节点,即6种可能的比赛序列。
进一步推广:有向无环图中的路径 🛣️
树的概念可以进一步推广到更一般的有向无环图中计算路径数量。目标是计算从源节点到目标节点的所有可能路径数。
我们同样可以使用递归方法:
-
方法一(从目标向前推):
- 设目标节点到自身的路径数为1。
- 对于其他节点,计算到目标节点的路径数:该节点到目标的路径数 = 其所有后继节点到目标的路径数之和。
- 递归计算,直到得到源节点到目标节点的路径数。
-
方法二(从源点向后推):
- 设源节点到自身的路径数为1。
- 对于其他节点,计算从源节点到该节点的路径数:到该节点的路径数 = 其所有前驱节点到源节点的路径数之和。
- 递归计算,直到得到源节点到目标节点的路径数。
两种方法最终结果一致。这展示了一种强大的思想:通过识别图的结构(此处为无环性),我们可以将复杂的计数问题分解为简单的递归步骤。
总结 📚
本节课中我们一起学习了:
- 笛卡尔积可以直观地用树结构表示,其大小计算符合乘积法则。
- 树结构是比笛卡尔积更一般的概念,可以表示任何序列集合,并允许进行系统性计数。
- 通过递归方法,可以计算树中叶子节点(或路径)的数量,核心是
节点计数 = 子节点计数之和。 - 这种方法可以推广到有向无环图中计算源点到目标点的路径总数。
- 这些计数技巧为后续理解随机现象的概率计算奠定了基础。


总之,在计数问题时,寻找并利用结构(如树或特定图)是简化问题的关键。下一节我们将探讨组合数学。
021:组合 📊



在本节课中,我们将要学习组合的概念。上一节我们介绍了排列,本节中我们来看看如何计算从一组元素中不考虑顺序地选择子集的方法数,即组合。
组合的定义
组合关注的是从一个集合中选出指定大小的子集,而不考虑这些元素被选出的顺序。

一个包含 n 个元素的集合(例如 {1, 2, ..., n})中,所有大小为 k 的子集构成的集合,记作 {1, ..., n} choose k。这个集合的元素个数就是我们想要计算的组合数,记作 n choose k,也称为二项式系数。

以下是几个例子:
{1, 2, 3} choose 1包含的子集有:{1},{2},{3}。{1, 2, 3} choose 2包含的子集有:{1, 2},{1, 3},{2, 3}。{1, 2, 3, 4} choose 2包含的子集有:{1, 2},{1, 3},{1, 4},{2, 3},{2, 4},{3, 4}。
组合与二进制序列的对应关系
为了更直观地计算组合数,我们可以建立组合与二进制序列之间的一一对应关系。
考虑一个长度为 n 的二进制序列(由 0 和 1 组成)。一个包含 k 个 1 的序列,可以看作是指定了原集合中哪些位置(对应 1)的元素被选中。因此:
- 集合
{1, ..., n} choose k与 所有长度为n且恰好有k个1的二进制序列的集合 是等价的。
以下是这种对应关系的例子:
{1, 2, 3} choose 1对应序列:100,010,001。{1, 2, 3} choose 2对应序列:110,101,011。- 子集
{2, 4}(属于{1, 2, 3, 4} choose 2)对应序列:0101。

由于存在一一对应关系,这两个集合的大小(元素个数)是相同的。因此,计算组合数 n choose k 等价于计算长度为 n 且包含 k 个 1 的二进制序列的个数。
推导组合数公式
现在我们来推导二项式系数 n choose k 的计算公式。
我们通过指定 1 出现的位置来构造序列。一种方法是有序地指定 k 个不同的位置。第一个位置有 n 种选择,第二个有 n-1 种,以此类推,直到第 k 个位置有 n-k+1 种选择。这实际上是在计算 k-排列数:
有序指定位置的方法数 = n 的 k 次下降阶乘 = n * (n-1) * ... * (n-k+1) = n! / (n-k)!
但是,这种方法会重复计数同一个二进制序列。因为对于同一个包含 k 个 1 的序列,这 k 个 1 被列出的顺序有 k! 种(即 k 个元素的排列数)。例如,序列 101 可以通过指定顺序 (1, 3) 或 (3, 1) 得到。

因此,我们得到以下关系:
(n choose k) * k! = n! / (n-k)!
整理后,得到组合数的标准公式:
n choose k = n! / (k! * (n-k)!)
这个公式也可以理解为:先计算有序选择 k 个位置的方法数 n!/(n-k)!,然后除以这 k 个位置的内部排列数 k!,以消除顺序的影响。



理解特殊情况的组合数
我们可以通过公式或直观理解来计算一些特殊情况下的组合数,这有助于加深对概念的理解。
以下是几个简单情况的组合数及其解释:
- n choose 0 = 1:从
n个元素中一个都不选,只有一种方式(空集)。对应全为0的二进制序列。 - n choose n = 1:选择所有
n个元素,只有一种方式(全集)。对应全为1的二进制序列。 - n choose 1 = n:选择
1个元素,有n种方式,即选择哪个元素。对应只有一个1的二进制序列,1的位置有n种可能。 - n choose 2 = n(n-1)/2:选择
2个元素。先有序选择有n(n-1)种方式,再除以2! = 2消除顺序。也可以理解为在n个位置中选一个给唯一的0,有n种选法。

对称性与计算技巧
二项式系数具有对称性:n choose k = n choose (n-k)。这从公式上很容易看出,因为 n!/(k!(n-k)!) = n!/((n-k)!k!)。
这个性质在计算时非常有用。当 k 较大时,计算 n choose (n-k) 可能更简单。例如:
- 计算
7 choose 5时,可以转为计算7 choose 2。 - 计算
12 choose 9时,可以转为计算12 choose 3。

对于具体的计算,可以利用公式的简化形式:n choose k = (n 的 k 次下降阶乘) / k!。例如:
7 choose 2 = (7*6) / (2*1) = 2112 choose 3 = (12*11*10) / (3*2*1) = 220
总结

本节课中我们一起学习了组合的核心内容。我们首先定义了从 n 个元素中选取 k 个元素的子集(组合),并将其等价转化为计算特定二进制序列个数的问题。通过分析有序选择与最终无序结果之间的关系,我们推导出了组合数的核心公式 n choose k = n! / (k! * (n-k)!)。我们还探讨了该公式的特殊情况、对称性以及一些实用的计算技巧。组合数是概率论与统计学中计数原理的基础,在后续学习二项分布等概念时将起到关键作用。
022:星与条法
在本节课中,我们将学习组合数学的最后一个重要应用——星与条法。我们将探讨如何利用之前学到的组合知识,解决代数中关于整数求和的问题,并推导出简洁的公式。
概述
到目前为止,我们已经讨论了排列、组合和二项式系数等组合数学的应用。本节将介绍一种不同的应用:使用星与条法来计算将一个整数写成特定数量整数之和的方法数。我们将从简单的例子入手,逐步推导出通用公式,并展示其在解决实际问题中的威力。
正整数有序求和
首先,我们考虑一个具体问题:有多少种方法可以将数字5写成三个正整数之和,且顺序不同视为不同的方法?
例如,5可以写成:
- 3 + 1 + 1
- 2 + 2 + 1
- 2 + 1 + 2
- 1 + 3 + 1
- 1 + 2 + 2
- 1 + 1 + 3
通过枚举,我们发现总共有6种方法。我们的目标是利用组合数学来推导出这个数字6。
建立类比:星与条
我们可以将这个问题转化为一个“分配”问题:将5个相同的物品(用星号 * 表示)分配到3个有序的组中,每组至少有一个物品。
- 求和
3 + 1 + 1对应分组:*** | * | * - 求和
2 + 2 + 1对应分组:** | ** | * - 求和
2 + 1 + 2对应分组:** | * | **

在这个类比中:
- 星号 (
*) 的总数代表要求和的目标数字(这里是5)。 - 条 (
|) 用于分隔不同的组。由于有3组,我们需要3 - 1 = 2个条。 - 关键约束:为了确保每组至少有一个星号(即每个加数都是正整数),我们不能将条放在相邻星号之间的同一个间隙,并且条不能放在序列的两端。
对于5个星号,它们之间有 5 - 1 = 4 个间隙。我们需要从这4个间隙中选择2个来放置分隔条。因此,总的方法数就是组合数 C(4, 2)。
公式:C(4, 2) = 6,这与我们枚举的结果一致。
推广到一般情况
上一节我们通过一个具体例子建立了星与条模型,现在将其推广到一般情况。
假设我们想将正整数 n 写成 k 个正整数之和(顺序重要)。根据类比:
- 我们有
n个星号。 - 我们有
k个组,因此需要k - 1个条来分隔。 - 星号之间有
n - 1个间隙。 - 我们需要从这
n - 1个间隙中选择k - 1个来放置条。

因此,方法总数由以下组合数给出:
公式:C(n - 1, k - 1)
让我们验证几个简单情况以确保公式正确:
- k = 1:将
n写成1个数之和,只有n = n一种方式。公式给出C(n-1, 0) = 1。 - k = n:将
n写成n个数之和,每个数必须是1,只有1+1+...+1一种方式。公式给出C(n-1, n-1) = 1。 - k = 2:将
n写成两个数之和,有(1, n-1), (2, n-2), ..., (n-1, 1)共n-1种方式。公式给出C(n-1, 1) = n-1。
这个公式的强大之处在于能快速解决复杂问题。例如,问“8写成4个正整数之和有多少种方法?”,我们无需费力枚举,直接计算:C(8-1, 4-1) = C(7, 3) = 35。
扩展到任意项数的正整数求和
现在,我们考虑一个更宽泛的问题:将正整数 n 写成任意多个正整数之和(顺序重要)有多少种方法?
以 n=3 为例:
- 3
- 1+2
- 2+1
- 1+1+1
总共4种方法。
再次使用星与条模型。对于3个星号 (***),它们之间有2个间隙。每个间隙我们都可以选择“放条”或“不放条”来决定是否在此处分割数字。
***(无条) 对应求和:3*|**(在第一个间隙放条) 对应求和:1+2**|*(在第二个间隙放条) 对应求和:2+1*|*|*(在两个间隙都放条) 对应求和:1+1+1
每个间隙有2种选择(放或不放),2个间隙总共就有 2^2 = 4 种排列方式,对应4种求和方法。
推广到一般情况:对于 n 个星号,有 n-1 个间隙,每个间隙独立地有2种选择。因此,总方法数为:
公式:2^(n-1)
我们也可以用上一节的公式来验证这个结果。将 n 写成任意多个正整数之和,相当于对 k 从1到 n 求和:Σ_{k=1}^{n} C(n-1, k-1)。令 i = k-1,则求和变为 Σ_{i=0}^{n-1} C(n-1, i)。根据二项式定理,这个和等于 2^(n-1),与我们的推导一致。
非负整数有序求和
接下来,我们修改问题的条件:有多少种方法可以将数字 n 写成 k 个非负整数(即可以包含0)之和,且顺序重要?
以 n=2, k=3 为例,我们需要找到三个非负数相加等于2:
- 2+0+0
- 0+2+0
- 0+0+2
- 1+1+0
- 1+0+1
- 0+1+1
总共6种方法。
我们依然使用星与条模型,但规则需要调整:
n个星号仍然代表总和。k个非负数需要k-1个条来分隔。- 关键变化:由于数字可以为0,意味着两个条之间(或序列开头到第一个条之间,或最后一个条到序列结尾之间)的星号数量可以为0。因此,条可以相邻,也可以出现在序列两端。

这样一来,问题就变成了:我们有 n 个相同的星号和 k-1 个相同的条,将它们排成一列,总共有多少种不同的排列方式?
总共有 n + (k-1) 个位置。我们只需要从中选择 k-1 个位置来放置条(或者等价地,选择 n 个位置来放置星号)。因此,方法总数为:
公式:C(n + k - 1, k - 1) 或等价的 C(n + k - 1, n)
对于 n=2, k=3 的例子:C(2+3-1, 3-1) = C(4, 2) = 6,结果正确。
应用示例:不计顺序的单词计数
让我们看一个实际应用。问:由26个字母组成的4字母单词有多少个?(注意:这里“单词”指字母序列)
- 如果顺序重要:每个位置有26种选择,总数为
26^4 = 456,976。 - 如果顺序不重要:我们只关心字母的组成,即字母A出现了几次,B出现了几次……例如,“evil”、“vile”、“live”被视为同一个“单词”。那么,一个“单词”就由一组非负整数
(a, b, c, ..., z)决定,其中a + b + c + ... + z = 4(因为单词长度为4)。
这正好是将数字4写成26个(对应26个字母)非负整数之和的问题(顺序在这里指字母种类的顺序是固定的A-Z,但求和本身顺序不重要,我们使用星与条法时已经隐含了这种顺序)。因此,根据公式:

计算:C(4 + 26 - 1, 26 - 1) = C(29, 25) = C(29, 4) = 23,751
这个结果远小于 456,976 是合理的。因为大多数4字母单词由4个不同字母组成,如果不计顺序,每组不同的4个字母对应的 4! = 24 种排列会合并为1种。456,976 / 24 ≈ 19,040,再加上那些包含重复字母的单词组合,总数 23,751 是合理的。
公式间的联系
最后,我们简要探讨一下本节推导的几个公式之间的联系。
1. 正整数求和与非负整数求和公式的关联
将 n 写成 k 个正整数之和的方法数 C(n-1, k-1),可以通过非负整数求和的公式推导出来。
思路:对于一组 k 个正整数 (a1, a2, ..., ak),满足 Σ ai = n。令 bi = ai - 1,则每个 bi 都是非负整数,且 Σ bi = n - k。这个变换是一一对应的。因此:
#(k个正整数之和为n) = #(k个非负整数之和为n-k) = C((n-k) + k - 1, k-1) = C(n-1, k-1)
2. 求和“至多”为n的情况
考虑 k 个非负整数之和不超过 n 的方法数。这等价于 k+1 个非负整数之和恰好等于 n 的方法数。
思路:对于一组和不超过 n 的 k 个非负整数,我们总可以添加一个非负整数“余项”,使总和恰好等于 n。这个添加的余项是唯一的。因此:
#(k个非负整数之和 ≤ n) = #(k+1个非负整数之和 = n) = C(n + (k+1) - 1, (k+1)-1) = C(n + k, k)
总结
本节课中,我们一起学习了组合数学中强大的星与条法。我们首先学习了如何计算将整数 n 写成 k 个正整数之和(有序)的方法数,其公式为 C(n-1, k-1)。接着,我们将其扩展到任意项数的正整数求和,得到方法数为 2^(n-1)。然后,我们处理了非负整数求和的问题,推导出公式 C(n + k - 1, k - 1),并应用该公式解决了“不计顺序的单词计数”问题。最后,我们看到了这些公式之间的内在联系。

星与条法展示了组合技巧如何为看似复杂的代数计数问题提供清晰直观的解决方案。接下来,我们将离开组合数学的主题,开始概率论部分的学习。
023:概率论导论 🎲
在本节课中,我们将要学习概率论的基础概念。我们将从讨论随机性及其重要性开始,然后探讨概率的含义。接着,我们会介绍随机实验的可能结果,以及所有可能结果的集合——样本空间。最后,我们将学习概率分布的概念。
为什么需要概率?🤔
生活中的某些事情是确定的,例如死亡和税收。但无论你是否认同本杰明·富兰克林的哲学,你都会同意,生活中的大多数事情都难以完全预测。

例如:
- 医生可能想知道病人患了什么病,或者某种药物是否有效。
- 农民可能短期担心第二天是否会下雨,或者长期担心他们种植的作物是否正确,因为饮食习惯可能会改变。
- 投资者肯定担心他们持有的股票是涨是跌,同时也更广泛地担忧经济走势。
- 广告商可能想知道一则广告在线上会被观看多少次,他们也担心未知的竞争。
- 消费者可能想知道他们去商店时产品是否有货,以及是否会打折。
- 当然,最令人担忧的是学生。从食堂队伍有多长这样的小事,到这门课能得什么成绩这样的大事,再到父母会如何看待他们的成绩、他们将得到的工作,或者他们希望拥有的约会,以及最重要的——他们在电子游戏中的表现如何。

即使是那些看似不可避免的事情,仔细想想,也许也不像我们认为的那样确定。因为仍然存在何时发生、以何种形式、在何地发生的问题。对于税收,你可能想知道自己是否会被审计,或者今年是否会实行10%的统一税率。
因此,我们需要讨论随机现象。问题是,既然我们在谈论随机的事物,我们无法必然地确定某些事情。那么,我们是应该完全放弃,还是仍然可以说一些有智慧且有用的话呢?
我们将要展示的是,实际上你可以了解随机现象的某些方面。例如,你可以尝试了解你将观察到的范围、你将如何获得数据、你将看到的事物的平均值、它们的变异性,以及你观察到的随机数据的其他属性。你可以尝试推断许多事情,包括你所查看数据的结构、它是否随时间变化、如果变化,朝什么方向变化、不同种类数据之间可能存在的关系,以及这种关系如何随机地表现出来。
然后,你也可以尝试预测不同的值,可以尝试预测数据的未来值,或者你可以尝试预测某些结果的可能性,并尝试提出保证,说明我可以对结果有某种程度的把握。
一旦你完成了所有这些,你就可以希望通过理解数据背后的更多内容、提前规划事物可能如何变化或保持不变、可能发生什么,并利用对可能不同结果和结构的了解来构建算法或设备,从而从随机数据中受益。
从一般到具体:术语介绍 📚
我们需要从这种非常笼统的介绍转向更具体的内容。我们需要像处理集合时那样,引入一些术语,以便我们能够简洁而精确地讨论问题。
我们希望讨论几个方面:
- 生成和观察数据的过程。
- 个体结果。
- 我们将看到的所有可能观察结果的集合。
- 概率的含义、它意味着什么以及我们如何解释。
我们将采取直观的方法,而不是从公理开始,看看它们对数据意味着什么。相反,我们将从数据开始,看看公理应该是什么以满足我们观察到的现象。
实验与结果 🔬
我们从收集数据的过程开始,这被称为实验。原因是概率论的发展部分是为了辅助不同的科学努力,因此他们将生成随机数据然后观察结果的过程称为实验,例如生物或化学实验。
但我们以一种非常通用的方式使用这个词。无论你是在生物学、社会学中观察人们的行为或趋势,还是在商业中观察股票价格或广告,或者在工程学中收集数据并观察不同的可能性,我们都称之为你进行的实验。
为了理解它,我们显然需要比“我们有一个模糊的生物实验”更精确一些。因此,我们将从非常简单的例子开始,可能是最简单的那种。随着时间的推移,我们将逐步过渡到更复杂的例子和实验。
如果你进行一个实验,那么你正在从该实验中做一些观察。可能的结果、结果或观察被称为实验的结果。
所有可能结果的集合被称为样本空间,用符号 Ω 表示。
需要注意的是,有些人使用 S 表示样本集,或 U 表示全域,但我们将使用 Ω。
以下是几个例子:
- 假设你抛一枚硬币,在某种意义上进行一个实验,可能的结果是正面和反面,我们用 H 和 T 表示。
- 如果你掷一个骰子,可能的结果是1到6。这也是我们的样本空间 Ω。
- 如果你观察一个人的性别,样本空间是男或女。
- 如果你观察年龄,那么样本空间可能是整数、非负整数或自然数。
- 如果你观察温度,那么可能的温度是所有实数。当然,我们知道温度不能太低,但暂时让我们这样想象。
这些就是实验、可能结果的集合,这个集合再次被称为样本空间。通常,如你所见,我们用小写字母表示结果,如 H、T 或 x(如果它是一个通用的结果)。你当然会注意到这与我们之前研究的集合元素的相似之处,这并非巧合。我们研究集合,以便可以在这里讨论元素和集合。正如你可能想象的那样,事实上在下一讲中,我们将从讨论集合转向讨论子集。
样本空间的类型 📊

样本空间有两种类型:一种是有限或可数无限的,这些样本空间被称为离散的。基本上,这些是你可以用手指计数的东西,尽管可能需要不止一只手。
它们包括:
- 如果实验是抛硬币,由正面和反面组成的集合。
- 如果实验是掷骰子,由数字1到6组成的样本空间。
- 年龄的自然数集合。
- 整数集合 Z。
- 如果你分析文档,单词的集合。
- 如果你进行涉及位置的实验,城市的集合。
- 人的集合。
另一种类型的样本空间是连续的,即不可数无限的。我们通常将连续样本空间视为可以沿实数线表示的事物。
它们包括:
- 实数集 R,例如用于温度、薪水或价格。需要注意的是,薪水和价格可能不完全连续,因为它们可能以美分表示,但它们足够接近连续,我们将其视为连续的,这样做实际上很有帮助。
现在,我们将首先关注离散空间,因为离散空间更容易理解、可视化和处理,而且它们也很重要。连续空间也非常重要,但概念上更难,所以我们稍后再讨论。因此,在接下来的几个主题中,我们将讨论离散样本空间。

随机变量 🎯
现在,一旦我们进行一个随机实验,结果将是随机的,我们需要给它一个名字。
我们知道,在进行代数运算时,我们用小写 x 表示未知值。例如,如果我们有这个方程 2x - 4 = 0,x 代表某个我们还不知道的实数,但它满足这个方程。一旦你解出它,你就会发现 x 的值。在求解之前,你只知道 x 是一个实数;求解之后,你会知道在这种情况下 2x = 4 或 x = 2。
类似地,当我们进行概率实验时,我们会得到一个随机结果,我们想给它起个名字。我们将用大写 X 表示这个随机结果。这里我们有小写 x,这里我们有大写 X。随机结果将用大写 X 表示。
例如,X 可以是一次抛硬币的结果,我们不知道它。我们进行实验,抛硬币。在进行实验之前,我们所知道的是 X 属于样本空间 Ω。在这种情况下,我们知道 X 要么是正面,要么是反面。在我们进行实验之后,如果我们得到正面,那么 X 将获得值 H,就像之前小写 x 获得值 2 一样。如果硬币出现反面,那么随机变量大写 X 将获得值 T 表示反面。
请注意,就像代数中我们经常需要不止一个变量一样,如果需要,我们会使用 Y 和 Z 等,而不仅仅是 X。同样,这里我们将从 X 开始,但如果需要更多随机变量,我们将使用大写 Y 和大写 Z 来表示它们是随机的。

结果的概率 📈
接下来,我们想讨论结果的概率。直观地说,样本空间 Ω 中某个结果 x 的概率或可能性,我们用 P(x) 表示,或者随机变量大写 X 取值为小写 x 的概率,是当实验重复多次时,这个小写 x 发生的次数所占的比例。
例如,如果抛一枚公平的硬币,那么随着实验次数趋于无穷大,正面的比例(即观察到正面的次数除以实验总次数)将趋近于二分之一。同样,如果硬币是公平的,那么反面的比例(观察到反面的次数除以实验总次数)也将趋近于二分之一。
这意味着对我们来说,正面的概率是二分之一,因为它们发生在一半的时间里。我们会说正面 H 的概率是二分之一,或者随机结果 X 是正面的概率是二分之一。
同样,反面的概率也是二分之一。我们将其表示为 P(T) = 1/2。如果我们重复实验很多很多次,反面的比例将是二分之一,或者随机结果 X 取值为反面的概率是二分之一。
如果我们有一个公平的骰子,那么随着实验次数趋于无穷大,出现1、2、3……6的比例将趋近于六分之一。如果我们掷这个骰子一百万次,我们预计大约六分之一的时间会看到值1,六分之一的时间会看到值2,依此类推。那么我们会说1的概率是六分之一,或者随机结果 X 是1的概率是六分之一。
总结一下,P(x),即 x 的概率,也表示为随机变量 X 取值为小写 x 的概率。例如,实验得到正面值的概率,或者这个随机实验以反面值结束的概率,这就是 x 的概率,也就是当我们多次进行实验时,x 发生的次数所占的比例。

概率分布函数 📊
就像我们处理元素和集合一样,我们希望从个体元素或结果转向整个样本空间。P(x) 是结果 x 发生的次数比例。例如,正面的概率是二分之一,它发生在一半的时间里;1的概率是六分之一,平均每六次掷骰子中会有一次是1。
当我们查看整个样本空间的概率时,一个模式就出现了。让我们看看:
- 如果你抛一枚硬币,那么正面的概率是二分之一,反面的概率也是二分之一。
- 如果你掷一个骰子,那么1的概率是六分之一,依此类推,直到6的概率也是六分之一。
- 如果你看某一天下雨的概率,假设下雨的概率是10%,那么不下雨的概率就是90%。
当我们观察这些不同的实验时,有一个共同点,那就是这个概率 P 实际上将样本空间的元素(如正面和反面)映射到非负数,并且它们的总和为一。
这意味着对我们来说,P 是一个函数,它将样本空间 Ω 中的结果映射到实数,使得每个元素的概率大于等于0,并且当你对样本空间中所有元素的概率求和时,你会得到1。例如,这里六分之一加六分之一,加六次,得到1;对于下雨,10%加90%等于1。
因此,我们将这个被视为从 Ω 到实数的映射的概率称为概率分布函数。它给出了 Ω 中每个元素的分布或概率。有时我们简称为分布。
需要注意的一点是,当我们取样本空间 Ω(例如,我们有正面和反面)以及说明正面概率是多少、反面概率是多少的分布时,Ω 和这个概率分布函数的组合定义了整个概率空间,定义了我们关于这个实验需要知道的一切。
总结 🎉

本节课中我们一起学习了概率论的基础知识。我们讨论了随机性以及为什么我们关心它,提供了一些动机和解释来说明概率的含义。我们描述了什么是结果、什么是样本空间,并讨论了概率分布。
下一次课,我们将讨论分布的类型。下次见。
024:分布类型 📊
在本节课中,我们将要学习概率分布的类型。我们将从最简单的均匀分布开始,通过硬币、骰子和扑克牌等例子来理解它。然后,我们将探讨更普遍的非均匀分布,并介绍一个四面体骰子的例子。理解这些分布类型是进行后续概率计算的基础。
均匀概率空间
上一节我们讨论了随机性和分布的基本概念,本节中我们来看看一种特殊的分布类型——均匀分布。在均匀概率空间中,所有可能的结果都具有相同的发生概率。
在数学上,对于一个样本空间 Ω,如果它是均匀的,那么对于空间中的每一个结果 x,其概率 P(x) 都相等。由于所有概率之和必须为1,我们可以得到以下公式:
P(x) = 1 / |Ω|
其中,|Ω| 表示样本空间 Ω 的大小(即可能结果的总数)。
以下是几个均匀概率空间的经典例子:
- 公平硬币:样本空间 Ω = {H, T},大小为2。因此,P(H) = P(T) = 1/2。
![]()

-
公平骰子:样本空间 Ω = {1, 2, 3, 4, 5, 6},大小为6。因此,每个面朝上的概率都是 1/6。
![]()
-
标准扑克牌:从一副52张的牌中随机抽一张,每张牌被抽中的概率相同,均为 1/52。
在均匀分布中,我们常说“随机抽取”或“均匀抽取”,这意味着每个结果被选中的机会均等。这使得概率计算变得非常简单,因为你只需要知道可能结果的总数。

非均匀概率空间
然而,现实世界中的许多情况并非均匀分布。均匀分布像硬币和骰子那样理想化,但自然界中非均匀的情况更为普遍。
例如,下雨的概率、学生获得不同等级的成绩、某些单词在语言中出现的频率、不同疾病的患病率、网页的访问量分布等,通常都不是均匀的。反映这种不同概率的典型可视化工具是饼图。


为了具体说明非均匀分布,我们来看一个特制的四面体骰子(金字塔形骰子)的例子。虽然这种骰子在游戏中通常也是均匀的,但这里我们赋予它的四个面(1, 2, 3, 4)不同的概率,以便于记忆:
- 面1的概率:0.1
- 面2的概率:0.2
- 面3的概率:0.3
- 面4的概率:0.4
注意,这些概率之和为 0.1 + 0.2 + 0.3 + 0.4 = 1,满足概率分布的要求。




关于概率记法的注意事项
在讨论了具体例子之后,我们需要注意概率记法,初学者有时可能会感到困惑。以下是有效和无效表达方式的说明:
以下是正确且常见的概率表达式:
P(X = 3):表示随机变量 X 取值 3 的概率。P(3):是P(X = 3)的简写形式。P(x):当明确 x 是某个特定值时,例如在四面体骰子中,P(1) = 0.1。
以下是可能不常见或容易出错的表达式:
P(1 = 3):这通常表示“数字1等于数字3”的概率,其值为0。除非有特殊上下文,否则很少这样写。P(X):这表示随机变量 X 本身的概率,在基础概率论中不这样使用。它可能被解释为P(X=x)对于某个 x,但含义模糊。
以下是错误的表达式:
P(x = 3):注意,小写 x 通常代表一个具体的数值,而不是随机变量。因此“数值等于3的概率”这种说法没有意义。

总结

本节课中我们一起学习了概率分布的两种主要类型。我们首先介绍了均匀分布,其中所有结果等可能发生,并通过硬币、骰子和扑克牌的例子加深了理解。接着,我们探讨了更为常见的非均匀分布,并以一个概率各不相同的四面体骰子为例进行了说明。最后,我们澄清了关于概率记法的一些关键点,为后续学习事件及其概率计算做好了准备。
概率与统计:P25:重复实验(第二部分)

在本节课中,我们将继续学习重复实验。上一节我们介绍了复合实验,以及有放回和无放回抽样的概念。本节中,我们将探讨在重复实验中,顺序是否重要对概率计算的影响。
顺序是否重要
到目前为止,我们讨论的例子都假设顺序是重要的。例如,在抽牌时,我们区分“先抽到5,再抽到3”和“先抽到3,再抽到5”这两种情况。在许多实际应用中,顺序确实重要,比如股票价格的先后变化。
然而,在另一些应用中,顺序并不重要。例如,在选举中统计票数时,只关心最终各候选人获得的总票数,而不关心投票的先后顺序。购物时,篮子里的商品集合是相同的,也不关心放入篮子的顺序。
当顺序不重要时,我们关心的结果从有序元组(例如 (2, 5))变成了无序集合(例如 {2, 5})。这意味着,原本两个不同的有序结果(如 (2, 5) 和 (5, 2))现在对应于同一个无序集合 {2, 5}。
有放回抽样下的顺序影响
假设我们有一个包含数字1到6的集合,进行有放回地抽取两次(相当于掷两次骰子)。
当顺序重要时,样本空间是所有有序对 (i, j),其中 i, j ∈ {1, 2, 3, 4, 5, 6}。总共有 6^2 = 36 种等可能的结果,每个结果的概率为 1/36。
当顺序不重要时,我们关心的是无序集合 {i, j}。此时概率分布不再均匀。
- 计算集合
{1, 2}的概率:它对应两个有序结果:(1, 2)和(2, 1)。因此,P({1, 2}) = 2/36。 - 计算集合
{1, 1}的概率:它只对应一个有序结果:(1, 1)。因此,P({1, 1}) = 1/36。
可以看到,非重复元素集合的概率是重复元素集合概率的两倍。
验证概率和为1:
- 非重复元素集合(如
{1, 2})共有C(6, 2) = 15个,每个概率为2/36,总概率为15 * (2/36) = 30/36。 - 重复元素集合(如
{1, 1})共有6个,每个概率为1/36,总概率为6 * (1/36) = 6/36。 - 总和为
(30+6)/36 = 1。
无放回抽样下的顺序影响
现在,我们从数字1到6中无放回地抽取两次。
当顺序重要时,样本空间是所有 i ≠ j 的有序对 (i, j)。总共有 6 * 5 = 30 种等可能结果,每个结果的概率为 1/30。
当顺序不重要时,我们关心无序集合 {i, j}(此时 i 必然不等于 j)。
- 计算集合
{1, 2}的概率:它对应(1, 2)和(2, 1)两个有序结果。因此,P({1, 2}) = 2/30 = 1/15。 - 注意:不可能出现像
{1, 1}这样的重复集合。
在这种情况下,所有可能的无序集合都是等概率的,每个的概率都是 1 / C(6, 2) = 1/15。这是因为无放回抽样天然避免了重复元素,使得每个无序集合都恰好对应两个有序结果。
另一种计算思路:当顺序不重要时,我们可以将“无放回抽取两个元素”直接视为同时抽取两个元素。样本空间就是所有可能的无序对 {i, j},大小为 C(6, 2)=15。由于抽样是随机的,每个无序对被抽中的机会均等,因此概率为 1/15。这与上面的结果一致。
应用示例:扑克手牌概率
一个标准扑克牌组有52张牌。一手扑克牌是5张牌的组合。
- 样本空间 Ω:所有可能的5张牌手牌的集合。
- 样本空间大小:从52张牌中无放回、不计顺序地抽取5张,总组合数为:
|Ω| = C(52, 5) = 52! / (5! * 47!) = 2,598,960
这大约是260万种可能的手牌。 - 概率计算:由于每手牌被抽中的机会均等(均匀分布),任何一手特定牌型(例如同花顺)的概率都是
1 / 2,598,960。要计算更复杂事件(如“拿到一对”)的概率,只需计算满足条件的手牌数量,再除以总手牌数即可。
总结
本节课中我们一起学习了重复实验中顺序的影响。
- 第一部分回顾:我们复习了有放回和无放回抽样。有放回时,新样本空间大小为原大小的平方;无放回时,新样本空间大小为
n * (n-1)。 - 顺序的重要性:
- 当顺序重要时,我们处理有序元组。
- 当顺序不重要时,我们处理无序集合。同一个集合可能对应多个有序元组。
- 对概率分布的影响:
- 有放回抽样下,若顺序不重要,概率分布不再均匀(非重复集合的概率是重复集合的两倍)。
- 无放回抽样下,若顺序不重要,概率分布保持均匀,每个可能集合的概率为
1 / C(n, k)。
- 核心公式:
- 从
n个元素中无放回、不计顺序地抽取k个,样本空间大小为组合数:C(n, k) = n! / (k! * (n-k)!)。 - 在该均匀分布中,任何特定组合的概率为:
P(特定组合) = 1 / C(n, k)。
- 从

下一节课,我们将开始应用这些概念来分析各种机会游戏。
026:概率博弈 🎲
在本节课中,我们将应用之前学到的关于单个元素、事件、有放回与无放回抽样的概率知识,来计算几种游戏中的概率。这为我们提供了一个实验的机会,帮助我们更好地理解均匀概率空间以及不同结果和事件的概率。我们将讨论轮盘赌、多米诺骨牌、扑克和双陆棋等游戏。
轮盘赌:游戏规则与概率计算
上一节我们介绍了本课程的目标,本节中我们来看看第一个游戏:轮盘赌。我们将先讨论游戏的基本规则,然后计算相关概率,最后分析玩家的预期收益。
轮盘赌于17世纪在法国发明,据说是由布莱士·帕斯卡(Blaise Pascal)所创。我们将在本课程后续再次提到帕斯卡。他当时试图研究永动机,在此过程中发明了轮盘赌。其名称“Roulette”来源于法语,意为“小轮子”。

轮盘如图所示,包含从1到36的整数,以及一个通常显示为绿色的数字0。游戏时,旋转轮盘和一个小球,玩家对小球最终停留的位置进行下注。例如,图中小球停在了数字25上。

轮盘赌有不同的种类,这里我们讨论的是法式(也称欧式)轮盘。美式轮盘则额外多了一个“00”。当然,还有俄式轮盘,但我们不在此讨论。
以下是你可以进行的投注类型。如图所示是轮盘赌的赌桌,你可以在不同位置放置筹码。例如,你可以将筹码放在单个数字上(如图中数字9)。如果结果命中该数字,你投入1个筹码,将获得36个筹码的回报。
你也可以押注结果为红色或黑色,或者数字为偶数或奇数(如2、4、6等),或者数字为小(1-18)或大(19-36)。在这些情况下,你将获得2个筹码的回报(即净赚1个)。

你还可以押注数字范围,例如1-12(图中第二列)、13-24(中间列)或25-36(最后一列)。或者,你可以押注数字除以3的余数是0、1或2。对于这些范围投注,你将获得3个筹码的回报。

计算概率:从单个结果到复合事件

现在让我们计算不同结果的概率。首先从单个结果开始。
样本空间由数字0到36组成,共有37个可能结果。每个结果出现的可能性相同,因此这是一个均匀(或等可能)概率空间。根据均匀性,每个元素(从0到36)的概率是样本空间大小的倒数,即 1/37。
注意,我们可能认为有36个数字,概率应是1/36。但实际上由于存在数字0,概率略小,为1/37。

现在讨论一些事件。例如,押注“结果为偶数”这个事件,其包含的有利结果为2, 4, ..., 36。该事件的大小(有利结果的数量)是18(36除以2)。注意,数字0不计入偶数。
因此,根据均匀性,“结果为偶数”的概率是事件大小除以样本空间大小,即 18/37。这很合理,因为有37种可能结果(包括0),但只有18种算作偶数。你可能会认为概率应该是1/2,但由于0的存在,它略小于一半,不是18/36,而是18/37。
类似地,“奇数”、“红色”、“黑色”、“1-18”、“19-36”这些事件的大小都是18,因此每个事件的概率都是 18/37。
对于“1-12”、“13-24”、“25-36”或“模3余数为0、1、2”这些事件,每个事件的大小是12,因此概率为 12/37。
预期收益分析:你会赢还是输?
接下来分析在轮盘赌中你能期望赢或输多少钱。单次游戏随机性很大,难以断言。因此,我们假设你玩很多次游戏,比如去赌场玩一周,然后观察在这个过程中你预期会赚取或损失多少。
为简化计算,我们假设每次下注1美元(下注2美元等额情况原理类似)。我们将考虑两种类型的投注。
第一种情况:始终押注单个数字
假设你总是押注同一个数字,例如数字6。你将筹码放在数字6上。
设游戏总次数为 n,并假设 n 非常大。计算你将获得多少美元。
- 你每次下注1美元,因此总下注金额为
n美元(确定值)。 - 你的回报是随机的。但由于每次押中的概率是
1/37,根据大数定律,在大量游戏中,你押中的次数大致为n/37次。 - 每次押中,你获得36美元。因此,你获得的总回报大约是
36 * (n/37)美元。 - 你的净收益(或损失)是总回报减去总下注:
36*(n/37) - n = -n/37美元。 - 这意味着你在亏损。平均每次游戏,你损失
1/37 ≈ 0.027美元,即约为下注金额的 2.7%。
这个比例也是赌场赚取的比例,称为 庄家优势 或 赌场优势。每次你在单个数字上下注,平均而言,赌场会获得下注额的2.7%,而你则损失2.7%。这额外的优势正是来自数字0。
第二种情况:始终押注红色
现在假设你总是将赌注押在红色上。
- 你每次仍下注1美元,总下注金额为
n美元。 - 押中红色的概率是
18/37,因此押中的次数大约为(18/37)*n次。 - 每次押中,你获得2美元(净赚1美元)。因此,总回报大约是
2 * (18/37)*n = (36/37)*n美元。 - 净收益为:
(36/37)*n - n = -n/37美元。
结果与押注单个数字完全相同!你仍然平均每次损失下注额的 2.7%,庄家优势依然是2.7%。在本课程后面,我们将探讨为何这些数字相同,以及它们何时会不同。
庄家优势对比:轮盘赌在赌场游戏中处于什么水平?
现在,我们评估一下2.7%这个数字是高还是低。首先将其与其他赌场游戏进行对比。
以下是不同赌场游戏的庄家优势数据。我们计算的轮盘赌(欧式)优势是2.7%。如图所示,有些游戏的庄家优势更低,有些则更高,但轮盘赌处于常见游戏的范围内。图表显示轮盘赌的庄家优势在2.7%到5.26%之间,其中5.26%对应的是有“0”和“00”的美式轮盘赌。我们留作练习,让你计算美式轮盘赌的赔率。图表中还列出了标准差(Sigma),我们将在后续课程中讨论。

那么,2.7%这个数字算小还是算大呢?看看拉斯维加斯的景象,你或许能得到一些提示。
如果这还不够,那么看看澳门,你会得到更明显的提示。
即使如此,若仍不足以判断这些利润是高是低,你可以做一个简单的核查:去年美国人仅在赌博上就损失了近1200亿美元。这就是2.7%的庄家优势累积起来的结果,正是这些利润建造了所有这些豪华赌场。你可以由此推断人们总共损失了多少钱。


本节总结与下节预告

本节课中,我们一起学习了轮盘赌的基础知识,计算了一些简单的概率,并分析了在长期多次游戏中玩家的预期收益。我们看到,由于庄家优势的存在,玩家平均而言总是处于亏损状态。
下一节,我们将讨论多米诺骨牌游戏中的概率。
027:概率公理体系 🧱
在本节课中,我们将学习概率论的三个基本公理。我们将看到,仅凭这三个简单的“基石”,就能推导出之前讨论过的许多概率性质,例如补集规则、减法规则和容斥原理。

概述
上一节我们讨论了概率的各种性质。现在,我们将从一个全新的角度出发,通过定义一组公理来构建整个概率论体系。我们将介绍三个核心公理,并证明它们可以推导出我们之前观察到的所有一般性结果。
三个基本公理
以下是概率论的三个基本公理,它们构成了我们所有推理的基础。
公理一:非负性
对于样本空间 Ω 中的任何事件 A,其概率至少为零。这非常自然,因为根据概率的频率解释,概率是事件发生次数与总试验次数的比值,这个比值永远不会是负数。
公式表示:
对于任意事件 A,有 P(A) ≥ 0。
公理二:归一性
整个样本空间 Ω 的概率为 1。这同样符合直觉:在所有试验中,样本空间(即所有可能结果的集合)总是发生的。
公式表示:
P(Ω) = 1。
公理三:可加性(加法规则)
如果两个事件 A 和 B 互斥(即没有共同元素),那么它们并集的概率等于各自概率之和。这个公理有一个更一般的形式:对于任意可数个互斥事件 A₁, A₂, ...,其并集的概率等于各事件概率之和。
公式表示:
若 A ∩ B = ∅,则 P(A ∪ B) = P(A) + P(B)。
更一般地,对于可数个互斥事件,有 P(⋃ᵢ Aᵢ) = Σᵢ P(Aᵢ)。
从公理推导重要规则
现在,我们将像搭积木一样,仅使用上述三个公理来构建几个重要的概率规则。
1. 补集规则
首先,我们推导补集规则。回忆一下,对于任何事件 A,A 与其补集 Aᶜ 的并集是整个样本空间 Ω,即 A ∪ Aᶜ = Ω。同时,A 和 Aᶜ 是互斥的。
以下是推导步骤:
- 根据归一性公理:P(Ω) = 1。
- 因为 A ∪ Aᶜ = Ω,所以 P(A ∪ Aᶜ) = P(Ω) = 1。
- 因为 A 和 Aᶜ 互斥,根据可加性公理:P(A ∪ Aᶜ) = P(A) + P(Aᶜ)。
- 结合第2步和第3步:P(A) + P(Aᶜ) = 1。
- 因此,我们得到补集规则:P(Aᶜ) = 1 - P(A)。
推导总结:
这个规则仅使用了可加性和归一性两个公理。
2. 减法规则(嵌套集合)
接下来,我们推广补集规则。首先考虑嵌套集合的情况,即当事件 A 是事件 B 的子集时(A ⊆ B)。
我们的目标是证明:P(B \ A) = P(B) - P(A)。(符号“\”表示集合差)
推导过程如下:
- 当 A ⊆ B 时,B 可以表示为 A 与 (B \ A) 的并集,即 B = A ∪ (B \ A)。
- 由于 A 和 (B \ A) 是互斥的,根据可加性公理:P(B) = P(A) + P(B \ A)。
- 将 P(A) 移到等式另一边,即得:P(B \ A) = P(B) - P(A)。
推导总结:
这个规则仅使用了可加性公理。
3. 减法规则(一般集合)
现在,我们将减法规则推广到任意两个事件 A 和 B(不一定嵌套)。
我们的目标是证明:P(B \ A) = P(B) - P(A ∩ B)。
推导过程如下:
- 观察可知,集合 B \ A 等于 B \ (A ∩ B)。(从 B 中减去 A 与 B 的交集,效果等同于减去整个 A 在 B 中的部分)。
- 注意,A ∩ B 是 B 的子集。因此,我们可以应用上一步的嵌套集合减法规则。
- 将 A ∩ B 视为嵌套情况下的 A,得到:P(B \ (A ∩ B)) = P(B) - P(A ∩ B)。
- 结合第1步,即得:P(B \ A) = P(B) - P(A ∩ B)。
推导总结:
这个规则也仅使用了可加性公理(因为嵌套集合的减法规则由可加性推导而来)。
4. 容斥原理
最后,我们推导概率论中非常重要的容斥原理。对于任意两个事件 A 和 B,容斥原理表述为:
P(A ∪ B) = P(A) + P(B) - P(A ∩ B)
推导过程如下:
- 观察可知,A ∪ B 可以写成 A 与 (B \ A) 的并集,即 A ∪ B = A ∪ (B \ A)。
- 由于 A 和 (B \ A) 互斥,根据可加性公理:P(A ∪ B) = P(A) + P(B \ A)。
- 将上一步推导的一般集合减法规则代入:P(B \ A) = P(B) - P(A ∩ B)。
- 因此,P(A ∪ B) = P(A) + P(B) - P(A ∩ B)。
直观理解:
如果简单地将 P(A) 和 P(B) 相加,那么 A 与 B 交集部分的概率被计算了两次。因此,需要减去一次 P(A ∩ B) 来修正。
推导总结:
容斥原理的推导综合使用了可加性公理和减法规则(而减法规则本身也源自可加性),因此本质上只用了可加性这一个“积木块”。
容斥原理的扩展
以上我们推导了两个集合的容斥原理。对于更多集合,原理是类似的,它是一个交替求和的过程。
-
三个集合(A, B, C)的容斥原理:
P(A ∪ B ∪ C) = P(A) + P(B) + P(C) - P(A∩B) - P(A∩C) - P(B∩C) + P(A∩B∩C) -
直观解释(三个集合):
先加三个事件的概率,但这样两两交集部分被加了两次,所以需要减去一次所有两两交集的概率。然而,三个事件的共同交集部分在“加”的步骤中被加了三次,在“减”的步骤中又被减了三次,相当于没有被计算,所以最后需要再加回来一次。 -
n个集合的一般形式:
n个集合并集的概率,等于所有单个集合的概率之和,减去所有两两交集概率之和,加上所有三三交集概率之和,……,以此类推,直到加上 (-1)ⁿ⁻¹ 乘以所有n个集合交集的概率。

总结

本节课中,我们一起学习了概率论的三个基本公理:非负性、归一性和可加性。我们演示了如何仅用这一两个简单的公理作为“基石”,像搭积木一样严谨地推导出补集规则、减法规则和容斥原理等重要结论。这展示了公理化体系的强大与简洁:所有复杂的概率性质都可以从这几个基本假设出发逻辑地推导出来。
028:不等式 📊
在本节课中,我们将学习如何运用概率公理来证明一些重要的不等式。我们将从证明空集的概率为零开始,逐步推导出概率的通用界限、子集概率关系以及并集的概率界限。最后,我们将通过一个著名的“琳达问题”来探讨人类在概率判断中可能存在的误区。
空集的概率为零
上一节我们利用概率公理证明了一些等式,本节我们来看看如何证明不等式。首先,我们从证明空集的概率为零开始。
根据概率公理,样本空间Ω的概率为1。我们可以将Ω表示为空集∅与Ω本身的并集:Ω = ∅ ∪ Ω。由于∅与Ω互斥,根据可加性公理,有:
P(Ω) = P(∅) + P(Ω)
由于P(Ω) = 1,代入上式可得:
1 = P(∅) + 1
因此,P(∅) = 0。
这个结果很简单,它表明不可能事件的概率为零。
概率的通用界限
接下来,我们证明任何事件的概率都介于0和1之间。非负性公理已经告诉我们概率至少为0,所以我们只需证明概率至多为1。

对于任何事件A,其与补集A^c的并集是整个样本空间:A ∪ A^c = Ω。由于A和A^c互斥,根据可加性公理:
P(Ω) = P(A) + P(A^c)
即:
1 = P(A) + P(A^c)
由于P(A^c) ≥ 0(非负性公理),因此:
P(A) = 1 - P(A^c) ≤ 1
所以,对于任何事件A,有:
0 ≤ P(A) ≤ 1
这个结果被称为概率的通用界限。
子集的概率关系
现在,我们探讨子集与其超集的概率关系。如果事件A是事件B的子集(A ⊆ B),那么A的概率不会超过B的概率。
因为A是B的子集,所以B可以表示为A与差集B \ A的并集:B = A ∪ (B \ A),且A与B \ A互斥。根据可加性公理:
P(B) = P(A) + P(B \ A)
由于P(B \ A) ≥ 0,因此:
P(B) ≥ P(A)
即:
如果 A ⊆ B,则 P(A) ≤ P(B)
并集的概率界限
对于两个事件A和B的并集,其概率存在一个下界和一个上界。
以下是关于并集概率的两个重要不等式:
- 下界:并集的概率至少等于两个事件概率的最大值。
P(A ∪ B) ≥ max(P(A), P(B))
证明:因为A ⊆ (A ∪ B)且B ⊆ (A ∪ B),根据子集概率关系,有P(A) ≤ P(A ∪ B)和P(B) ≤ P(A ∪ B)。因此,两者的最大值也小于等于P(A ∪ B)。

- 上界(容斥原理与并界):并集的概率至多等于两个事件概率之和。
P(A ∪ B) ≤ P(A) + P(B)
证明:根据容斥原理,P(A ∪ B) = P(A) + P(B) - P(A ∩ B)。由于P(A ∩ B) ≥ 0,减去一个非负数会使结果变小,因此P(A ∪ B) ≤ P(A) + P(B)。
这个上界P(A ∪ B) ≤ P(A) + P(B)被称为并界,它在概率论中非常有用,常被用来证明许多有趣的结果。
案例分析:琳达问题与合取谬误
掌握了以上不等式后,我们来看一个著名的思想实验——“琳达问题”,它揭示了人类概率判断中的一个常见误区。

琳达的描述是:31岁,单身,坦率,聪明。大学主修哲学,学生时期深切关注歧视与社会正义问题,并参加过反核示威。
问题是:以下哪种情况可能性更高?
- 琳达是银行出纳。
- 琳达是银行出纳并且是活跃的女权主义者。

令事件B表示“琳达是银行出纳”,事件A表示“琳达是活跃的女权主义者”。那么选项2对应的事件是B ∩ A。
显然,(B ∩ A) ⊆ B。根据我们刚刚证明的子集概率关系,必然有:
P(B ∩ A) ≤ P(B)
也就是说,选项2的概率不可能高于选项1的概率。

然而,当特沃斯基和卡尼曼对88名学生进行测试时,85%的人认为选项2更可能。这种认为两个事件同时发生的概率高于其中单个事件概率的认知偏差,被称为合取谬误。
研究者还提出了其他例子,例如关于网球明星博格的问题,也出现了类似大比例的判断错误。特沃斯基和卡尼曼因在“不确定条件下的人类判断和决策”研究方面的贡献,于2002年获得了诺贝尔经济学奖。
当然,对“琳达问题”也存在批评,例如有人认为问题表述可能被误解为互斥选项(“仅是出纳” vs “出纳兼活动家”)。但无论如何,这个案例清晰地表明,人类对概率的直觉判断并不总是可靠的,而理解并运用严谨的概率规则则至关重要。
总结

本节课我们一起学习了概率论中的几个重要不等式:
- 证明了空集的概率
P(∅) = 0。 - 推导出概率的通用界限:任何事件的概率满足
0 ≤ P(A) ≤ 1。 - 证明了子集概率关系:如果
A ⊆ B,则P(A) ≤ P(B)。 - 推导了并集的概率界限:
max(P(A), P(B)) ≤ P(A ∪ B) ≤ P(A) + P(B),其中上界即并界。 - 通过“琳达问题”分析了合取谬误,认识到基于严谨数学规则进行概率推理的重要性。

下一节课,我们将讨论条件概率。
029:条件概率
在本节课中,我们将学习概率论中的一个重要概念——条件概率。我们常常会获得关于世界的部分信息,并希望利用这些信息来获得更准确的概率估计。条件概率能帮助我们理解,在已知某些事件发生的情况下,其他事件发生的概率如何变化。
条件概率的直观定义
上一节我们介绍了基础概率,本节中我们来看看条件概率。条件概率是指,在已知某个事件E发生的前提下,另一个事件F发生的概率。
我们将其定义为:在所有事件E发生的情况下,事件F也发生的比例。
例如,考虑一个公平的骰子。我们想知道,在已知掷出结果为偶数的条件下,掷出数字2的概率。我们会观察一长串掷骰结果,找出所有结果为偶数的掷次(如2,4,6等),然后计算在这些掷次中,结果为2的比例。如果偶数结果有6次,其中2出现了2次,那么这个条件概率就是2/6,即1/3。
骰子示例
以下是几个使用骰子的条件概率计算示例:
- 已知结果大于等于3,求结果为4的概率:此时,可能的结果是3,4,5,6。由于这些结果等可能,结果为4的比例是1/4。
- 已知结果小于等于3,求结果为4的概率:此时,可能的结果是1,2,3。在这些结果中,4永远不会出现,因此概率为0。
- 已知结果小于等于4,求结果小于等于2的概率:可能的结果是1,2,3,4。我们关心的是结果为1或2的情况,因此概率是2/4,即1/2。
- 已知结果大于等于2,求结果小于等于2的概率:可能的结果是2,3,4,5,6。我们只关心结果为2的情况,因此概率是1/5。
注意,在某些情况下,条件信息会改变事件的概率。例如,当被告知结果小于等于4时,“结果小于等于2”的概率从1/3增加到了1/2。而当被告知结果大于等于2时,该事件的概率则从1/3下降到了1/5。
一般情况下的公式推导
以上是针对等可能样本空间(如公平骰子)的例子。在更一般的情况下,样本点可能具有不同的概率。
设E和F为两个事件。在已知事件E发生的前提下,事件F发生的条件概率记作 P(F|E)。
其计算公式为:
P(F|E) = P(E ∩ F) / P(E)
这个公式可以理解为:事件E和F同时发生的概率,占事件E发生总概率的比例。
非均匀概率示例
考虑一个四面骰子,其各面概率分别为:P(1)=0.1, P(2)=0.2, P(3)=0.3, P(4)=0.4。
现在计算:在已知结果小于等于3的条件下,结果大于等于2的概率。
根据公式:
P(结果≥2 | 结果≤3) = P(结果在2和3之间) / P(结果≤3)
= P({2, 3}) / P({1, 2, 3})
= (0.2 + 0.3) / (0.1 + 0.2 + 0.3)
= 0.5 / 0.6
= 5/6
乘法法则
从条件概率公式可以推导出一个非常有用的工具——乘法法则。
由 P(F|E) = P(E ∩ F) / P(E), 可得:
P(E ∩ F) = P(E) * P(F|E)
这个法则可以帮助我们更简便地计算联合概率。
乘法法则应用:抽球问题
假设一个袋子里有1个蓝球和2个红球。我们不放回地连续抽取两个球。求两次都抽到红球的概率。
定义事件:
- R1:第一次抽到红球。
- R2:第二次抽到红球。
我们要求的是 P(R1 ∩ R2)。
使用乘法法则:
P(R1 ∩ R2) = P(R1) * P(R2|R1)
- P(R1) = 2/3 (因为初始有3个球,2个红球)
- 在R1发生的条件下(即已抽走一个红球),袋中剩下1个蓝球和1个红球。因此,P(R2|R1) = 1/2。
所以,P(两次都是红球) = (2/3) * (1/2) = 1/3。
乘法法则可以推广到更多事件。例如,对于三个事件E, F, G:
P(E ∩ F ∩ G) = P(E) * P(F|E) * P(G|E ∩ F)
总结


本节课中我们一起学习了条件概率。我们了解到,条件概率 P(F|E) 描述了在已知事件E发生的情况下,事件F发生的可能性,其核心公式为 P(F|E) = P(E ∩ F) / P(E)。由此推导出的乘法法则 P(E ∩ F) = P(E) * P(F|E) 是计算联合概率的强大工具。在下一节中,我们将探讨另一个关键概念:事件的独立性。
030:独立性 🔗



在本节课中,我们将要学习概率论中的一个核心概念:独立性。上一节我们介绍了条件概率,本节中我们来看看两个事件在何种情况下可以被认为是互不影响的,即相互独立。
独立性的直观理解与定义
直观地说,如果事件 E 的发生不会改变事件 F 发生的概率,我们就称事件 E 和 F 是独立的,记作 E ⟂ F。


更正式地,如果 P(F|E) = P(F),即已知 E 发生的情况下 F 发生的概率,等于 F 原本发生的概率,那么 E 和 F 就是独立的。
我们可以通过韦恩图来可视化理解:P(F) 是事件 F 的面积占整个样本空间 Ω 的比例。P(F|E) 是事件 E 和 F 的交集面积占事件 E 面积的比例。如果这两个比例相等,则意味着 E 的发生没有改变 F 发生的“相对大小”,即两者独立。

独立性的正式定义
上述基于条件概率的定义存在两个小问题:1)它不对称;2)当 P(E) = 0 时,P(F|E) 无定义。

为了解决这些问题,我们采用一个更通用且对称的正式定义:

事件 E 和 F 是独立的,当且仅当:
P(E ∩ F) = P(E) * P(F)
这个定义是等价的(当 P(E) ≠ 0 时,两边同除以 P(E) 即可得到条件概率形式),并且它天然对称,也适用于概率为零的事件。
实例分析:骰子实验
让我们通过一个掷骰子的例子来辨别事件的独立性。定义三个事件:
- A(质数):点数为 2, 3, 5。P(A) = 1/2
- B(奇数):点数为 1, 3, 5。P(B) = 1/2
- C(平方数):点数为 1, 4。P(C) = 1/3

以下是判断它们是否独立的过程:
1. 判断 A(质数)与 B(奇数)是否独立
- 交集 A ∩ B:{3, 5}。P(A ∩ B) = 2/6 = 1/3
- P(A) * P(B) = (1/2) * (1/2) = 1/4
- 因为 1/3 ≠ 1/4,所以事件 A 和 B 是依赖的。

2. 判断 A(质数)与 C(平方数)是否独立
- 交集 A ∩ C:∅(空集,因为2,3,5中没有平方数)。P(A ∩ C) = 0
- P(A) * P(C) = (1/2) * (1/3) = 1/6
- 因为 0 ≠ 1/6,所以事件 A 和 C 是依赖的。
3. 判断 B(奇数)与 C(平方数)是否独立
- 交集 B ∩ C:{1}。P(B ∩ C) = 1/6
- P(B) * P(C) = (1/2) * (1/3) = 1/6
- 因为 1/6 = 1/6,所以事件 B 和 C 是独立的。这意味着,知道点数是奇数,不会改变它是平方数的概率(仍是1/3);反之亦然。
实例分析:抛硬币实验

考虑抛三次硬币的样本空间。定义三个事件:
- H1:第一次抛掷结果为正面。P(H1) = 1/2
- H2:第二次抛掷结果为正面。P(H2) = 1/2
- D:恰好有两次连续正面(即 HHT 或 THH)。P(D) = 2/8 = 1/4
以下是判断过程:

1. 判断 H1 与 H2 是否独立
- 交集 H1 ∩ H2:第一次和第二次都是正面(HHH, HHT)。P(H1 ∩ H2) = 2/8 = 1/4
- P(H1) * P(H2) = (1/2) * (1/2) = 1/4
- 等式成立,因此 H1 和 H2 是独立的。
2. 判断 H2 与 D 是否独立
- 交集 H2 ∩ D:第二次是正面且恰好有两次连续正面(HHT, THH)。P(H2 ∩ D) = 2/8 = 1/4
- P(H2) * P(D) = (1/2) * (1/4) = 1/8
- 因为 1/4 ≠ 1/8,所以 H2 和 D 是依赖的。知道第二次是正面,会增加出现连续两次正面的可能性。

3. 判断 H1 与 D 是否独立
- 交集 H1 ∩ D:第一次是正面且恰好有两次连续正面(HHT)。P(H1 ∩ D) = 1/8
- P(H1) * P(D) = (1/2) * (1/4) = 1/8
- 等式成立,因此 H1 和 D 是独立的。

总结
本节课中我们一起学习了事件的独立性。
- 独立性描述了两个事件互不影响的关系。
- 其核心定义是:P(E ∩ F) = P(E) * P(F)。
- 判断独立性是一个纯粹的统计计算过程,通过比较交集的概率与各自概率的乘积即可得出结论。
- 独立性并不意味着事件之间没有逻辑关联,只意味着它们发生的概率在统计上互不影响。

下一节,我们将探讨概率论中另一个非常重要的定理:贝叶斯定理。
031:序列概率 🧮
在本节课中,我们将学习序列概率,重点介绍乘积法则及其在解决一系列连续事件概率问题中的应用。我们将从基础概念出发,通过几个经典例子来理解如何计算连续事件的概率。
概述

上一节我们介绍了条件概率。本节中,我们来看看如何利用条件概率的乘积法则来计算一系列事件依次发生的概率,即序列概率。我们将从两个事件的简单情况开始,逐步推广到多个事件,并通过实际例子来掌握其应用。
乘积法则
回忆条件概率的结果。事件F在事件E已发生条件下发生的概率,是E与F交集的概率除以E的概率。公式表示为:
P(F|E) = P(E ∩ F) / P(E)
我们可以重新排列这个公式,得到乘积法则:
P(E ∩ F) = P(E) * P(F|E)

这个公式的含义是:两个事件E和F同时发生的概率,等于事件E发生的概率乘以在E发生的条件下事件F发生的概率。
序列选择示例
让我们看一个序列选择的案例。假设你有一个蓝球和两个红球。我们不放回地抽取两个球。问题是:两个球都是红色的概率是多少?

定义事件:
R1:第一次抽到红球。R2:第二次抽到红球。
我们感兴趣的概率是 P(R1 且 R2)。根据乘积法则,这可以写为:
P(R1 且 R2) = P(R1) * P(R2 | R1)
以下是计算步骤:
- 计算
P(R1):总共有3个球,其中2个是红的。因此,P(R1) = 2/3。 - 计算
P(R2 | R1):假设第一次抽到了红球,那么袋子里剩下1个蓝球和1个红球。因此,P(R2 | R1) = 1/2。 - 计算最终概率:
P(两个都是红球) = (2/3) * (1/2) = 1/3。
我们利用乘积法则轻松地计算出了概率。
推广到多个事件
乘积法则可以推广到两个以上的事件。对于三个事件E、F、G,其同时发生的概率为:
P(E ∩ F ∩ G) = P(E) * P(F|E) * P(G|E ∩ F)

这个模式可以继续推广:一系列事件依次发生的概率,等于第一个事件发生的概率,乘以在第一个事件发生条件下第二个事件发生的概率,再乘以在前两个事件都发生条件下第三个事件发生的概率,依此类推。
让我们看一个例子。假设有 n-1 个红球和1个蓝球,总共 n 个球。我们不放回地抽取所有球。问题是:最后一个球是蓝球的概率是多少?
定义事件 R_i 为第 i 次抽到红球。那么,最后一个球是蓝球,等价于前 n-1 次抽到的都是红球。即求 P(R_1 且 R_2 且 ... 且 R_{n-1})。

根据推广的乘积法则:
P(R_1 且 ... 且 R_{n-1}) = P(R_1) * P(R_2|R_1) * P(R_3|R_1, R_2) * ... * P(R_{n-1}|R_1, ..., R_{n-2})
以下是计算过程:
P(R_1) = (n-1)/nP(R_2|R_1) = (n-2)/(n-1)P(R_3|R_1, R_2) = (n-3)/(n-2)- ...
- 最后一项
P(R_{n-1}|...) = 1/2
将这些项相乘,分子分母会出现连续的抵消,最终结果为 1/n。这个结果很直观:蓝球在 n 个位置中等可能出现,出现在最后一个位置的概率自然是 1/n。
生日悖论应用
乘积法则一个著名且有趣的应用是“生日悖论”问题。问题是:在一个聚会中,至少需要多少人,才能使其中至少有两人生日相同的概率超过50%?(假设一年有365天,生日分布均匀)。


我们不是直接计算至少两人生日相同的概率,而是计算其互补事件——所有人生日都不同的概率。
假设有 n 个人。计算所有人生日都不同的概率:
- 第一个人生日可以是任意一天。
- 第二个人生日与第一个人不同的概率是
364/365。 - 第三个人生日与前两个人都不同的概率(在前两个人生日不同的条件下)是
363/365。 - 依此类推,第
n个人生日与前n-1个人都不同的概率是(365 - n + 1)/365。
因此,所有人生日都不同的概率 P(无重复) 为:
P(无重复) = 1 * (364/365) * (363/365) * ... * ((365 - n + 1)/365)
我们可以利用近似公式 1 - x ≈ e^{-x}(当 x 较小时)来估算。令 P(无重复) ≈ e^{-n(n-1)/(2*365)}。
我们希望 P(至少一对重复) = 1 - P(无重复) > 0.5,即 P(无重复) < 0.5。
解近似方程 e^{-n^2/(2*365)} = 0.5,取自然对数得 -n^2/(2*365) = ln(0.5) ≈ -0.693。
解得 n ≈ √(2*365*0.693) ≈ 22.49。
因此,当人数达到 23 时,至少有两人生日相同的概率就超过了50%。这个数字远小于许多人的直觉估计(183左右),因此被称为“悖论”。通过精确计算也可以验证,n=23 时,P(至少一对重复) ≈ 50.7%。
总结

本节课中我们一起学习了序列概率的核心工具——乘积法则。我们了解到,计算一系列连续事件发生的概率,可以分解为计算每一步的条件概率并相乘。我们从简单的两个球的抽取问题开始,逐步推广到多个球的抽取,并最终应用这个法则解决了著名的生日悖论问题,展示了其在处理看似复杂概率计算时的强大能力。下一节,我们将探讨全概率公式。
032:贝叶斯定理 📊
在本节课中,我们将要学习贝叶斯定理。上一节我们介绍了全概率公式,本节中我们来看看如何利用已知的“正向”条件概率,来计算“反向”的条件概率。
不对称性与贝叶斯定理

事件之间常常存在不对称性。例如,如果你在谷歌上市时购买了其股票,那么你现在很可能非常富有。但反过来,如果你非常富有,你是因为买了谷歌股票才富有的概率却并不明确,因为你可能通过其他途径致富。这种从“正向”推断“反向”的困难,正是贝叶斯定理要解决的问题。
有时,计算 P(F|E) 很容易,但计算 P(E|F) 却很困难。贝叶斯定理提供了一种方法,在已知 P(F|E)、P(E) 和 P(F) 的情况下,计算出 P(E|F)。
贝叶斯定理的公式如下:
P(E|F) = [P(F|E) * P(E)] / P(F)
定理的证明与理解

我们可以从条件概率的定义出发来证明这个公式。
P(E|F) = P(E ∩ F) / P(F)
根据乘法法则,分子可以写作:
P(E ∩ F) = P(E) * P(F|E)
将第二个公式代入第一个,就得到了贝叶斯定理:
P(E|F) = [P(E) * P(F|E)] / P(F)

另一种理解方式是考虑事件的韦恩图。设事件E由区域α和β组成,事件F由区域β和γ组成。那么:
- P(F|E) = β / (α + β)
- P(E|F) = β / (β + γ)
要得到 P(E|F),我们可以从已知的 P(F|E) 出发,乘以 P(E)(即 α + β),再除以 P(F)(即 β + γ)。这正是贝叶斯定理所描述的操作。
应用示例
以下是几个应用贝叶斯定理的具体例子。
示例一:抛两枚硬币
假设我们抛两枚均匀硬币。令 H1 为“第一枚硬币正面朝上”,ExistH 为“至少有一枚硬币正面朝上”。

我们想求:已知至少有一枚硬币正面朝上,第一枚硬币也正面朝上的概率,即 P(H1 | ExistH)。
根据贝叶斯定理:
P(H1 | ExistH) = [P(ExistH | H1) * P(H1)] / P(ExistH)
- P(ExistH | H1) = 1 (如果第一枚是正面,则必然至少有一枚正面)
- P(H1) = 1/2
- P(ExistH) = 3/4 (所有可能结果:HH, HT, TH, TT 中,排除TT)
代入计算:
P(H1 | ExistH) = (1 * 1/2) / (3/4) = 2/3
示例二:掷两个骰子
掷两个均匀的六面骰子。令 D1 为第一个骰子的点数,S 为两个骰子的点数之和。
我们想求:已知点数之和为5,第一个骰子点数为2的概率,即 P(D1=2 | S=5)。
根据贝叶斯定理:
P(D1=2 | S=5) = [P(S=5 | D1=2) * P(D1=2)] / P(S=5)
- P(S=5 | D1=2) = 1/6 (第一个骰子是2时,第二个骰子必须是3,概率为1/6)
- P(D1=2) = 1/6
- P(S=5) = 4/36 = 1/9 (和为5的组合有:(1,4), (2,3), (3,2), (4,1))
代入计算:
P(D1=2 | S=5) = (1/6 * 1/6) / (1/9) = 1/4

示例三:有缺陷的iPhone
假设三家工厂(A, B, C)生产iPhone,市场份额和缺陷率如下:
- 工厂A:生产50%的iPhone,缺陷率4%
- 工厂B:生产30%的iPhone,缺陷率10%
- 工厂C:生产20%的iPhone,缺陷率5%
上一节我们利用全概率公式计算出,任意一部iPhone有缺陷的概率 P(D) = 6%。

现在问题是:如果你买到一部有缺陷的iPhone,它来自工厂B的概率是多少?即求 P(Factory_B | Defective)。
根据贝叶斯定理:
P(Factory_B | D) = [P(D | Factory_B) * P(Factory_B)] / P(D)
- P(D | Factory_B) = 10%
- P(Factory_B) = 30%
- P(D) = 6%
代入计算:
P(Factory_B | D) = (0.1 * 0.3) / 0.06 = 0.5
同理,可以计算出来自工厂A和C的条件概率:
- P(Factory_A | D) = (0.04 * 0.5) / 0.06 ≈ 0.333
- P(Factory_C | D) = (0.05 * 0.2) / 0.06 ≈ 0.167
观察可知,尽管工厂A产量最大(50%),但给定手机有缺陷时,它来自缺陷率更高的工厂B的概率(50%)反而最大。这说明了条件概率不仅取决于先验概率 P(Factory),也取决于似然度 P(D | Factory)。
总结


本节课中我们一起学习了贝叶斯定理。贝叶斯定理是一个强大的工具,它允许我们在已知“结果”发生的情况下,更新对“原因”可能性的判断。其核心公式 P(原因|结果) ∝ P(结果|原因) * P(原因) 在数据分析、机器学习(如朴素贝叶斯分类器)和许多科学推断领域都有广泛应用。通过硬币、骰子和iPhone工厂的例子,我们看到了如何将定理应用于解决实际问题。下一节,我们将开始讨论随机变量的概念。
033:双变量随机变量
在本节课中,我们将从单一随机变量的学习,过渡到研究两个随机变量。我们将学习如何描述两个随机变量的联合分布,并探讨其核心性质,包括边缘分布、条件分布以及独立性。
从单变量到双变量
上一节我们介绍了单一随机变量,本节中我们来看看两个随机变量。在实际实验中,我们常常会得到多个观测值。例如,研究某一天的天气时,我们可能同时关心温度和降水概率,这两个变量是相关的。又或者,预测下个月的经济状况时,我们可能同时关注失业率和通货膨胀率,这两个随机变量相互影响。在数据库表中,每一行可能对应一名员工,我们可能同时关注其工作年限和薪资,这两个变量因属于同一个人而存在关联。即使是学生,也可以同时考虑本季度选修的课程数量和预期GPA,这两个变量之间也存在某种关联。当然,最复杂的“人类实验”包含更多特征,如胆固醇水平、年龄、职业、幸福感等。不过,我们将从最简单的例子开始:两枚硬币。
独立伯努利随机变量
设 U 和 V 是两个独立的伯努利(1/2)随机变量,即两次独立的公平硬币抛掷。
描述其分布有几种方式:
- 直接写出:概率
P(U=u, V=v)对所有u, v ∈ {0, 1}均为 1/4。 - 列出表格:列出所有
(U, V)组合及其概率。 - 使用二维表:以
U的值为行,V的值为列,在每个单元格中填入对应的联合概率P(U=u, V=v)。对于本例,所有四个单元格的概率均为 0.25。
以下是二维表的表示方法:
| U\V | 0 | 1 |
|---|---|---|
| 0 | 0.25 | 0.25 |
| 1 | 0.25 | 0.25 |
由独立变量构造新变量
我们可以利用 U 和 V 构造其他双变量例子,以观察联合分布的特性。
例1:最小值与最大值
定义 X = min(U, V), Y = max(U, V)。
我们可以列出所有 (U, V) 组合对应的 (X, Y) 值:
(U,V)=(0,0)=>(X,Y)=(0,0),概率 1/4。(U,V)=(0,1)或(1,0)=>(X,Y)=(0,1),概率 1/2。(U,V)=(1,1)=>(X,Y)=(1,1),概率 1/4。
由此得到 (X, Y) 的联合分布表:
| X\Y | 0 | 1 |
|---|---|---|
| 0 | 0.25 | 0.50 |
| 1 | 0.00 | 0.25 |
注意,(X=1, Y=0) 的概率为0,因为最小值不可能大于最大值。
例2:乘积与和
定义 X = U * V, Y = U + V。
X可取 {0, 1}。Y可取 {0, 1, 2}。
计算联合概率:
P(X=0, Y=0) = P(U=0,V=0) = 1/4P(X=0, Y=1) = P({(0,1), (1,0)}) = 1/2P(X=1, Y=2) = P(U=1,V=1) = 1/4
其他组合概率为0。可以验证,所有概率之和为1。
例3:三枚硬币的和
假设 U1, U2, U3 是三个独立的伯努利(1/2)变量。定义 X = U1 + U2(前两次抛掷的正面数),Y = U2 + U3(后两次抛掷的正面数)。
X 和 Y 均可取 {0, 1, 2}。通过枚举所有8种 (U1,U2,U3) 组合,可以得到 (X,Y) 的联合分布。例如,P(X=1, Y=1) 对应 (U1,U2,U3) 为 (0,1,0) 或 (1,0,1) 的情况,因此概率为 2/8 = 1/4。
一般形式的联合分布
现在,我们抛开具体例子,看看双变量联合分布的一般形式。
对于随机变量 X 和 Y,其联合分布指定了每一对可能取值 (x, y) 的概率,记作:
P(X=x, Y=y) 或简写为 p(x, y)。
它必须满足两个条件:
- 非负性:对所有
x, y,有p(x, y) ≥ 0。 - 归一性:所有可能
(x, y)组合的概率之和为1。
∑_x ∑_y p(x, y) = 1
联合分布包含了关于 (X, Y) 的所有信息,我们可以用它计算任何感兴趣的事件的概率。例如,给定一个联合分布表,要计算 P(X ≤ Y),只需将所有满足 x ≤ y 的单元格 (x, y) 的概率相加即可。
联合分布的核心性质
联合分布中有几个性质尤为重要,我们将逐一探讨。
1. 边缘分布
边缘分布描述的是单个随机变量自身的概率分布,忽略另一个变量的信息。
X的边缘分布:p_X(x) = P(X=x) = ∑_y p(x, y)Y的边缘分布:p_Y(y) = P(Y=y) = ∑_x p(x, y)
计算示例:
考虑以下联合分布表:
| X\Y | y=0 | y=1 | 边缘 P(X) |
|---|---|---|---|
| x=0 | 0.1 | 0.2 | 0.3 |
| x=1 | 0.3 | 0.4 | 0.7 |
| 边缘 P(Y) | 0.4 | 0.6 | 1.0 |
P(X=0) = p(0,0) + p(0,1) = 0.1 + 0.2 = 0.3P(Y=1) = p(0,1) + p(1,1) = 0.2 + 0.4 = 0.6
边缘概率由对应行或列的概率相加得到,且各自之和为1。
2. 条件分布
条件分布描述在已知一个随机变量取某个值的条件下,另一个随机变量的分布。
- 给定
Y=y时X的条件分布:
P(X=x | Y=y) = p(x|y) = p(x, y) / p_Y(y),要求p_Y(y) > 0。 - 给定
X=x时Y的条件分布:
P(Y=y | X=x) = p(y|x) = p(x, y) / p_X(x),要求p_X(x) > 0。
计算示例(沿用上表):
P(Y=0 | X=0) = p(0,0) / P(X=0) = 0.1 / 0.3 ≈ 0.333P(X=1 | Y=0) = p(1,0) / P(Y=0) = 0.3 / 0.4 = 0.75
3. 独立性
两个随机变量 X 和 Y 被称为独立的,如果知道其中一个变量的值,不会改变我们对另一个变量分布的认知。
以下是等价的定义:
- 对所有
x, y,有P(Y=y | X=x) = P(Y=y)。 - 对所有
x, y,有P(X=x | Y=y) = P(X=x)。 - 对所有
x, y,有P(X=x, Y=y) = P(X=x) * P(Y=y)。这是最常用的判定公式。
判断示例:
- 独立案例:观察以下分布表,每个单元格的概率恰好等于其对应行边缘概率与列边缘概率的乘积(例如 0.12 = 0.6 * 0.2)。因此
X和Y独立。
| X\Y | y=0 | y=1 | 边缘 P(X) |
|---|---|---|---|
| x=0 | 0.12 | 0.48 | 0.6 |
| x=1 | 0.08 | 0.32 | 0.4 |
| 边缘 P(Y) | 0.2 | 0.8 | 1.0 |
- 不独立案例:本节第一个示例表(概率为0.1, 0.2, 0.3, 0.4)不满足乘积关系。例如,
P(X=0)*P(Y=0)=0.3*0.4=0.12,但p(0,0)=0.1,两者不相等,故X和Y不独立。
一个快速的视觉判断方法是:如果联合分布表中,每一行的概率值比例都相同(即行与行成比例),并且每一列的概率值比例也都相同,那么这两个变量是独立的。否则,它们不独立。例如,若定义 Y = X 或 Y = 1 - X,其联合分布表的行或列明显不成比例,因此 X 和 Y 不独立。
总结


本节课中,我们一起学习了双变量随机变量的基础知识。我们首先了解了从单变量扩展到多变量的必要性,并通过硬币抛掷的例子引入了联合分布的概念。我们学习了如何用表格表示联合分布,以及如何从联合分布中计算边缘分布和条件分布。最后,我们探讨了随机变量独立性的核心概念及其判定方法(p(x,y) = p_X(x) * p_Y(y))。联合分布是理解多个随机变量共同行为的基石。在接下来的课程中,我们将基于联合分布,开始研究双随机变量函数的期望。
034:期望的线性性质 📈



在本节课中,我们将要学习期望值的一个核心性质——线性性质。我们将探讨两个随机变量之和的期望值如何计算,并初步了解方差是否也具有类似的可加性。
期望的线性性质
上一节我们介绍了期望值的定义,本节中我们来看看期望值的一个重要运算性质。
对于两个随机变量 X 和 Y,它们之和的期望值 E[X+Y] 可以通过以下公式计算:
E[X+Y] = Σ_x Σ_y (x + y) * P(X=x, Y=y)
我们可以对这个求和式进行分解和重组。


以下是推导步骤:
- 将求和式拆分为两部分:
Σ_x Σ_y x * P(x,y) + Σ_x Σ_y y * P(x,y)。 - 在第一部分中,x 与对 y 的求和无关,因此可以提到对 y 的求和符号之外,得到
Σ_x x * Σ_y P(x,y)。 - 根据全概率公式,
Σ_y P(x,y)等于 X 的边缘概率 P(X=x)。因此第一部分简化为Σ_x x * P(X=x),这正是 E[X]。 - 同理,第二部分可以简化为
Σ_y y * P(Y=y),即 E[Y]。
由此我们得出结论:
E[X+Y] = E[X] + E[Y]
这意味着,和的期望等于期望的和。这一性质在概率计算中有着广泛的应用。
方差的可加性探讨
既然期望具有可加性,那么一个很自然的问题是:方差是否也具有同样的性质?即,Var(X+Y) 是否等于 Var(X) + Var(Y)?
为了探究这个问题,我们从方差的定义出发。随机变量 Z 的方差定义为:
Var(Z) = E[Z²] - (E[Z])²
令 Z = X + Y,我们将其代入公式。
以下是推导过程:
Var(X+Y) = E[(X+Y)²] - (E[X+Y])²- 展开
(X+Y)²并利用期望的线性性质:E[(X+Y)²] = E[X² + 2XY + Y²] = E[X²] + 2E[XY] + E[Y²](E[X+Y])² = (E[X] + E[Y])² = (E[X])² + 2E[X]E[Y] + (E[Y])²
- 将上述结果代入方差公式并重新分组:
Var(X+Y) = [E[X²] - (E[X])²] + [E[Y²] - (E[Y])²] + 2[E[XY] - E[X]E[Y]] - 根据方差定义,前两项分别是 Var(X) 和 Var(Y)。
因此,我们得到最终关系式:
Var(X+Y) = Var(X) + Var(Y) + 2[E[XY] - E[X]E[Y]]
由此可见,方差 Var(X+Y) 是否等于 Var(X) + Var(Y),完全取决于式子 E[XY] - E[X]E[Y] 是否为零。也就是说,关键在于 E[XY] 是否等于 E[X]E[Y]。这个关于乘积期望的问题,比方差的可加性更为基础,我们将在下一个视频中专门讨论。

本节课中我们一起学习了期望的线性性质,证明了 E[X+Y] = E[X] + E[Y]。同时,我们也推导出方差不总是可加的,其可加性成立的条件是 E[XY] = E[X]E[Y]。理解这个条件是学习随机变量独立性的关键,我们下节课再见。
035:协方差 📊

在本节课中,我们将要学习协方差的概念。协方差是衡量两个随机变量如何共同变化的重要工具。我们将从探讨期望的乘法性质开始,逐步引入协方差的定义、性质及其标准化形式——相关系数。
上一节我们探讨了随机变量期望的性质,本节中我们来看看两个随机变量乘积的期望是否等于它们各自期望的乘积。
期望的乘法性质
我们想知道,对于两个随机变量X和Y,是否有 E[XY] = E[X]E[Y] 成立。
让我们看一个简单的反例。假设X和Y是两个完全相同的随机变量,它们以1/2的概率取-1,以1/2的概率取1。它们的联合分布如下:

- 当X=-1时,Y=-1的概率为1/2。
- 当X=1时,Y=1的概率为1/2。
- 当X和Y取值不同时,概率为0。

X和Y的边缘分布都是均匀的:P(X=-1)=1/2, P(X=1)=1/2。因此,E[X] = 0。同理,E[Y] = 0。所以,E[X]E[Y] = 0。
现在计算左边:E[XY]。由于Y恒等于X,所以 E[XY] = E[X²]。而X²总是等于1,因此 E[X²] = 1。
由此我们得到 E[XY] = 1 ≠ 0 = E[X]E[Y]。这说明期望并不总是满足乘法性质。
期望乘积的任意性

既然期望不总是相乘,那么它们之间是否存在其他确定的关系?答案是否定的。实际上,两个随机变量乘积的期望可以是任意值。
具体来说,对于任意给定的三个数α, β, γ,我们都可以构造出两个随机变量X和Y,使得:
- E[X] = α
- E[Y] = β
- E[XY] = γ
这个构造过程表明,仅凭各自的期望值,无法约束它们乘积的期望值。因此,我们需要一个新的度量来描述两个变量之间的联动关系。
协方差的引入

为了研究 E[XY],我们首先考虑将变量“中心化”,即减去各自的均值。这引出了协方差的定义。
两个随机变量X和Y的协方差定义为:
Cov(X, Y) = E[(X - μₓ)(Y - μᵧ)]
其中,μₓ = E[X], μᵧ = E[Y]。协方差也常记作 σₓᵧ。

协方差的计算公式可以展开为:
Cov(X, Y) = E[XY] - E[X]E[Y]
这个公式清晰地展示了协方差与乘积期望之间的关系。当X和Y的均值都为0时,协方差就等于 E[XY]。协方差衡量的是X和Y如何围绕各自的均值共同变化。如果当X大于其均值时,Y也倾向于大于其均值,则协方差为正;反之则为负。
相关系数:标准化的协方差
协方差的大小受变量自身尺度的影响。为了进行无尺度的比较,我们引入相关系数。

随机变量X和Y的相关系数ρₓᵧ定义为:
ρₓᵧ = Cov(X, Y) / (σₓ σᵧ)
其中,σₓ和σᵧ分别是X和Y的标准差。
以下是相关系数的一些重要性质:
- 自相关性:变量与自身的相关系数为1。ρₓₓ = 1。
- 完全负相关:变量与其负值的相关系数为-1。ρₓ,₋ₓ = -1。
- 对称性:相关系数是对称的。ρₓᵧ = ρᵧₓ。
- 尺度不变性:对变量进行线性变换(aX + b 和 cY + d),相关系数的绝对值不变,符号由a和c的符号乘积决定。ρ_{aX+b, cY+d} = sign(a·c) · ρₓᵧ。
相关系数的意义在于:如果X增加一个标准差,那么Y平均会增加 ρₓᵧ 个标准差。

相关系数的边界:柯西-施瓦茨不等式

相关系数并非可以取任意值,它的绝对值被限制在1以内。这个结论来源于柯西-施瓦茨不等式。
柯西-施瓦茨不等式指出,对于任意随机变量X和Y,有:
|E[XY]| ≤ √(E[X²] E[Y²])
将这个不等式应用于中心化后的变量 (X - μₓ) 和 (Y - μᵧ),我们得到:
|Cov(X, Y)| ≤ σₓ σᵧ
两边同时除以 σₓ σᵧ,就得到了相关系数的边界:
|ρₓᵧ| ≤ 1
这个性质非常重要,它保证了相关系数是一个介于-1和1之间的标准化度量。
总结
本节课中我们一起学习了协方差与相关系数。

- 我们首先发现随机变量乘积的期望并不等于期望的乘积,且其值可以是任意的。
- 为了量化两个变量之间的线性关联,我们引入了协方差 Cov(X, Y) = E[(X - μₓ)(Y - μᵧ)]。
- 为了消除尺度影响并进行标准化比较,我们定义了相关系数 ρₓᵧ = Cov(X, Y) / (σₓ σᵧ)。
- 相关系数具有对称性、尺度不变性等性质,并且其绝对值永远不超过1(|ρ| ≤ 1),这由柯西-施瓦茨不等式保证。

理解协方差和相关系数是分析数据中变量关系的基础。在下一节中,我们将通过具体例子来加深对这些概念的理解。
概率与统计:P36:分布族
在本节课中,我们将学习随机变量的一个重要概念——分布族。现实世界中遇到的随机变量通常属于某些特定的分布家族。我们将重点介绍其中理论意义重大且应用广泛的几个核心分布。
上一节我们介绍了随机变量,本节中我们来看看这些变量常见的分布类型。虽然存在许多分布族,但我们将聚焦于最自然、最重要的几个。
我们将要讨论的分布分为两类:离散分布和连续分布。
以下是离散分布部分我们将涵盖的内容:
- 伯努利分布
- 二项分布
- 泊松分布
- 几何分布
随后,我们将转向连续分布,并讨论以下类型:
- 均匀分布
- 指数分布
- 正态分布
对于以上每一种分布,我们的讲解将遵循一个清晰的框架。首先,我们会阐述其动机和应用场景。接着,给出该分布或分布族的数学公式定义。然后,通过可视化图表展示其形态,并辅以具体示例。最后,描述其关键性质,通常包括均值、方差和标准差,某些分布还会讨论其他特性。
此外,配套的Notebook中提供了Python代码实现,方便我们进一步绘制分布图、进行实验和探索。
现在,当我们想证明某个函数是一个概率分布时,需要确认两件事:函数值非负,以及所有可能取值的概率之和为1。证明非负性通常比较直观,而证明概率和为1则需要更多推导。
为了让这个过程不那么枯燥,我们借鉴一家名为Blendtec公司的创意。该公司生产一种相当标准的产品——搅拌机。为了吸引更多关注,他们发起了一场营销活动,由创始人汤姆·迪克森出镜,名为“它能被搅碎吗?”。在这系列广告中,汤姆·迪克森尝试搅拌各种物品,比如耐克鞋、花园耙子、iPhone甚至Justin Bieber的玩偶,而结果通常是肯定的——它们都能被搅碎。
我们将稍微模仿这个创意。当我们想验证某个概率分布的概率和是否为1时,我们会问:“它能归一吗?”,并检验这些概率值相加是否等于1。


接下来,我们将从第一个分布开始,即伯努利分布。
037:泊松分布 📊
在本节课中,我们将要学习泊松分布。泊松分布是二项分布的一种重要扩展,它适用于描述在大量试验中,但每次试验成功概率极低的事件发生次数。我们将定义泊松分布,探讨其应用场景,推导其来源,并计算其均值和标准差。
泊松分布的定义 📝

上一节我们介绍了二项分布,本节中我们来看看它的一个重要扩展——泊松分布。
泊松分布由一个参数 λ 定义,其中 λ ≥ 0(通常 λ > 0)。其取值范围是所有自然数(即从0开始的整数)。其概率质量函数由以下公式给出:
公式:P(X = k) = (e^{-λ} * λ^{k}) / k!


其中,k 是可能取到的值(0, 1, 2, ...)。下图展示了不同 λ 值下的泊松分布形态。

泊松分布的应用场景 🌍
泊松分布之所以重要,是因为它可以近似二项分布。当试验次数 n 很大,但每次试验的成功概率 p 很小,使得乘积 λ = n * p 保持在一个中等水平时,泊松分布就是二项分布的良好近似。

以下是泊松分布常见的一些应用场景:
- 广告点击量:大量用户浏览网站,但每个用户点击特定广告的概率很低。
- 垃圾邮件回复数:垃圾邮件发送给大量用户,但回复的用户极少。
- 罕见疾病感染数:全球人口众多,但每个人感染某种特定疾病的概率极低。
- 商店顾客数:城市人口众多,但在特定一天访问某家特定商店的人数很少。
- 航班误机人数:航班上乘客众多,但每位乘客误机的概率很低。
- 页面印刷错误数:一页文字中,出现某个特定印刷错误的概率很低。
泊松分布的推导 🔬
泊松分布可以从二项分布推导出来。让我们回顾一下二项分布的概率公式:
公式:P(成功 k 次) = C(n, k) * p^{k} * (1-p)^{n-k}
现在,我们设 λ = n * p,即 p = λ / n。将这个关系代入二项分布公式,并考虑当 n 趋近于无穷大(p 相应趋近于0),而 λ 保持固定时,经过一系列极限运算(具体步骤见课程推导),我们可以得到:
公式:lim_{n→∞} [C(n, k) * (λ/n)^{k} * (1 - λ/n)^{n-k}] = (e^{-λ} * λ^{k}) / k!
这正是泊松分布的概率质量函数。因此,泊松分布是二项分布在 n 很大、p 很小时的极限形式。

验证其为概率分布 ✅
一个有效的概率分布必须满足两个条件:所有概率非负,且所有概率之和为1。
- 非负性:由于 e^{-λ} > 0,λ^{k} ≥ 0,k! > 0,因此 P(X = k) ≥ 0。
- 归一性(和为1):我们需要证明所有可能取值的概率之和为1。
根据指数函数 e^{x} 的泰勒级数展开:
公式:e^{λ} = Σ_{k=0}^{∞} (λ^{k} / k!)
现在计算泊松分布的概率和:
公式:Σ_{k=0}^{∞} P(X = k) = Σ_{k=0}^{∞} (e^{-λ} * λ^{k} / k!) = e^{-λ} * Σ_{k=0}^{∞} (λ^{k} / k!) = e^{-λ} * e^{λ} = 1
因此,泊松分布确实是一个有效的概率分布。
泊松分布的均值与方差 📈
由于泊松分布近似于参数为 (n, p) 的二项分布,且 λ = n * p,我们预期泊松分布的均值应为 λ。二项分布的方差为 n * p * (1-p) = λ * (1-p)。当 p 非常小时,(1-p) 接近1,因此方差也接近 λ。
通过计算(课程中使用了“阶乘矩”的技巧),我们可以精确得到:
- 均值(期望值):E[X] = λ
- 方差:Var(X) = λ
- 标准差:σ = √λ
这意味着对于泊松分布,其均值和方差是相等的。这个性质非常独特。标准差 √λ 相对于均值 λ 来说较小,例如当 λ=1000 时,标准差约为31.6,这表明分布相对集中在均值附近。
泊松分布近似示例 🧮
让我们通过一个例子看看泊松分布如何近似二项分布。
问题:一个工厂生产200件产品,每件产品有1%的概率是次品。请问恰好有3件次品的概率是多少?
精确计算(二项分布):
参数:n = 200, p = 0.01
P(X=3) = C(200, 3) * (0.01)^{3} * (0.99)^{197} ≈ 0.181
泊松近似:
参数:λ = n * p = 200 * 0.01 = 2
P(X=3) ≈ (e^{-2} * 2^{3}) / 3! ≈ 0.180
可以看到,泊松近似的结果 (0.180) 与精确结果 (0.181) 非常接近。


总结 📋
本节课中我们一起学习了泊松分布。

- 定义:泊松分布描述在固定时间或空间内,稀有事件发生的次数。其概率公式为 P(X = k) = (e^{-λ} * λ^{k}) / k!,其中 λ > 0,k = 0, 1, 2, ...
- 来源:它是二项分布在试验次数 n 很大、单次成功概率 p 很小,且 λ = n * p 保持恒定时的极限形式。
- 应用:广泛应用于描述低概率事件的发生次数,如网站点击、罕见病例、系统故障等。
- 数字特征:泊松分布的均值 E[X] = λ,方差 Var(X) = λ,标准差 σ = √λ。其均值和方差相等是一个重要特征。
- 近似性:在满足条件(n大,p小)时,泊松分布可以非常精确地近似二项分布,简化计算。
泊松分布为我们处理大量试验中的稀有事件提供了一个强大而简洁的模型。

038:连续分布 📊
在本节课中,我们将学习连续分布。我们将了解什么是连续随机变量,如何通过概率密度函数描述它们,以及如何计算其累积分布函数、期望和方差。我们还会比较连续分布与之前学过的离散分布之间的异同。
从离散到连续 🔄
上一节我们介绍了离散分布,它处理的是可数个取值(如有限个或可数无限个)。本节中,我们来看看连续分布。连续分布处理的是不可数个取值,通常是像区间这样的连续量。
我们研究连续分布,是因为现实生活中的许多事物本质上是连续的。例如:
- 时间:航班的时长、快递的配送时间。
- 空间度量:人的身高、风暴的面积。
- 质量:宠物的体重、公司生产的饼干重量。
- 温度:气温、体温。
此外,还有一些量虽然不是严格连续,但取值非常多,我们也可以将其视为连续变量来处理,例如:
- 价格:股票、房屋、大宗商品的价格。
- 比率:利率、汇率、失业率。
概率密度函数 📈
对于连续分布,我们使用概率密度函数 来代替离散分布中的概率质量函数。
概率密度函数是一个非负函数 f(x),它表示观测到值 x 或其附近值的相对可能性。其图像是一条曲线,f(x) 总是非负的。
PDF必须满足一个关键条件:曲线下的总面积等于1。用数学公式表示为:
∫_{-∞}^{∞} f(x) dx = 1
以下是连续分布与离散分布在核心概念上的对比:
| 特性 | 离散分布 (PMF) | 连续分布 (PDF) |
|---|---|---|
| 函数表示 | 概率质量函数 P(x) |
概率密度函数 f(x) |
| 非负性 | P(x) ≥ 0 |
f(x) ≥ 0 |
| 归一化 | ∑ P(x) = 1 |
∫ f(x) dx = 1 |
| 事件概率 | P(A) = ∑_{x∈A} P(x) |
P(A) = ∫_{x∈A} f(x) dx |
| 区间概率 | P(a≤X≤b) = ∑_{x=a}^{b} P(x) |
P(a≤X≤b) = ∫_{a}^{b} f(x) dx |
对于连续分布,我们通常关心区间概率,即随机变量 X 落在某个区间 [a, b] 内的概率。这等于概率密度函数在该区间曲线下的面积。
累积分布函数 📊
累积分布函数 的定义对于离散和连续分布是统一的:F(x) = P(X ≤ x)。
然而,计算方式不同:
- 离散分布:
F(x) = ∑_{u ≤ x} P(u) - 连续分布:
F(x) = ∫_{-∞}^{x} f(u) du

CDF 和 PDF 之间存在重要的微积分关系:
- 从 CDF 得到 PDF:
f(x) = d/dx F(x)。PDF 是 CDF 的导数。 - 从 PDF 得到 CDF:
F(x) = ∫_{-∞}^{x} f(u) du。CDF 是 PDF 的积分。
连续分布示例 🧪
现在,让我们通过几个具体的例子来理解这些概念。
示例1:均匀分布
均匀分布是最简单的连续分布之一。其概率密度函数在区间 [0,1] 内为常数,在其他地方为零。
f(x) = 1, for 0 ≤ x ≤ 1
f(x) = 0, otherwise
验证:∫_{0}^{1} 1 dx = 1,满足 PDF 条件。
CDF 计算:
- 当
x < 0时,F(x) = 0 - 当
0 ≤ x ≤ 1时,F(x) = ∫_{0}^{x} 1 du = x - 当
x > 1时,F(x) = 1
验证导数关系:在 (0,1) 区间内,d/dx (x) = 1,正好等于 f(x)。
示例2:三角分布
三角分布在区间 [0,1] 上呈线性增长。
f(x) = 2x, for 0 ≤ x ≤ 1
f(x) = 0, otherwise
验证:∫_{0}^{1} 2x dx = [x^2]_{0}^{1} = 1,满足条件。
CDF 计算:
- 当
x < 0时,F(x) = 0 - 当
0 ≤ x ≤ 1时,F(x) = ∫_{0}^{x} 2u du = [u^2]_{0}^{x} = x^2 - 当
x > 1时,F(x) = 1
验证导数关系:在 (0,1) 区间内,d/dx (x^2) = 2x,正好等于 f(x)。
示例3:幂律分布(帕累托型)
这个分布的支撑集是 [1, ∞),其概率密度函数随着 x 增大而衰减。
f(x) = 1 / x^2, for x ≥ 1
f(x) = 0, for x < 1
验证:∫_{1}^{∞} (1 / u^2) du = [-1/u]_{1}^{∞} = 0 - (-1) = 1,满足条件。
CDF 计算:
- 当
x < 1时,F(x) = 0 - 当
x ≥ 1时,F(x) = ∫_{1}^{x} (1 / u^2) du = [-1/u]_{1}^{x} = 1 - 1/x
验证导数关系:对于 x ≥ 1,d/dx (1 - 1/x) = 1/x^2,正好等于 f(x)。

连续分布的重要特性 ⚠️
理解了基本定义和例子后,我们需要特别注意连续分布与离散分布的一些关键区别。
以下是连续分布的几个重要特性:
- 概率密度值可以大于1:
f(x)是“密度”而非概率。只要曲线下总面积为1,f(x)在某个点上的值可以大于1。而离散分布中,单个点的概率P(x)永远不会超过1。 - 单点概率为零:对于任何具体的值
a,P(X = a) = 0。这是因为概率是面积,而一个点的宽度为零,故面积为零。因此,在计算区间概率时,是否包含端点没有影响:
P(a ≤ X ≤ b) = P(a < X < b) = F(b) - F(a) - CDF 的连续性:由于单点概率为零,连续分布的 CDF 是连续函数。这意味着:
P(X ≤ a) = P(X < a) = F(a)
P(X ≥ a) = P(X > a) = 1 - F(a)
期望与方差 🧮
与离散分布类似,我们也可以计算连续随机变量的期望和方差。
期望(均值) 定义为:
E[X] = μ = ∫_{-∞}^{∞} x * f(x) dx
它代表了随机变量长期的平均值。如果 PDF 关于点 α 对称(即 f(α+x) = f(α-x)),那么期望值 μ = α。
方差 衡量了随机变量取值与其均值的偏离程度,定义为:
Var(X) = E[(X - μ)^2] = ∫_{-∞}^{∞} (x - μ)^2 * f(x) dx
与离散分布一样,方差还有一个更常用的计算公式:
Var(X) = E[X^2] - (E[X])^2
其中 E[X^2] = ∫_{-∞}^{∞} x^2 * f(x) dx。
标准差 是方差的平方根:σ = √Var(X)。
示例计算
让我们计算之前三个例子的期望和方差。
均匀分布:
E[X] = ∫_{0}^{1} x * 1 dx = [x^2/2]_{0}^{1} = 1/2E[X^2] = ∫_{0}^{1} x^2 * 1 dx = [x^3/3]_{0}^{1} = 1/3Var(X) = E[X^2] - (E[X])^2 = 1/3 - (1/2)^2 = 1/3 - 1/4 = 1/12σ = √(1/12) = 1/(2√3)
三角分布:
E[X] = ∫_{0}^{1} x * 2x dx = ∫_{0}^{1} 2x^2 dx = [2x^3/3]_{0}^{1} = 2/3E[X^2] = ∫_{0}^{1} x^2 * 2x dx = ∫_{0}^{1} 2x^3 dx = [2x^4/4]_{0}^{1} = 1/2Var(X) = 1/2 - (2/3)^2 = 1/2 - 4/9 = 1/18σ = √(1/18) = 1/(3√2)
幂律分布:
E[X] = ∫_{1}^{∞} x * (1/x^2) dx = ∫_{1}^{∞} (1/x) dx = [ln x]_{1}^{∞} = ∞
这个分布的期望是无穷大,这意味着它具有非常长的“厚尾”,平均值的概念在此失效。我们之后会看到具有有限期望的幂律分布。
总结 📝
本节课中,我们一起学习了连续分布的核心内容。我们首先了解了连续随机变量的概念及其应用场景。然后,我们引入了概率密度函数 和累积分布函数,并通过均匀分布、三角分布和幂律分布的例子加深了理解。
我们重点比较了连续分布与离散分布的区别:
- 使用 PDF 而非 PMF。
- 概率通过积分而非求和计算。
- 单点概率恒为零,这是连续分布最显著的特征之一。
- CDF 与 PDF 通过微积分(积分与导数)相互关联。
最后,我们学习了如何计算连续随机变量的期望和方差,并完成了相关示例的计算。


掌握连续分布是理解许多现实世界数据和高级统计模型的基础。在接下来的课程中,我们将探讨连续随机变量的函数变换。
039:均匀分布 📊
在本节课中,我们将开始学习连续分布。我们将首先讨论均匀分布,这是一种在指定区间内概率密度恒定的分布。

均匀分布的定义
均匀分布记作 U(a, b),其中 a < b。它表示在区间 [a, b] 上的均匀分布。如果随机变量 X 落在这个区间内,那么它在区间内任意一点出现的概率是相同的。对于区间外的值,其概率为零。
概率密度函数

均匀分布的概率密度函数(PDF)在区间 [a, b] 内是一个常数 C,在区间外则为零。其图像如下所示:

为了使其成为一个有效的概率分布,概率密度函数在整个实数域上的积分必须等于1。由于密度函数在区间外为零,我们只需计算区间 [a, b] 上的积分。


这个积分等于常数 C 乘以区间长度 (b - a),即:
面积 = C * (b - a)
为了使总面积等于1,我们令:
C * (b - a) = 1
由此解出常数 C:
C = 1 / (b - a)
因此,均匀分布的概率密度函数为:
f(x) = 1 / (b - a),当 a ≤ x ≤ b
f(x) = 0,其他情况
通过代码理解分布
我们可以通过Python代码直观地观察均匀分布。以下代码展示了如何绘制不同参数下的均匀分布概率密度函数图。

运行代码后,我们可以看到:
- 当区间为 [4, 6] 时,区间长度为2,因此概率密度函数的高度为
1/2 = 0.5。 - 如果将区间改为 [4, 8],区间长度变为4,高度则变为
1/4 = 0.25。宽度与高度的乘积始终为1。 - 当区间变得非常窄,例如 [2, 2.1] 时,宽度为0.1,高度则变为10。此时需要调整绘图坐标轴以完整显示图像。

验证其为有效分布
一个有效的概率密度函数需要满足两个条件:
- 非负性:
f(x) ≥ 0。对于均匀分布,在区间内为正常数1/(b-a),在区间外为零,显然满足。 - 归一性:积分等于1。我们通过选择常数
C = 1/(b-a)已经确保了这一点。
均匀分布的应用场景
均匀分布虽然简单,但在一些场景中确实会出现:
- 等待时间:假设公交车每隔固定时间发车,你随机到达车站,那么你需要等待的时间(分钟数)可能服从一个区间上的均匀分布。
- 缺陷位置:电路芯片上缺陷出现的位置可能被视为在芯片面积上均匀分布。
- 分子位置:空间中的分子位置在某些简化模型下可视为均匀分布。
累积分布函数
累积分布函数(CDF)F(x) 定义为概率密度函数从负无穷到 x 的积分。对于均匀分布 U(a, b),我们需要分段讨论:
- 当 x ≤ a 时:
F(x) = ∫_{-∞}^{x} 0 du = 0 - 当 a < x ≤ b 时:
F(x) = F(a) + ∫_{a}^{x} (1/(b-a)) du = 0 + (x - a) / (b - a) - 当 x > b 时:
F(x) = F(b) + ∫_{b}^{x} 0 du = 1 + 0 = 1
因此,均匀分布的CDF图像是一条从点 (a, 0) 到点 (b, 1) 的直线,之后保持为1。

同样,我们可以用代码交互式地查看CDF的变化。
计算区间概率
利用累积分布函数,我们可以轻松计算随机变量落在某个区间的概率。对于连续分布,区间端点是否包含不影响概率值。
- 对于区间 [α, β] (其中 a ≤ α < β ≤ b):
P(α ≤ X ≤ β) = F(β) - F(α) = (β - α) / (b - a)
这直观上就是区间长度占总长度的比例。 - 对于区间 [β, ∞):
P(X ≥ β) = 1 - F(β) = (b - β) / (b - a) - 对于单点 α:
P(X = α) = 0(连续分布中单点概率为零)
均值与方差
首先,我们计算标准均匀分布 U(0, 1) 的均值和方差。
- 期望值 (均值):
E[X] = ∫_{0}^{1} x * 1 dx = [x^2/2]_{0}^{1} = 1/2 - X²的期望值:
E[X²] = ∫_{0}^{1} x² * 1 dx = [x³/3]_{0}^{1} = 1/3 - 方差:
Var(X) = E[X²] - (E[X])² = 1/3 - (1/2)² = 1/12 - 标准差:
Std(X) = √(Var(X)) = 1 / (2√3) ≈ 0.289
接下来,推导一般均匀分布 Y ~ U(a, b) 的均值和方差。我们可以通过线性变换将 Y 与标准均匀分布 X ~ U(0,1) 联系起来:
Y = (b - a) * X + a
- 期望值:
E[Y] = E[(b-a)X + a] = (b-a)E[X] + a = (b-a)/2 + a = (a + b) / 2
均值正好是区间中点。 - 方差:
Var(Y) = Var((b-a)X + a) = (b-a)² * Var(X) = (b-a)² / 12 - 标准差:
Std(Y) = (b - a) / (2√3) ≈ 0.289 * (b - a)
总结 📝
本节课我们一起学习了均匀分布:
- 均匀分布记作 U(a, b),在区间 [a, b] 内概率密度恒定。
- 其概率密度函数为:
f(x) = 1/(b-a)(当a ≤ x ≤ b),否则为0。 - 其累积分布函数在
x ≤ a时为0,在a < x ≤ b时线性增长至1,之后保持为1。 - 均匀分布的均值为区间中点
(a+b)/2。 - 均匀分布的方差为
(b-a)² / 12,标准差约为0.289 * (b-a)。
在下一节课中,我们将讨论另一种重要的连续分布:指数分布。



040:指数分布 📊
在本节课中,我们将学习指数分布。指数分布是几何分布在连续值上的扩展,常用于对电话通话时长、设备寿命、等待时间等连续随机事件进行建模。我们将从其定义、性质、期望与方差,以及一个关键特性——无记忆性——入手,并通过一个生动的例子来理解其应用。
概述 📖
指数分布的概率密度函数(PDF)定义如下:对于参数 λ > 0,其密度函数为:
f(x) = λe^{-λx},当 x ≥ 0
f(x) = 0,当 x < 0
这是一个非负函数,并且其从0到无穷大的积分等于1,这验证了它是一个有效的概率分布。
概率密度函数可视化 📈
我们可以使用Python代码来绘制不同λ值下的指数分布密度函数图像,直观地观察其变化。
以下是绘制指数分布密度函数的Python代码示例:
import numpy as np
import matplotlib.pyplot as plt
def plot_exponential(lambda_val, x_max=10):
x = np.linspace(0, x_max, 1000)
y = lambda_val * np.exp(-lambda_val * x)
plt.plot(x, y, label=f'λ = {lambda_val}')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Exponential Distribution PDF')
plt.legend()
plt.grid(True)
plt.show()
# 示例:绘制λ=0.5, 1, 5时的图像
plot_exponential(0.5)
plot_exponential(1)
plot_exponential(5)
运行此代码可以看到,λ值越大,曲线下降得越陡峭,起始点也越高。反之,λ值越小,曲线下降越平缓。
累积分布函数与概率计算 🧮
上一节我们看到了密度函数的形态,本节中我们来看看如何计算具体的概率。这需要用到累积分布函数。
指数分布的累积分布函数(CDF)为:
F(a) = P(X ≤ a) = 1 - e^{-λa},对于 a ≥ 0。
利用CDF,我们可以方便地计算各种区间概率。例如,计算X落在区间(a, b)内的概率:
P(a < X < b) = F(b) - F(a) = e^{-λa} - e^{-λb}。
期望与方差 🔢
了解了一个分布如何描述概率后,我们自然关心它的集中趋势和离散程度,即期望和方差。
指数分布的期望(均值)为:
E[X] = 1/λ
其方差为:
Var(X) = 1/λ²
因此,标准差也为 1/λ。这意味着,λ越大,不仅期望寿命越短,其波动性(标准差)也越小。
无记忆性 ⏳
指数分布有一个非常独特且重要的性质,称为“无记忆性”。这是它与许多其他分布的本质区别。
无记忆性是指:对于任意非负值a和b,有:
P(X > a + b | X > a) = P(X > b)
用生活中的例子解释:假设通话时长服从指数分布。如果你已经通话了a秒,那么通话再持续b秒的概率,与从一开始就算起、通话持续b秒的概率完全相同。过去的等待时间对未来没有影响。
这个性质也意味着,给定X > a的条件下,X的剩余寿命的分布与原始分布完全相同。
无记忆性的应用实例 🚗
为了加深对无记忆性的理解,我们来看一个具体的场景:在车管所(DMV)排队。
假设:
- 有两个服务窗口,每个窗口的服务时间服从参数为λ的指数分布。
- 你到达时,已有一人(A)在排队。
- 随后,另一人(B)插队到了你前面。
- 当有窗口空闲时,A首先开始服务。之后第二个窗口空闲时,B开始服务,最后才轮到你。
问题是:在服务时间服从指数分布(无记忆)的假设下,你最后一位结束服务的概率是多少?
以下是所有可能的完成顺序及其概率分析:
- A -> B -> 你:概率 = (1/2) * (1/2) = 1/4
- A先于B结束的概率是1/2(无记忆性,从B开始服务时算起,两人剩余服务时间分布相同)。
- 在A结束后,B和你的剩余服务时间分布相同,B先于你结束的概率也是1/2。
- A -> 你 -> B:概率 = 1/4 (同理)
- B -> A -> 你:概率 = 1/4 (同理)
- B -> 你 -> A:概率 = 1/4 (同理)
- 你 -> A -> B:概率 = 0 (你必须等至少一个人结束才能开始服务)
- 你 -> B -> A:概率 = 0 (同上)
因此,你最后一位结束的概率是顺序“A -> B -> 你”和“B -> A -> 你”的概率之和,即 1/4 + 1/4 = 1/2。
结论:尽管有人先到且有人插队,但由于服务时间的无记忆性,你成为最后一名完成服务的概率只是从“三人随机服务”时的1/3增加到了1/2,而并非必然最后一名。这个例子生动地展示了无记忆性如何影响随机事件的排序概率。
总结 ✨
本节课中我们一起学习了指数分布。
- 定义:其概率密度函数为
f(x) = λe^{-λx} (x≥0)。 - 性质:累积分布函数为
F(x) = 1 - e^{-λx},期望E[X] = 1/λ,方差Var(X) = 1/λ²。 - 核心特性:指数分布具有无记忆性,即
P(X > a+b | X > a) = P(X > b)。这意味着过去已等待的时间不会影响未来的剩余寿命分布。 - 应用:该分布常用于对寿命、等待时间等连续随机变量建模,其无记忆性在排队论等领域有重要应用。


下一讲,我们将探讨统计学中最重要的分布之一:正态分布。
041:马尔可夫不等式 📊
在本节课中,我们将学习与概率分布相关的不等式。我们将从马尔可夫不等式开始,它是许多后续不等式的基础。我们将探讨其动机、提供直观解释、正式表述、证明过程、应用示例,并讨论其可能的扩展与局限性。

动机与直观解释 🧠
我们为什么需要不等式?通常,我们希望限定某些事件(尤其是“坏”事件)发生的概率。例如,我们希望确保暴雨、严重交通拥堵、公司巨额亏损或疾病爆发的概率很小。马尔可夫不等式是这类概率界限的基础。
为了直观理解,考虑一组身高为非负数的“马克夫”(Mucovs)。假设它们的平均身高是10英寸。那么,是否可能有一半的马克夫身高至少为40英寸?答案是否定的。因为如果一半的马克夫身高超过40英寸,仅这一半的平均身高就至少是20英寸((1/2) * 40 = 20)。即使另一半身高为0,总平均也至少是20英寸,这与已知的平均10英寸矛盾。

更一般地,设平均身高为 μ。身高超过 αμ(其中 α > 1)的马克夫所占的比例 f(αμ) 必须满足:
f(αμ) * αμ ≤ μ
由此可得:
f(αμ) ≤ 1/α
这意味着,身高超过平均身高 α 倍的个体比例最多为 1/α。这就是马尔可夫不等式的核心思想。
正式表述与证明 📝
马尔可夫不等式有两种等价的表述形式,适用于任何具有有限均值 μ 的非负随机变量 X(可以是离散的或连续的)。
第一种表述(更易记忆):
对于任意 α > 1,
P(X ≥ αμ) ≤ 1/α
它表明,一个非负随机变量至少是其均值 α 倍的概率最多是 1/α。
第二种表述(更易应用):
对于任意 a > μ(或 a ≥ μ),
P(X ≥ a) ≤ μ / a
它直接给出了随机变量超过某个阈值 a 的概率上限。

以下是第二种表述的证明(以离散随机变量为例,连续情形只需将求和替换为积分):
随机变量 X 的期望(均值)定义为:
μ = E[X] = Σ_x x * P(X = x)
现在考虑概率 P(X ≥ a)。我们可以通过以下步骤推导其上限:
μ = Σ_x x * P(X = x)
≥ Σ_{x ≥ a} x * P(X = x) (因为只对 x ≥ a 的部分求和,舍弃了非负项)
≥ Σ_{x ≥ a} a * P(X = x) (因为在 x ≥ a 的区域,用 a 替换 x 会使求和值变小)
= a * Σ_{x ≥ a} P(X = x)
= a * P(X ≥ a)
因此,我们得到:
μ ≥ a * P(X ≥ a)
移项后即得:
P(X ≥ a) ≤ μ / a
证明完毕。
应用示例 📄
考虑学术论文的引用次数。已知期刊论文的平均引用次数约为8次。我们想估算一篇论文被引用至少40,000次(如一篇关于假设检验的著名论文)的概率。

设 X 为一篇论文的引用次数。X 是非负的,且已知 μ = 8。应用马尔可夫不等式(第二种表述),取 a = 40,000:
P(X ≥ 40,000) ≤ μ / a = 8 / 40,000 = 0.0002
即概率不超过 0.02%。
虽然这个界限看起来已经很强,但后续我们会看到,在增加一些假设后,其他不等式(如切比雪夫不等式)可以提供更紧的界限。
扩展与讨论 🔍
在理解了马尔可夫不等式后,我们自然会问:它能否被推广或加强?
1. 能否去掉“非负”的假设?
不能。如果随机变量可以为负,我们可以构造分布,使得 P(X ≥ a) 任意接近1,同时均值 μ 保持为任意给定值。因此,非负条件是必要的。
2. 能否加强不等式的界限(例如使上限更小)?
通常不能。从证明过程可以看出,当随机变量 X 只以概率 p 取值 a,以概率 1-p 取值 0,且均值 μ = p * a 时,马尔可夫不等式取等号:P(X ≥ a) = p = μ / a。既然存在分布使等式成立,我们就无法在不增加额外假设的情况下得到一个普遍更小的上限。
优缺点总结 ⚖️
优点:
- 适用性广: 仅要求随机变量非负且有有限均值,对分布形式无任何其他要求,因此总是可以使用。
- 基础性: 它是推导其他更强不等式(如切比雪夫不等式、霍夫丁不等式)的基石。
缺点:
- 界限可能较松: 正因为它对所有分布都成立,所以对于某些具体分布(如方差很小的分布),它给出的概率上限可能远大于实际概率,不够精确。

课程总结 🎯
本节课我们一起学习了马尔可夫不等式。
- 我们通过“马克夫”身高的例子获得了直观理解。
- 我们学习了其两种等价表述形式并完成了证明。
- 我们通过论文引用次数的例子看到了它的应用。
- 我们讨论了其推广的局限性和无法普遍加强的原因。
- 最后,我们分析了该不等式的优点与缺点。

马尔可夫不等式虽然简单,但它是概率论中一个非常重要的工具。在下一讲中,我们将以此为基础,探讨更强大的切比雪夫不等式。
042:切比雪夫不等式 📊
在本节课中,我们将学习切比雪夫不等式。这是马尔可夫不等式的一个重要推论,用于估计随机变量偏离其均值的概率。我们将探讨其含义、证明过程,并通过实例来理解其应用。
上一节我们介绍了马尔可夫不等式,本节中我们来看看它的一个重要应用——切比雪夫不等式。切比雪夫是马尔可夫的导师,而切比雪夫不等式正是从马尔可夫不等式推导出来的。

从马尔可夫到切比雪夫 🔄
马尔可夫不等式描述了非负随机变量大于其均值特定倍数的概率上界。其公式为:
其中 \(X \geq 0\),\(\alpha > 0\)。
切比雪夫不等式则适用于任何随机变量,它描述的是随机变量偏离其均值超过特定倍标准差的概率上界。其核心思想是:
其中 \(\alpha > 1\),\(\mu\) 是均值,\(\sigma\) 是标准差。
切比雪夫不等式的表述 📝
设 \(X\) 是任意具有有限均值 \(\mu\) 和标准差 \(\sigma\) 的离散或连续随机变量。
以下是切比雪夫不等式的两种等价表述:

表述一(基于标准差倍数):
对于任意 \(\alpha > 1\),随机变量偏离其均值至少 \(\alpha\) 个标准差的概率至多为 \(1/\alpha^2\)。
表述二(基于绝对距离):
对于任意 \(a > 0\),随机变量偏离其均值至少 \(a\) 的概率至多为方差除以 \(a^2\)。
注意,当 \(a = \alpha \sigma\) 时,两种表述等价。
直观理解与图示 📈

为了更好地理解,我们可以将不等式可视化。假设有一个随机变量 \(X\),其概率分布如图所示,均值 \(\mu\) 位于中心。
- 当 \(\alpha = 1\) 时,不等式给出 \(P(|X - \mu| \geq \sigma) \leq 1\)。这个结论比较平凡,因为任何概率都小于等于1。
- 当 \(\alpha = 2\) 时,不等式给出 \(P(|X - \mu| \geq 2\sigma) \leq 1/4\)。这意味着数据落在均值两侧两个标准差范围之外的概率不超过25%。
- 当 \(\alpha = 3\) 时,不等式给出 \(P(|X - \mu| \geq 3\sigma) \leq 1/9 \approx 11.1\%\)。这意味着数据落在“三西格玛”范围之外的概率相对较小。
由此可见,随着 \(\alpha\) 增大(即我们考虑更远的偏离),概率上界 \(1/\alpha^2\) 会迅速减小。

证明过程 🧠
切比雪夫不等式可以利用马尔可夫不等式简洁地证明。
证明:
设随机变量 \(X\) 的均值为 \(\mu_X\),方差为 \(\sigma_X^2\)。
定义一个新的随机变量 \(Y = (X - \mu_X)^2\)。
显然,\(Y \geq 0\),且 \(Y\) 的期望值为:
现在,考虑我们想要估计的概率:
由于 \(Y\) 是非负随机变量,我们可以对其应用马尔可夫不等式:
因此,我们证明了:
证毕。
应用示例 💡
了解了原理和证明后,我们通过两个例子来看看如何应用切比雪夫不等式。

示例1:估计高分概率
假设某次考试的分数 \(X\) 平均分 \(\mu = 75\),标准差 \(\sigma = 10\)。我们想估计分数超过90分的概率。
分数90分比均值高出了 \(90 - 75 = 15\) 分,即 \(a = 15\)。
根据切比雪夫不等式(表述二):
因此,分数超过90的概率至多为44.4%。这是一个比较宽松的上界,实际概率通常会更低。
示例2:估计调查响应数的范围
假设进行一项调查,根据经验,预期响应数均值 \(\mu = 1,000,000\),标准差 \(\sigma = 50,000\)。我们想估计实际响应数落在800,000到1,200,000之间的概率下限。
注意,800,000 = \(\mu - 4\sigma\),1,200,000 = \(\mu + 4\sigma\)。
我们关心的事件是 \(|X - \mu| < 4\sigma\),这是 \(|X - \mu| \geq 4\sigma\) 的补集。
根据切比雪夫不等式:
因此,
所以,响应数落在该范围内的概率至少为93.75%。切比雪夫不等式不仅可以给出“偏离”概率的上界,还可以通过补集得到“靠近”概率的下界。
与马尔可夫不等式的比较 ⚖️
为了更好地理解切比雪夫不等式,我们将其与马尔可夫不等式进行对比:

以下是两者的核心区别:

- 适用对象:马尔可夫不等式要求随机变量非负;切比雪夫不等式适用于任何随机变量。
- 所需信息:马尔可夫不等式只需要均值;切比雪夫不等式需要均值和方差(或标准差)。
- 边界形式:马尔可夫不等式给出 \(P(X \geq a) \leq \mu / a\),概率上界随 \(a\) 线性(1/a) 下降;切比雪夫不等式给出 \(P(|X-\mu| \geq a) \leq \sigma^2 / a^2\),概率上界随 \(a\) 平方(1/a²) 下降,下降速度更快,因此通常能给出更紧(在某些情况下)或有用的界限。
- 有效范围:马尔可夫不等式在 \(a > \mu\) 时提供有意义(≤1)的界限;切比雪夫不等式在 \(a > \sigma\) 时提供有意义的界限。
总结 📚
本节课中我们一起学习了切比雪夫不等式。
我们首先了解了它如何从马尔可夫不等式衍生而来,并比较了两者的异同。
然后,我们学习了切比雪夫不等式的两种表述形式,并通过图示直观理解了其含义:它限制了随机变量偏离其均值超过一定范围的概率。
接着,我们利用马尔可夫不等式完成了其简洁的证明。
最后,通过两个实际例子,我们演示了如何应用该不等式来估计概率的上界或下界,并总结了它与马尔可夫不等式的关键区别。

切比雪夫不等式是概率论中一个非常强大的工具,它仅利用均值和方差就对随机变量的分布做出了普适性的概率断言。下次课,我们将探讨切比雪夫不等式的一个重要应用——大数定律。
043:大数定律的弱形式 📊
在本节课中,我们将学习大数定律的弱形式。我们将了解如何利用马尔可夫和切比雪夫不等式来推导这一定律,并通过实例理解其在实际问题中的应用。
概述
在前面的课程中,我们讨论了马尔可夫和切比雪夫不等式。现在,我们将应用这些不等式来推导大数定律的弱形式。概率论的基础是样本均值会收敛于其期望值。例如,多次抛掷一枚公平硬币,正面朝上的比例会收敛到1/2;多次掷骰子,其平均值会收敛到3.5。本节课的目标是将这种直觉认识转化为更严谨的数学表述。
样本均值的定义
首先,我们定义样本均值。假设我们观测到一个序列 x1, x2, ..., xn,我们使用上标 x^n 来简记这个序列。样本均值,记作 x̄_n,是所有观测值的平均值。
公式:
x̄_n = (x1 + x2 + ... + xn) / n
例如,如果 n=4,观测值为 3, 1, 4, 2,那么样本均值为 (3+1+4+2)/4 = 2.5。
当我们从某个分布中抽取 n 个样本时,得到的是一个随机变量序列 X1, X2, ..., Xn。此时的样本均值 X̄_n 也是一个随机变量,其值取决于我们抽取的具体样本。
独立同分布样本
为了精确表述,我们需要引入独立同分布的概念。如果一组随机变量相互独立且服从相同的分布,则称它们为独立同分布随机变量。
例如,如果 X1, X2, X3 是独立同分布的伯努利(0.3)随机变量,那么 P(X1=1, X2=0, X3=1) = 0.3 * 0.7 * 0.3 = 0.063。
大数定律的弱形式
大数定律的弱形式指出:假设我们有一个包含 n 个独立同分布样本的序列 X^n,这些样本来自一个具有有限均值 μ 和有限标准差 σ 的分布。那么,随着样本数量 n 的增加,样本均值 X̄_n 会趋近于总体均值 μ。
更具体地说,对于任意给定的正数 ε,样本均值与总体均值之差的绝对值超过 ε 的概率,会随着 n 增大而趋近于0。
公式:
P(|X̄_n - μ| ≥ ε) ≤ σ² / (n * ε²)
这个不等式表明,随着样本量 n 增大,样本均值偏离总体均值的概率会减小。
应用实例:选举预测
让我们通过一个例子来理解大数定律的应用。假设我们试图预测2016年总统选举中投票给特朗普的比例 p。我们随机调查了100,000人,并假设每个人投票给特朗普的概率是 p,且相互独立。
我们希望估计误差超过1%(即 ε = 0.01)的概率。根据大数定律的弱形式:
P(|X̄_n - p| ≥ 0.01) ≤ σ² / (n * ε²)
对于伯努利分布,方差 σ² = p(1-p),其最大值是 1/4。因此:
P(|X̄_n - p| ≥ 0.01) ≤ (1/4) / (100000 * 0.0001) = 1/40 = 2.5%
这意味着,我们调查结果与真实比例 p 的误差超过1%的概率最多只有2.5%。如果增加调查人数,这个概率还会进一步降低。
定理证明
现在,我们来证明大数定律的弱形式。假设 X1, X2, ..., Xn 是独立同分布随机变量,均值为 μ,方差为 σ²。样本均值为 X̄_n = (1/n) * Σ Xi。
首先,计算样本均值的期望:
E[X̄_n] = E[(1/n) * Σ Xi] = (1/n) * Σ E[Xi] = (1/n) * nμ = μ
接着,计算样本均值的方差。由于随机变量相互独立,和的方差等于方差的和:
Var(X̄_n) = Var((1/n) * Σ Xi) = (1/n²) * Var(Σ Xi) = (1/n²) * Σ Var(Xi) = (1/n²) * nσ² = σ²/n
最后,应用切比雪夫不等式:
P(|X̄_n - μ| ≥ ε) ≤ Var(X̄_n) / ε² = (σ²/n) / ε² = σ² / (nε²)
证毕。可以看到,当 n 趋于无穷大时,不等式右侧趋于0,因此概率 P(|X̄_n - μ| ≥ ε) 也趋于0。
另一个应用:传感器测量
假设我们使用 n 个传感器测量温度。每个传感器的读数包含真实温度 t 和一个噪声 Z,噪声的均值为0,方差不超过2。问题是:需要多少个传感器,才能以至少95%的概率保证平均读数的误差在0.5度以内?
根据大数定律,样本均值(即所有传感器读数的平均值)的误差概率为:
P(|X̄_n - t| ≥ 0.5) ≤ 2 / (n * 0.5²) = 8/n
我们希望这个概率小于5%(即误差概率小于5%,正确概率大于95%):
8/n ≤ 0.05 => n ≥ 8 / 0.05 = 160
因此,我们需要至少160个传感器。
依概率收敛
大数定律的弱形式实际上描述了一种称为“依概率收敛”的概念。如果对于任意 δ > 0 和 ε > 0,存在一个 N,使得当 n > N 时,有 P(|Xn - Y| ≥ δ) < ε,则称随机变量序列 {Xn} 依概率收敛于随机变量 Y。
我们证明了大数定律,即样本均值序列 {X̄_n} 依概率收敛于总体均值 μ。
总结


在本节课中,我们一起学习了大数定律的弱形式。我们定义了样本均值和独立同分布样本,陈述并证明了大数定律。通过选举预测和传感器测量两个实例,我们看到了这一定律在实际问题中的应用。最后,我们介绍了依概率收敛的概念,这是理解大数定律背后数学思想的重要一步。在接下来的课程中,我们将探讨更强的边界和矩母函数的相关内容。
044:矩生成函数 📊
在本节课中,我们将学习矩生成函数。矩生成函数是一个强大的工具,它能生成随机变量的所有矩,并为后续学习更强大的概率不等式奠定基础。
什么是矩?

上一节我们介绍了马尔可夫和切比雪夫不等式,本节中我们来看看矩的概念。矩是随机变量幂的期望值。
- 原始矩:
E[X^n]被称为第n阶原始矩。例如,一阶矩E[X]是均值,二阶矩E[X^2]与方差有关。 - 中心矩:
E[(X - μ)^n]被称为第n阶中心矩,其中μ = E[X]。例如,二阶中心矩就是方差Var(X)。

矩决定了分布的许多性质,如均值、方差等。现在,我们将介绍一个能确定所有矩的通用方法。
矩生成函数的定义
矩生成函数将一个随机变量 X 映射为一个实函数 M(t)。
其定义为随机变量 e^(tX) 的期望值:
M_X(t) = E[e^(tX)]
这个定义对离散和连续分布都适用。
- 对于离散分布:
M_X(t) = Σ p(x) * e^(t*x) - 对于连续分布:
M_X(t) = ∫ f(x) * e^(t*x) dx

矩生成函数 M_X(t) 由 X 的分布决定。
矩生成函数示例
让我们从最简单的分布开始看一些例子。
常数随机变量
如果 X 恒等于常数 c,那么它的矩生成函数是:
M_X(t) = E[e^(t*c)] = e^(c*t)
例如,若 X = 1,则 M_X(t) = e^t;若 X = -2,则 M_X(t) = e^(-2t)。矩生成函数总是非负的,并且在 t=0 时值为1。
两点分布(推广的伯努利)

考虑一个随机变量,以概率 p1 取值 c1,以概率 p2 取值 c2(p1 + p2 = 1)。其矩生成函数为:
M_X(t) = p1 * e^(c1*t) + p2 * e^(c2*t)
一个特例是取值为 1 和 -1,概率各为 1/2,则 M_X(t) = (e^t + e^(-t))/2。
伯努利分布
如果 X ~ Bernoulli(p),即 P(X=1)=p, P(X=0)=1-p,那么其矩生成函数为:
M_X(t) = (1-p)*e^(0*t) + p*e^(1*t) = 1-p + p*e^t
矩生成函数的性质

了解了基本定义和例子后,我们来看看矩生成函数的一些重要性质。

基本性质
- 非负性:对于所有
t,M_X(t) > 0。 - 在零点的值:
M_X(0) = E[e^(0*X)] = E[1] = 1。
平移与缩放
以下是随机变量经过线性变换后,其矩生成函数的变化。
- 平移:若
Y = X + b,则M_Y(t) = e^(b*t) * M_X(t)。 - 缩放:若
Y = a*X,则M_Y(t) = M_X(a*t)。 - 线性变换:结合以上两者,若
Y = a*X + b,则M_Y(t) = e^(b*t) * M_X(a*t)。
示例:常数 c 的矩生成函数为 e^(c*t)。对于 Y = a*c + b,利用性质可得 M_Y(t) = e^(b*t) * e^(c*a*t) = e^((a*c+b)*t),这与将 Y 视为常数直接计算的结果一致。
独立随机变量之和

矩生成函数在处理独立随机变量和时表现出极好的性质。
如果 X 和 Y 相互独立,那么 X+Y 的矩生成函数是它们各自矩生成函数的乘积:
M_(X+Y)(t) = M_X(t) * M_Y(t)
证明:M_(X+Y)(t) = E[e^(t(X+Y))] = E[e^(tX) * e^(tY)]。由于 X 和 Y 独立,e^(tX) 和 e^(tY) 也独立,因此期望等于各自期望的乘积,即 M_X(t) * M_Y(t)。

这个性质可以推广到 n 个独立随机变量的和或平均值。
矩生成函数如何“生成”矩
矩生成函数的核心价值在于其名称所揭示的:它能生成随机变量的所有矩。
第 n 阶原始矩 E[X^n] 等于矩生成函数的 n 阶导数在 t=0 处的值:
E[X^n] = M_X^(n)(0)
直观理解:将 e^(tX) 用泰勒级数展开:
e^(tX) = 1 + tX + (t^2 X^2)/2! + (t^3 X^3)/3! + ...
两边取期望(利用期望的线性性质):
M_X(t) = E[e^(tX)] = 1 + tE[X] + (t^2 E[X^2])/2! + (t^3 E[X^3])/3! + ...
可以看到,各阶矩 E[X], E[X^2], ... 作为系数隐藏在 M_X(t) 的级数展开中。对 M_X(t) 求 n 阶导数并令 t=0,就能提取出 E[X^n]。
前两阶矩的推导:
- 一阶矩(均值):
M_X'(t) = d/dt E[e^(tX)] = E[ d/dt e^(tX) ] = E[X * e^(tX)]
令t=0,得M_X'(0) = E[X * e^(0)] = E[X]。 - 二阶矩:
M_X''(t) = d/dt M_X'(t) = E[ d/dt (X * e^(tX)) ] = E[X^2 * e^(tX)]
令t=0,得M_X''(0) = E[X^2 * e^(0)] = E[X^2]。
更多分布的矩生成函数
现在,让我们计算一些更常见分布的矩生成函数。
二项分布

设 X ~ Binomial(n, p)。其矩生成函数为:
M_X(t) = [1 + p(e^t - 1)]^n = (1-p + p*e^t)^n
推导:
M_X(t) = Σ_{k=0}^n C(n,k) p^k (1-p)^(n-k) e^(t*k) = Σ_{k=0}^n C(n,k) (p e^t)^k (1-p)^(n-k)
根据二项式定理 (a+b)^n = Σ C(n,k) a^k b^(n-k),这里 a = p e^t, b = 1-p,因此上式等于 (p e^t + 1-p)^n。
验证均值:对 M_X(t) 求导并令 t=0:
M_X'(t) = n * (1-p + p e^t)^(n-1) * p e^t
M_X'(0) = n * (1-p + p)^(n-1) * p * 1 = n * 1^(n-1) * p = n p
这正是二项分布的均值 E[X] = np。
泊松分布

设 X ~ Poisson(λ)。其矩生成函数为:
M_X(t) = e^{λ(e^t - 1)}
推导:
M_X(t) = Σ_{k=0}^∞ e^{-λ} λ^k / k! * e^(t*k) = e^{-λ} Σ_{k=0}^∞ (λ e^t)^k / k!
注意到 Σ_{k=0}^∞ (λ e^t)^k / k! = e^{λ e^t},因此 M_X(t) = e^{-λ} * e^{λ e^t} = e^{λ(e^t - 1)}。
正态分布

首先看标准正态分布 Z ~ N(0,1)。其矩生成函数为:
M_Z(t) = e^{t^2/2}
推导:
M_Z(t) = ∫_{-∞}^{∞} e^{t*z} * (1/√(2π)) e^{-z^2/2} dz = (1/√(2π)) ∫_{-∞}^{∞} e^{-(z^2/2 - t*z)} dz
通过配方:-(z^2/2 - t*z) = -[(z-t)^2 - t^2]/2 = -(z-t)^2/2 + t^2/2
因此,M_Z(t) = e^{t^2/2} * (1/√(2π)) ∫_{-∞}^{∞} e^{-(z-t)^2/2} dz。积分项是均值为 t、方差为1的正态分布密度函数的积分,结果为1。故 M_Z(t) = e^{t^2/2}。
对于一般正态分布 X ~ N(μ, σ^2),我们可以将其写为 X = σZ + μ。利用线性变换的性质:
M_X(t) = e^{μ*t} * M_Z(σ*t) = e^{μ*t} * e^{(σ*t)^2/2} = e^{μ*t + σ^2 t^2/2}
矩生成函数的进一步性质(概述)

最后,我们简要提及矩生成函数的一些更深层次的性质,这些性质说明了它的重要性。
- 唯一性:如果两个随机变量
X和Y有相同的矩生成函数(在包含0的某个区间内),那么它们具有相同的分布(在几乎处处相等的意义下)。这意味着分布由其矩生成函数唯一确定。 - 可逆性:理论上,可以从矩生成函数反推出随机变量的分布。
- 收敛性:如果一列随机变量
{X_n}的矩生成函数逐点收敛到某个随机变量X的矩生成函数,那么{X_n}的分布函数也收敛到X的分布函数。
示例:二项分布收敛到泊松分布
我们知道,当 n 很大且 p 很小使得 np = λ 时,二项分布 Binomial(n, λ/n) 近似于泊松分布 Poisson(λ)。这一收敛性也体现在矩生成函数上:
二项分布的矩生成函数为 [1 + (λ/n)(e^t - 1)]^n。
利用极限公式 lim_{n→∞} (1 + a/n)^n = e^a,令 a = λ(e^t - 1),则当 n→∞ 时:
[1 + (λ/n)(e^t - 1)]^n → e^{λ(e^t - 1)}
这正是泊松分布 Poisson(λ) 的矩生成函数。
总结

本节课中我们一起学习了矩生成函数。我们首先回顾了矩的概念,然后定义了矩生成函数 M_X(t) = E[e^(tX)],并通过多个例子(如常数、伯努利、二项、泊松、正态分布)计算了它的具体形式。我们探讨了它的重要性质,包括在 t=0 处的值、平移缩放效应、以及对于独立随机变量之和的可乘性。最重要的是,我们揭示了矩生成函数如何通过求导来“生成”随机变量的各阶矩。最后,我们概述了矩生成函数的唯一性、可逆性和收敛性,这些性质使其成为概率论中一个非常核心的工具。在接下来的课程中,我们将利用矩生成函数来推导更强大的概率不等式。
045:切尔诺夫界 🎯
在本节课中,我们将学习一个比之前讨论过的马尔可夫不等式和切比雪夫不等式更强的概率界——切尔诺夫界。我们将了解其证明过程,并看到一个实际应用案例。
概述
在前面的课程中,我们介绍了马尔可夫不等式和切比雪夫不等式。它们都用于界定一个随机变量取值远离其均值的概率。本节课,我们将探讨一个显著更强的界,称为切尔诺夫界。该界以赫尔曼·切尔诺夫的名字命名,他是一位至今健在的统计学家,以其对统计学领域的广泛贡献而闻名。
切尔诺夫界特别适用于二项分布,它表明随机变量超过均值某个比例的概率会随着样本量增加而指数级下降,这比马尔可夫不等式(概率界为常数)和切比雪夫不等式(概率界线性下降)要强大得多。
切尔诺夫界的推导
上一节我们回顾了马尔可夫不等式和切比雪夫不等式的基本思想。本节中,我们来看看如何通过“指数化”技巧,从马尔可夫不等式出发推导出切尔诺夫界。
核心思路:指数化与马尔可夫不等式
设随机变量 X 服从参数为 (n, p) 的二项分布,其均值 μ = np。我们希望界定 P(X ≥ (1+δ)μ) 的概率,其中 δ ≥ 0。
证明的关键步骤如下:
- 指数变换:对于任意 t ≥ 0,事件 {X ≥ a} 等价于事件 {e^(tX) ≥ e^(ta)}。
- 应用马尔可夫不等式:对非负随机变量 e^(tX) 应用马尔可夫不等式,得到:
P(X ≥ a) = P(e^(tX) ≥ e^(ta)) ≤ E[e^(tX)] / e^(ta) - 计算矩母函数:我们需要计算 E[e^(tX)],这正是二项分布的矩母函数。
- 将 X 视为 n 个独立的伯努利随机变量 X_i 之和。
- 因此,E[e^(tX)] = E[∏ e^(tX_i)] = ∏ E[e^(tX_i)] (由独立性可得)。
- 对于伯努利变量,E[e^(tX_i)] = (1-p) + pe^t。
- 所以,E[e^(tX)] = [(1-p) + pet]n。
- 对上界进行放缩:利用不等式 1+x ≤ e^x,我们可以得到:
E[e^(tX)] ≤ [e{p(et - 1)}]^n = e{np(et - 1)} = e{μ(et - 1)} - 代入并优化参数 t:将上界代入步骤2的不等式,并令 a = (1+δ)μ,得到:
P(X ≥ (1+δ)μ) ≤ e{μ(et - 1)} / e^{t(1+δ)μ} = e{μ[et - 1 - t(1+δ)]}
这个不等式对任意 t ≥ 0 都成立。为了得到最紧的界,我们选择 t 来最小化指数部分 f(t) = e^t - 1 - t(1+δ)。 - 求解最优 t:对 f(t) 求导并令其为零:
f'(t) = e^t - (1+δ) = 0 ⇒ t = ln(1+δ)
可以验证这是最小值点。 - 得到切尔诺夫界:将最优 t 代回,经过化简(利用不等式 ln(1+x) ≥ x/(1+x/2)),最终得到:
P(X ≥ (1+δ)μ) ≤ exp( - (δ² / (2+δ)) μ )
类似地,对于另一侧,有:
P(X ≤ (1-δ)μ) ≤ exp( - (δ² / 2) μ )
切尔诺夫界的应用示例
我们已经推导出了切尔诺夫界。本节中,我们通过一个民意调查的例子来看看它的实际威力。
假设某次选举中,实际支持候选人D的选民比例为 p = 47%。我们随机调查 n = 6000 人。令 X 为调查中支持D的人数,则 X ~ Binomial(n=6000, p=0.47),期望值 μ = np = 2820。
调查结果出错(即错误地认为D的支持率超过50%)的条件是:X > 3000(因为 3000/6000 = 50%)。
我们想计算 P(X > 3000) 的上界。
以下是计算步骤:
- 首先找到对应的 δ,使得 (1+δ)μ = 3000。
- 1+δ = 3000 / 2820 ≈ 1.0638
- 因此,δ ≈ 0.0638
- 应用切尔诺夫界:
P(X > 3000) = P(X > (1+δ)μ) ≤ exp( - (δ² / (2+δ)) μ )
≈ exp( - (0.0638² / (2+0.0638)) * 2820 )
≈ exp(-5.57) ≈ 0.0038 = 0.38%
这意味着,仅凭6000人的随机样本,错误判断D支持率超过50%的概率低于0.38%。
作为对比:
- 马尔可夫不等式给出的界是 1/(1+δ) ≈ 1/1.0638 ≈ 94%,这非常宽松。
- 切比雪夫不等式给出的界会随着 n 线性下降,但仍远不如切尔诺夫界的指数下降速度快。
这个例子清晰地展示了切尔诺夫界在处理此类“尾部概率”问题时的强大能力。
总结
本节课中,我们一起学习了:
- 切尔诺夫界:一个针对二项分布(以及更一般的独立随机变量和)的强大概率不等式,它表明随机变量偏离其均值一定比例的概率会随样本量指数级衰减。
- 推导过程:我们通过指数变换技巧,结合马尔可夫不等式和矩母函数的计算,并优化参数 t,最终推导出了切尔诺夫界。
- 实际应用:我们通过一个民意调查的例子,演示了如何使用切尔诺夫界来计算错误估计概率的一个紧致上界,并对比了其与马尔可夫不等式、切比雪夫不等式在效果上的显著优势。


切尔诺夫界是理解大量独立随机试验集中现象的重要工具,也是学习后续更高级主题(如大数定律的收敛速率)的基础。在下节课中,我们将探讨统计学中另一个极其重要的定理——中心极限定理。
046:中心极限定理 🎯
在本节课中,我们将要学习概率论与统计学中最重要的成果之一——中心极限定理。我们将了解其核心思想,并通过具体示例学习如何应用它来解决实际问题。

概述
上一节我们介绍了几种概率界限。本节中,我们来看看中心极限定理。中心极限定理是统计学中的核心结果之一。它表明,在非常温和的条件下,随机变量的归一化和近似服从正态分布。这适用于所有类型的分布,无论是离散的、连续的还是混合的。这也解释了为什么钟形曲线如此流行,以及为什么我们在众多应用中都能观察到它。更重要的是,当我们不知道底层分布时,它允许我们对许多事件进行简单的概率估计。
从示例开始
首先,让我们通过一些例子来直观感受中心极限定理。

抛硬币示例
假设我们抛硬币,随机变量服从伯努利分布(概率为0.5)。
- 如果只抛一枚硬币(n=1),我们得到两个可能的值:0和1,每个概率为0.5。这显然不像高斯分布。
- 如果抛五次硬币,并统计得到“1”的次数,其概率分布看起来像绿色的直方图。得到2或3次“1”的概率最高,得到0次或5次“1”的概率较低。
- 如果抛十次硬币,分布看起来更像一个三角形。得到“1”的次数范围是0到10,5次最有可能。
- 如果抛二十次硬币,分布开始看起来像一个高斯分布(钟形曲线)。

这种现象不仅发生在伯努利分布(抛硬币)中,也几乎适用于任何分布。
掷骰子示例
假设我们掷一个或多个骰子。
- 如果掷一个骰子,得到的是1到6之间的均匀分布。
- 如果掷两个骰子并求和,总和范围从2(1+1)到12(6+6),分布形状如图所示。
- 掷三个骰子时,总和范围从3到18,分布形状开始变化。
- 随着骰子数量增加到四个、五个,其总和的分布越来越接近高斯分布。对于五个骰子,分布已经非常像高斯分布了。
这就是中心极限定理的本质:独立同分布随机变量之和的分布会收敛到高斯分布。

连续分布示例
对于连续分布,结论同样成立。以下是三个非常不同的连续分布示例:均匀分布、双峰分布和偏斜分布。
- 如果只取一个样本,它们看起来各不相同。
- 如果取五个样本并求和,其分布开始发生变化。
- 如果取三十个样本并求和,你会发现所有分布看起来本质上都是高斯分布。
实际上,人们常说,如果你有30次重复(样本),你基本上可以假设其和服从高斯分布。虽然没有绝对的保证(取决于具体分布),但对于大多数合理的分布,在添加30个独立样本后,你会得到非常接近高斯分布的结果。
混合分布示例
这个结论同样适用于混合分布。你可以从一个具有两个尖峰和中间连续部分的混合分布开始。随着样本数量从1个增加到2个、30个,其和的分布也会越来越像高斯分布。
中心极限定理的正式表述
那么,中心极限定理具体说了什么呢?

首先,我们定义一些符号:
- IID 代表独立同分布。
- μ 代表均值。
- σ 代表标准差。
定理表述如下:
设 X₁, X₂, X₃, ... 是一列独立同分布的随机变量。我们并不关心它们的具体分布是什么,只要求该分布具有有限的均值 μ 和有限的标准差 σ。
随着样本数量 n 趋向于无穷大,如果我们对这个和进行归一化处理,那么这个归一化的和将趋近于一个均值为0、标准差为1的正态分布(标准正态分布)。
归一化的具体方式如下:
- 每个 Xᵢ 的均值是 μ,所以我们减去 nμ 以使总和均值为0。
- 每个 Xᵢ 的标准差是 σ,所以我们除以 σ 来标准化尺度。
- 一个可能不太直观但非常重要的步骤是:我们除以 √n,而不是 n。
公式表示如下:
Zₙ = (X₁ + X₂ + ... + Xₙ - nμ) / (σ√n)
当 n → ∞ 时,Zₙ 的分布趋近于标准正态分布 N(0,1)。
我们可以这样理解:总和 Sₙ = X₁ + ... + Xₙ 的均值是 nμ,方差是 nσ²(因为独立随机变量和的方差等于方差之和)。因此,Sₙ 的标准差是 σ√n。我们的归一化过程 (Sₙ - nμ) / (σ√n) 正是减去均值后,再除以其标准差,从而得到一个均值为0、方差为1的随机变量。
为了简化讨论,我们可以不失一般性地假设随机变量原本就是均值为0、标准差为1。这样,中心极限定理的表述就变成了:对于独立同分布且均值为0、标准差为1的随机变量序列 X₁, X₂, ...,当 n 很大时,(X₁ + ... + Xₙ) / √n 的分布近似于 N(0,1)。通常,n=30 就足以得到相当好的近似。
与大数定律的比较
中心极限定理可以看作是大数定律的一个重要深化。让我们回顾一下(弱)大数定律。
大数定律指出,对于独立同分布、均值为0、标准差为1的随机变量序列 X₁, X₂, ...,样本平均值 (X₁ + ... + Xₙ)/n 会依概率收敛到总体均值0。这意味着,随着 n 增大,这个平均值偏离0的概率会变得任意小。

证明思路: (X₁+...+Xₙ)/n 的期望是0,方差是 1/n(因为方差为1的独立变量和的方差是n,再除以n,方差变为 1/n)。当 n 很大时,方差趋近于0,所以分布会集中在一个点(0)附近。
相比之下,中心极限定理考虑的是不同的归一化方式:我们除以 √n 而不是 n。中心极限定理说,(X₁+...+Xₙ)/√n 的分布会趋近于 N(0,1)。
关键洞察: 如果我们除以一个比 √n 大得多的数(例如 n^(3/4)),方差会趋近于0,就像大数定律一样。如果我们除以一个比 √n 小得多的数(例如 n^(1/4)),方差会趋近于无穷大。√n 是一个“恰到好处”的尺度,使得归一化后的方差恰好稳定在1。
但中心极限定理真正令人惊讶和强大之处在于:无论你从什么样的分布开始(无论它看起来多奇怪、多复杂),只要满足独立同分布且方差有限,其归一化和最终都会收敛到同一个“无聊”的标准正态分布。这是中心极限定理最激动人心的地方。
中心极限定理的应用
现在,我们来看一个如何应用中心极限定理的例子。这个例子非常通用,展示了中心极限定理的强大威力。

商店收入示例
假设你拥有一家商店。根据历史数据,你知道:
- 每位顾客的平均消费额 μ = $80。
- 消费额的标准差 σ = $40。
注意,我们并不知道顾客消费的具体分布,只知道其均值和标准差。
问题: 你不太关心单个顾客的消费情况,而是更关心商店的日总收入。假设某天有 n = 100 位顾客光顾。你想知道,当天平均每位顾客消费额低于 $72 的概率是多少?这等价于当天总收入低于 100 * $72 = $7200 的概率,即比日均收入 (100 * $80 = $8000) 低10%。
对于单个顾客,我们无法准确计算 P(X < 72),因为不知道分布。但利用中心极限定理,我们可以对100位顾客的平均消费额做出很好的概率估计。
一般应用公式
首先,我们推导出应用中心极限定理的一般公式。
设 X₁, X₂, ..., Xₙ 是独立同分布随机变量,均值为 μ,标准差为 σ。
定义样本平均值为:X̄ₙ = (X₁ + ... + Xₙ) / n。
我们关心的是概率:P(X̄ₙ ≤ α),其中 α 是某个阈值。
根据中心极限定理,我们构造:
Zₙ = (X₁ + ... + Xₙ - nμ) / (σ√n)
当 n 足够大(如≥30)时,Zₙ 近似服从标准正态分布 N(0,1)。
我们可以将 Zₙ 用 X̄ₙ 表示:
Zₙ = (nX̄ₙ - nμ) / (σ√n) = (X̄ₙ - μ) / (σ/√n)
因此,我们关心的概率可以转化为:
P(X̄ₙ ≤ α) = P( Zₙ ≤ (α - μ) / (σ/√n) ) ≈ Φ( (α - μ) / (σ/√n) )
其中,Φ(z) 是标准正态分布的累积分布函数。

核心公式:
P(X̄ₙ ≤ α) ≈ Φ( (α - μ) / (σ/√n) )
这个公式非常强大。只要我们知道样本的均值 μ、标准差 σ 和样本量 n,我们就可以估计样本平均值低于任何阈值 α 的概率,而无需知道原始分布的具体形式。
回到商店示例

现在,我们将这个公式应用到商店问题中。
已知:μ = 80, σ = 40, n = 100, α = 72。
计算:
(α - μ) / (σ/√n) = (72 - 80) / (40/√100) = (-8) / (40/10) = (-8) / 4 = -2
所以,P(平均消费 ≤ $72) ≈ Φ(-2)。
我们需要计算标准正态分布变量小于等于-2的概率 Φ(-2)。
关于Φ函数的提醒:
- Φ(z) 表示标准正态变量 Z 小于等于 z 的概率。
- 由于正态分布的对称性,有 Φ(-z) = 1 - Φ(z)。
查标准正态分布表可知,Φ(2) ≈ 0.9772。
因此,Φ(-2) = 1 - Φ(2) ≈ 1 - 0.9772 = 0.0228。
结论: 在有100位顾客的日子里,平均消费额低于$72(即总收入低于$7200,比预期低10%)的概率大约为 2.28%。这个概率相当低,或许你不需要过于担心。
这个结果之所以可能,完全归功于中心极限定理。原始分布的标准差很大($40),但当我们观察100位顾客的平均值时,其标准差缩小为 σ/√n = 40/10 = $4。这使得平均值偏离均值$8(即2个标准差单位)的概率变得很小。
总结
本节课中,我们一起学习了中心极限定理。
- 我们通过抛硬币、掷骰子等例子,直观地理解了独立同分布随机变量之和的分布会随着样本量增加而趋近于正态分布。
- 我们学习了中心极限定理的正式表述:对于独立同分布且方差有限的随机变量,其归一化和
(ΣXᵢ - nμ)/(σ√n)近似服从标准正态分布。 - 我们将其与大数定律进行了比较,认识到中心极限定理揭示了分布形态的收敛,而不仅仅是均值的收敛。
- 最重要的是,我们推导并应用了一个强大的公式
P(X̄ₙ ≤ α) ≈ Φ( (α - μ) / (σ/√n) )。这个公式允许我们在不知道总体具体分布的情况下,仅利用均值、标准差和样本量,对样本平均值的概率进行估计。我们通过商店收入的例子具体演示了这一应用。

中心极限定理是统计学推断的基石,它为参数估计、假设检验等方法提供了理论依据。在接下来的课程中,我们将证明这个重要的定理。
047:中心极限定理的证明 📚
在本节课中,我们将学习如何证明中心极限定理。上一节我们介绍了中心极限定理的内容,本节中我们将通过数学推导来证明它。我们将使用矩母函数这一工具,并借助洛必达法则来完成证明。
概述
中心极限定理指出,对于独立同分布的随机变量,其标准化和的分布随着样本量的增加,会趋近于标准正态分布。我们将通过证明其累积分布函数的收敛性来证实这一点。
证明思路与定义
我们有一系列独立同分布的随机变量 X₁, X₂, X₃, ...,其均值为 μ = 0,标准差为 σ = 1。我们定义标准化和 Zₙ 为:
Zₙ = (X₁ + X₂ + ... + Xₙ) / √n

我们的目标是证明,当 n → ∞ 时,Zₙ 的分布趋近于标准正态分布 N(0, 1)。我们将通过证明其累积分布函数 F_{Zₙ}(x) 收敛于标准正态分布的累积分布函数 Φ(x) 来实现。
F_{Zₙ}(x) = P(Zₙ ≤ x)
Φ(x) = (1/√(2π)) ∫_{-∞}^{x} e^{-t²/2} dt
这种收敛被称为“依分布收敛”。
矩母函数简介
为了证明,我们将使用矩母函数。矩母函数是概率论中的一个有力工具,它能简化独立随机变量和的分布分析。
以下是矩母函数的关键性质:
- 定义:随机变量 X 的矩母函数 M_X(t) 定义为 E[e^{tX}]。
- 线性变换:对于常数 a,有 M_{aX}(t) = M_X(at)。
- 独立和:若 X 与 Y 独立,则 M_{X+Y}(t) = M_X(t) * M_Y(t)。
- 矩的生成:M_X^{(n)}(0) = E[X^n],即 n 阶导数在 0 点的值等于 n 阶矩。
- 标准正态分布的MGF:若 Z ~ N(0,1),则其矩母函数为 M_Z(t) = e^{t²/2}。
我们将利用一个关键结论:如果一系列随机变量的矩母函数收敛于某个随机变量的矩母函数,并且在收敛点对应的累积分布函数是连续的,那么它们的累积分布函数也会收敛。

证明过程

我们的计划是证明 Zₙ 的矩母函数 M_{Zₙ}(t) 收敛于标准正态分布的矩母函数 e^{t²/2}。
首先,写出 Zₙ 的矩母函数。由于 Zₙ 是独立随机变量的和,其矩母函数是各个随机变量矩母函数的乘积:

M_{Zₙ}(t) = [M_X(t/√n)]^n
这里 M_X(t) 是 X_i 共同的矩母函数。
因此,我们需要证明的极限是:
lim_{n→∞} [M_X(t/√n)]^n = e^{t²/2}
为了处理这个 n 次幂,我们考虑对其取自然对数,等价地证明:

lim_{n→∞} n * ln[M_X(t/√n)] = t²/2
我们已知 M_X(0) = 1(因为 E[e^{0*X}] = 1),且 M_X'(0) = E[X] = 0。
令 u = 1/√n,则当 n → ∞ 时,u → 0⁺。原极限变为:
lim_{u→0⁺} [ln M_X(tu)] / u²
这是一个 0/0 型未定式,可以应用洛必达法则。
第一次应用洛必达法则:

lim_{u→0⁺} [d/du ln M_X(tu)] / [d/du u²] = lim_{u→0⁺} [ (M_X'(tu) * t) / M_X(tu) ] / (2u) = (t/2) * lim_{u→0⁺} [ M_X'(tu) / (u * M_X(tu)) ]
由于 M_X(0)=1 且 M_X'(0)=0,分子分母仍趋于0,需再次应用洛必达法则。
第二次应用洛必达法则,对分子 M_X'(tu) 和分母 u * M_X(tu) 分别求导(关于 u):
- 分子导数:M_X''(tu) * t
- 分母导数:M_X(tu) + u * M_X'(tu) * t
因此,极限变为:
(t/2) * lim_{u→0⁺} [ M_X''(tu) * t ] / [ M_X(tu) + u * M_X'(tu) * t ]
代入 u = 0:
- M_X''(0) = E[X²] = σ² = 1(因为方差为1)
- M_X(0) = 1
- M_X'(0) = 0
所以极限值为:
(t/2) * [ (1 * t) / (1 + 0) ] = t²/2
这就证明了 lim_{n→∞} n * ln[M_X(t/√n)] = t²/2,从而 lim_{n→∞} [M_X(t/√n)]^n = e^{t²/2}。

结论与推广
因此,我们证明了 Zₙ 的矩母函数收敛于标准正态分布的矩母函数。根据矩母函数与累积分布函数收敛性的关系,可以得出 Zₙ 的累积分布函数 F_{Zₙ}(x) 收敛于标准正态分布的累积分布函数 Φ(x)。即:
Zₙ → N(0, 1) in distribution

对于更一般的情况,若随机变量 X_i 具有均值 μ 和方差 σ²,我们可以构造 Zₙ = (ΣX_i - nμ) / (σ√n),同样的证明过程(经过适当的缩放平移)将显示其收敛于 N(0,1)。
中心极限定理是统计学的基石,它解释了为何正态分布在自然界和科学实验中如此普遍。定理可以进一步推广到非独立同分布、多维随机变量等更一般的情形。
总结

本节课中我们一起学习了中心极限定理的证明。我们通过定义标准化和 Zₙ,利用矩母函数的性质将其和的矩母函数转化为乘积形式,并通过取对数和两次应用洛必达法则,证明了其矩母函数收敛于标准正态分布的矩母函数 e^{t²/2},从而完成了定理的证明。这个证明过程展示了概率论中如何将复杂的分布收敛问题转化为更易处理的函数极限问题。
048:统计学入门 🎯
在本节课中,我们将从概率论过渡到统计学。我们将探讨如何从现实世界的不完美数据中,推断出潜在分布或总体的特性。
上一节我们介绍了概率论,其中我们定义了精确的分布(如均匀分布、几何分布),并分析了其性质。本节中我们来看看统计学,它处理的是来自现实世界、不完全符合预设模型的样本数据。
从概率到统计 🔄

在概率论中,我们假设一个已知的分布,然后推导其样本的性质。例如,对于一个分布,我们可以定义其均值 μ 为:
μ = Σ [x * P(x)]
然后我们说,如果取很多样本,样本的平均值将大致等于 μ。
在统计学中,过程是相反的。我们获得样本,并希望从这些样本中推断出分布的性质或其参数。例如,我们想推断分布的均值、标准差,或者判断它属于哪种分布类型(高斯分布、几何分布等)。

分布参数与总体参数 📊
大多数分布族由参数决定。例如:
- 伯努利分布由成功概率 p 决定。
- 二项分布由 p 和试验次数 n 决定。
- 泊松分布由均值参数 λ 决定。
参数也可以更广泛地看作是分布的任意确定性函数,有时也称为分布的性质。例如,分布的均值、方差、标准差、最小值、最大值、众数或中位数。


我们的目标是通过从分布中抽样来估计这些参数。我们用 P(离散分布的PMF)或 F(连续分布的PDF)表示分布。
然后,我们从中抽取独立样本,记为 X^n(即 X1, X2, ..., Xn),它们独立同分布于 P 或 F。
从总体中抽样 👥
通常,我们更关心的是从总体中推断性质。总体是对象的集合(例如,一所大学的所有学生)。我们不想调查整个总体,而是从中抽取一小部分样本(样本量 n 远小于总体大小)。
以下是此过程的关键点:
- 我们从总体中随机抽取 n 个对象。
- 目标是利用这个样本来推断总体的参数(例如,所有学生的平均身高)。
虽然从总体中抽样(通常无放回)与从分布中独立抽样在技术上略有不同,但当样本量 n 远小于总体规模时,重复抽取同一个体的概率很小。因此,我们可以近似地将其视为独立抽样。在这个假设下,估计总体参数的问题就转化为了估计分布参数的问题。

统计量 📈

当我们获得一个样本后,我们会查看数据的函数。任何基于样本数据的函数都称为统计量。例如:
- 样本中所有值的平均值(样本均值)。
- 样本中观测到的最大值。
我们希望通过这些统计量来推断分布或总体的性质。例如,我们可能想用样本均值来估计分布的真实均值,或者用样本最大值来估计总体中的最大值。
在接下来的课程中,我们将探讨如何有效地进行这种推断。下一讲,我们将从可能最简单的问题开始:如何估计一个分布的均值。

本节课中我们一起学习了统计学的基本目标:从样本数据推断总体或分布的性质。我们理解了概率(从模型到数据)与统计(从数据到模型)的对偶关系,认识了分布参数与总体参数的概念,并了解了通过抽样和构建统计量进行推断的基本框架。
049:均值与方差 📊
在本节课中,我们将学习参数估计的基本概念,特别是如何估计一个分布的均值。我们将介绍什么是估计量,如何评估估计量的好坏,并通过一个具体的例子——样本均值——来演示这些概念。
参数估计与估计量
上一节我们介绍了参数估计的目标。本节中,我们来看看如何构建一个估计量。

我们从总体或分布中抽取一个样本,这个样本是独立同分布的随机变量序列,记作 X^N = (X₁, X₂, ..., Xₙ)。我们的目标是估计分布的一个参数 θ,例如均值、标准差或最大值。

我们通过一个估计量来实现。参数 θ 的估计量 θ̂ 是一个函数,它将我们观测到的 n 个样本值映射为一个实数,作为参数的估计值。
公式:θ̂ = f(X₁, X₂, ..., Xₙ)

例如,我们可以取观测值的最大值或平均值作为估计量。当我们观测到具体的样本序列 x^N 时,我们将函数 θ̂ 应用于它,得到估计值。由于样本是随机的,因此估计量 θ̂ 本身也是一个随机变量。
评估估计量:偏差与方差
我们已经知道如何构建估计量。接下来,我们需要评估一个估计量的质量。以下是两个关键的评估指标。
- 偏差:估计量的期望值与真实参数值之间的差异。
公式:Bias(θ̂) = E[θ̂] - θ
如果偏差为0,则称该估计量为无偏估计量。

- 方差:估计量自身的离散程度。
公式:Var(θ̂) = E[(θ̂ - E[θ̂])²]
理想情况下,我们希望估计量同时具有零偏差和零方差,但这通常难以实现。因此,我们需要在偏差和方差之间进行权衡。
综合评估:均方误差
由于偏差和方差是两个独立的指标,为了综合评估估计量的性能,我们引入均方误差。
均方误差衡量的是估计值与真实参数值之间的平均平方距离。
公式:MSE(θ̂) = E[(θ̂ - θ)²]
一个重要的结论是,均方误差可以分解为偏差的平方加上方差。
公式:MSE(θ̂) = [Bias(θ̂)]² + Var(θ̂)

这个关系式表明,一个好的估计量需要在偏差和方差之间取得平衡。
一个通用方法:样本X法
面对一个需要估计的参数,我们如何构造一个估计量呢?这里介绍一个简单通用的方法——样本X法。

其核心思想是:对于总体分布的某个性质(例如最小值、最大值、均值),我们对观测到的样本计算同样的性质,并将其作为该参数的估计量。
- 若要估计总体最小值 x_min,则使用样本最小值。
- 若要估计总体最大值 x_max,则使用样本最大值。
- 若要估计总体均值 μ,则使用样本均值。
这种方法通常能提供有效的估计量。

核心案例:估计均值
现在,让我们应用以上概念来详细分析一个具体案例:使用样本均值估计总体均值。
假设我们有一个未知分布 P,其均值为 μ,方差为 σ²。我们独立抽取 n 个样本 X₁, ..., Xₙ。根据样本X法,我们使用样本均值作为 μ 的估计量:
公式:X̄ = (1/n) * Σᵢ Xᵢ

样本均值的偏差
首先计算样本均值的期望值:
E[X̄] = E[(1/n) Σ Xᵢ] = (1/n) Σ E[Xᵢ] = (1/n) Σ μ = μ
因此,样本均值的偏差为:
Bias(X̄) = E[X̄] - μ = μ - μ = 0
这表明样本均值是总体均值的一个无偏估计量。
样本均值的方差
接下来计算样本均值的方差。利用样本的独立性:
Var(X̄) = Var((1/n) Σ Xᵢ) = (1/n²) Σ Var(Xᵢ) = (1/n²) Σ σ² = σ² / n
其标准差为 σ / √n。可以看到,估计量的方差随着样本量 n 的增加而减小。
样本均值的均方误差
由于偏差为0,样本均值的均方误差就等于其方差:
MSE(X̄) = [Bias(X̄)]² + Var(X̄) = 0 + σ²/n = σ²/n
这个结果非常简洁:估计的精度(MSE)取决于总体本身的方差 σ² 和样本量 n,而与总体的大小无关。这意味着,只要样本量足够,估计一个班级的平均身高和估计全国的平均身高可以达到相同的精度。
实验观察

通过模拟实验可以直观验证上述理论:
- 从一个均值为0、标准差为1的正态分布中反复抽取样本(例如样本量n=5),并计算每次的样本均值。
- 将这个过程重复多次(例如3000次),绘制出这些样本均值的分布。
- 可以观察到,这个分布的均值大约在0附近(无偏性),并且分布较宽(方差较大)。
- 如果将样本量增加到n=50,重复上述实验,会发现样本均值的分布变得更为集中(方差减小),但其中心依然在0附近。
这生动地展示了大数定律在起作用:随着样本量增加,样本均值以更高的概率接近真实总体均值。
总结

本节课中,我们一起学习了参数估计的基础知识:
- 我们定义了估计量,它是一个将样本数据映射为参数估计值的函数。
- 我们介绍了评估估计量质量的三个核心指标:偏差、方差和均方误差,并知道了它们之间的关系(MSE = 偏差² + 方差)。
- 我们学习了一个构造估计量的通用方法——样本X法。
- 我们深入分析了一个经典案例:使用样本均值估计总体均值。我们证明了样本均值是无偏的,计算了它的方差和均方误差,并通过模拟实验观察了其性质。
下一节课,我们将把注意力转向另一个重要参数——方差,并学习如何估计它。
050:方差估计 📊
在本节课中,我们将学习如何估计一个未知分布的方差。上一节我们介绍了如何估计分布的均值,本节中我们来看看如何估计方差。我们将遵循早期数据科学家夏洛克·福尔摩斯的思路,展示一种近乎基础的方法。
首先,我们定义一个自然的估计量,并探讨两种计算方式。接着,我们将检验这个估计量是否存在偏差,并揭示一个将在下一讲中解决的小谜题。
估计方差的方法
我们有一个未知的总体分布 $ P $,其均值 $ \mu $ 和方差 $ \sigma^2 $ 均未知。上一讲我们学习了如何估计均值,现在希望估计方差。

我们的做法是:从该分布中抽取一个包含 $ n $ 个观测值的样本 $ X_1, X_2, ..., X_n $。每个 $ X_i $ 都独立地服从分布 $ P $。由于我们不知道分布 $ P $,无法通过计算 $ \sum P(x) \cdot x $ 等方式直接得到均值,因此需要用样本信息来学习。我们将用样本均值来近似总体期望,因为期望本质上是大量样本平均值的代表。
对于均值,我们知道每个 $ X_i $ 的期望 $ E[X_i] = \mu $。因此,我们取多个样本并计算样本均值:
对于方差,我们观察到 $ E[(X_i - \mu)^2] = \sigma^2 $ 就是总体方差。但我们无法直接获取概率分布。因此,我们再次利用样本,计算样本方差来代替总体方差。
样本方差定义为每个观测值与样本均值之差的平方的平均值:
注意,我们不知道真实的 $ \mu $,所以用样本均值 $ \bar{X} $ 代替。我们称这个量为“原始”样本方差(加引号以示特殊),稍后会解释原因。同时,样本方差本身也是一个随机变量,每次抽样都会得到不同的值。这是我们对方差 $ \sigma^2 $ 的估计。
计算样本方差示例
让我们通过一个具体例子来演示如何计算样本方差。我们将多次计算,每次稍作修改,本节是第一次计算。
假设我们有一个包含5个观测值的样本,即 $ n = 5 $,样本值为:2, 1, 4, 2, 6。
首先计算样本均值:
这是我们对该分布均值的估计。


接着计算“原始”样本方差:
这是我们对方差的估计。
注意这里的类比:总体方差是 $ E[(X - \mu)^2] $,而我们做的是 $ (X - \hat{\mu})^2 $ 的样本平均。回忆一下,方差还有另一种计算方式:$ \text{Var}(X) = E[X^2] - (E[X])^2 $。我们有理由假设样本方差也存在类似的简化公式。
样本方差的单次遍历计算法
确实,样本方差有另一种计算方式,可以减少减法运算次数,并且可以单次遍历样本完成计算。

推导过程如下。考虑求和项:
展开平方:
拆开求和:
注意 $ \bar{X} $ 不依赖于 $ i $,可以提到求和外面。并且 $ \sum X_i = n\bar{X} \(,\) \sum \bar{X}^2 = n\bar{X}^2 $。代入得:
因此,样本方差可以写为:
这个公式允许我们单次遍历样本:遍历时累加 $ X_i $ 和 $ X_i^2 $,最后用累加的 $ \sum X_i^2 $ 除以 $ n $ 再减去 $ \bar{X}^2 $ 即可。
让我们用之前的例子验证一下。样本为:2, 1, 4, 2, 6。
- $ \sum X_i^2 = 4 + 1 + 16 + 4 + 36 = 61 $
- $ \frac{1}{n} \sum X_i^2 = 61 / 5 = 12.2 $
- $ \bar{X}^2 = 3^2 = 9 $
- $ S^2_{\text{raw}} = 12.2 - 9 = 3.2 $
结果与之前一致。

样本方差是否有偏?
比如何计算更有趣的问题是:样本方差 $ S^2_{\text{raw}} $ 是否是总体方差 $ \sigma^2 $ 的无偏估计?
对于均值,样本均值 $ \bar{X} $ 是无偏的,即 $ E[\bar{X}] = \mu \(。对于方差,\) \sigma^2 = E[(X - \mu)^2] $。很自然地,我们取多个样本,对每个样本计算 $ (X - \bar{X})^2 $ 再取平均,并希望它能收敛到 $ \sigma^2 $。因此,似乎有理由认为样本方差也是无偏的。
但事实果真如此吗?我们还没有证明。让我们引用夏洛克·福尔摩斯在《血字的研究》中的一句话:“在掌握所有证据之前就进行理论假设,是一个严重的错误,因为它会使判断产生偏差。” 我们想看看样本方差是否有偏,而福尔摩斯会用放大镜寻找更多证据。在21世纪,我们的“放大镜”就是模拟。
我们的模拟计划是:选择一个已知方差的分布,从中生成 $ n $ 个观测值 $ X_1, ..., X_n $,计算样本方差 $ S^2_{\text{raw}} $,然后检查 $ E[S^2_{\text{raw}}] $ 是否等于已知的总体方差。由于期望是随机变量多次重复的平均值,我们将进行多次独立实验(每次实验得到一个包含 $ n $ 个观测值的样本并计算其样本方差),然后计算这些样本方差的平均值。根据大数定律,这个平均值将收敛到 $ E[S^2_{\text{raw}}] $。最后,我们将这个平均值与真实的总体方差进行比较。
以下是两个分布的模拟结果:

- 正态分布 $ N(0, 16) $:方差为16。我们取 $ n=2 $,进行100,000次实验。结果显示,样本方差的平均值(红色线)约为8,大约是真实方差(绿色线,16)的一半。
- 指数分布 $ \text{Exp}(2) $:方差为 $ 1/4 = 0.25 $。同样取 $ n=2 $,进行100,000次实验。结果显示,样本方差的平均值约为0.125,同样是真实方差(0.25)的一半。
模拟结果表明,样本方差似乎是有偏的,其期望值大约是真实方差的一半。为了得到确切结论,我们需要进行解析计算。
解析计算:伯努利分布案例
我们选择最简单的伯努利分布进行精确计算。设 $ P(X=1)=p \(,\) P(X=0)=q=1-p $,其方差为 $ \sigma^2 = pq $。我们取样本量 $ n=2 $,观测值为 $ X_1, X_2 $。
我们需要计算样本方差 $ S^2_{\text{raw}} $ 在所有可能样本组合下的期望值。以下是所有可能情况:
| $ X_1, X_2 $ | 概率 | 样本均值 $ \bar{X} $ | 样本方差 $ S^2_{\text{raw}} $ |
|---|---|---|---|
| (0, 0) | $ q^2 $ | 0 | $ \frac{1}{2}[(0-0)2+(0-0)2] = 0 $ |
| (0, 1) | $ qp $ | 0.5 | $ \frac{1}{2}[(0-0.5)2+(1-0.5)2] = 0.25 $ |
| (1, 0) | $ pq $ | 0.5 | $ \frac{1}{2}[(1-0.5)2+(0-0.5)2] = 0.25 $ |
| (1, 1) | $ p^2 $ | 1 | $ \frac{1}{2}[(1-1)2+(1-1)2] = 0 $ |
现在计算 $ S^2_{\text{raw}} $ 的期望值:
而真实方差 $ \sigma^2 = pq \(。因此,\) E[S^2_{\text{raw}}] = \frac{\sigma^2}{2} $。

这个解析结果证实了我们的模拟观察:对于 $ n=2 $ 的情况,样本方差的期望值确实是总体方差的一半,而不是等于总体方差。这意味着我们定义的“原始”样本方差是一个有偏估计量。
总结与展望
本节课我们一起学习了方差估计。
我们首先定义了一个自然的估计量——“原始”样本方差 $ S^2_{\text{raw}} = \frac{1}{n} \sum (X_i - \bar{X})^2 $,并介绍了两种计算方法:直观的双次遍历法(先求均值,再求差方和)和高效的单次遍历法(利用公式 $ \frac{1}{n}\sum X_i^2 - \bar{X}^2 $)。

接着,我们探讨了这个估计量是否有偏。通过模拟(正态分布和指数分布)以及对伯努利分布的精确计算,我们发现对于样本量 $ n=2 $ 的情况,$ E[S^2_{\text{raw}}] = \frac{\sigma^2}{2} $。更一般地,对于任意 $ n $,有 $ E[S^2_{\text{raw}}] = \frac{n-1}{n} \sigma^2 $(当 $ n=2 $ 时即为一半)。
这引出了新的问题:为什么会出现因子 $ \frac{n-1}{n} $?我们能否构造一个无偏的方差估计量?在下一讲中,我们将推导方差的无偏估计量,并深入分析其性质。
051:无偏估计 📊
在本节课中,我们将要学习方差的无偏估计。我们将评估上节课介绍的原始方差估计量的偏差,理解其行为,并最终描述一个无偏估计量。这将帮助我们解开“为什么分母是n-1而不是n”的谜团,并澄清一个常见的误解。
偏差的来源与初步解释
上一节我们介绍了样本均值是总体均值的无偏估计。本节中,我们来看看方差的估计情况。
我们定义原始样本方差为:
s^2 = (1/n) * Σ (X_i - X̄)^2
其中,X̄ 是样本均值。

通过实验和简单计算,我们发现这个原始样本方差的期望值并不是总体方差 σ^2,而是 (n-1)/n * σ^2。因此,这个估计量是有偏的,它倾向于低估真实的方差。
以下是关于这种低估的一个初步(但不完整)的解释:
- 核心观察:给定一组数据点
X_1, ..., X_n,平方和Σ (X_i - a)^2在a等于样本均值X̄时达到最小。 - 与真实方差的对比:真实方差计算的是
(X_i - μ)^2的期望,其中μ是固定的总体均值。而样本方差计算的是(X_i - X̄)^2,其中X̄是样本数据的平均值。由于X̄是为了最小化样本内的平方和而“定制”的,因此Σ (X_i - X̄)^2通常会小于Σ (X_i - μ)^2。这就解释了为什么原始样本方差会偏小。
然而,这个解释只说明了偏差的存在,并没有精确地解释为什么偏差因子恰好是 (n-1)/n。它只是一个“半真相”。

精确计算原始样本方差的期望


为了精确理解偏差,让我们来计算原始样本方差 s^2 的数学期望 E[s^2]。
首先,利用期望的线性性质和样本的对称性,我们可以将复杂的求和式简化:
E[s^2] = E[ (1/n) * Σ (X_i - X̄)^2 ] = E[ (X_1 - X̄)^2 ]
这个简化非常关键,它让我们只需关注单个样本点 X_1 与样本均值 X̄ 的差距。

我们的目标是证明:
E[ (X_1 - X̄)^2 ] = (n-1)/n * σ^2
为了建立联系,我们将 (X_1 - X̄) 与 (X_1 - μ) 关联起来。关键在于将 X_1 从样本均值 X̄ 中“解耦”出来:
X_1 - X̄ = X_1 - (X_1 + X_2 + ... + X_n)/n = ((n-1)/n) * (X_1 - (X_2+...+X_n)/(n-1))
令 Y = (X_2+...+X_n)/(n-1),它是除去 X_1 后剩余样本的均值。则:
X_1 - X̄ = ((n-1)/n) * (X_1 - Y)
现在,对两边取平方的期望:
E[(X_1 - X̄)^2] = ((n-1)/n)^2 * E[(X_1 - Y)^2]
注意,X_1 和 Y 是独立的,且 E[X_1] = μ, E[Y] = μ。因此 (X_1 - Y) 的均值为0,其平方的期望就是它的方差:
E[(X_1 - Y)^2] = Var(X_1 - Y)
由于独立性,Var(X_1 - Y) = Var(X_1) + Var(Y)。
Var(X_1) = σ^2Y是(n-1)个独立同分布随机变量的均值,因此Var(Y) = σ^2/(n-1)
所以:
E[(X_1 - Y)^2] = σ^2 + σ^2/(n-1) = (n/(n-1)) * σ^2
将其代回原式:
E[(X_1 - X̄)^2] = ((n-1)/n)^2 * (n/(n-1)) * σ^2 = (n-1)/n * σ^2
因此,我们最终证明了:
E[s^2] = (n-1)/n * σ^2
构建无偏估计量:贝塞尔校正
既然我们知道了原始样本方差 s^2 的期望是 (n-1)/n * σ^2,那么构造一个无偏估计量就很简单了:只需将 s^2 乘以 n/(n-1) 即可。
我们定义(无偏)样本方差 S^2 为:
S^2 = (n/(n-1)) * s^2 = (1/(n-1)) * Σ (X_i - X̄)^2
显然,E[S^2] = (n/(n-1)) * E[s^2] = (n/(n-1)) * ((n-1)/n * σ^2) = σ^2。因此,S^2 是总体方差 σ^2 的一个无偏估计量。
这也就解开了最初的谜团:在计算样本方差时,我们除以 (n-1) 而不是 n,这个操作被称为贝塞尔校正。它校正了因为使用样本均值 X̄(而不是真实均值 μ)作为参考点所带来的系统性低估。
实例与模拟验证
让我们通过一个具体例子和模拟来巩固理解。
计算示例:
假设我们有一个样本:[2, 1, 1, 4, 6]。
- 样本均值
X̄ = (2+1+1+4+6)/5 = 2.8。 - 原始样本方差
s^2 = [(2-2.8)^2 + (1-2.8)^2 + (1-2.8)^2 + (4-2.8)^2 + (6-2.8)^2] / 5 = 3.36。 - 无偏样本方差
S^2 = 3.36 * (5/4) = 4.2,或者直接计算:S^2 = 上述平方和 / 4 = 16.8 / 4 = 4.2。

模拟验证:
我们可以用Python进行模拟。从标准正态分布 N(0,1)(方差 σ^2=1)中重复抽取样本。
- 每次抽取一个大小为
n的样本。 - 计算该样本的无偏方差
S^2。 - 重复很多次(例如3000次),计算所有这些
S^2值的平均值。
模拟结果会显示,这个平均值非常接近1,从而验证了 S^2 的无偏性。当样本量 n 很小时,单次估计的波动很大,但大量重复后的平均值会稳定在理论值附近。
总结
本节课中我们一起学习了方差的无偏估计。
- 我们首先指出,直接使用样本内平方和除以
n得到的原始样本方差s^2是一个有偏估计,其期望为(n-1)/n * σ^2。 - 我们通过严谨的数学推导证明了这一偏差因子。
- 为了获得无偏估计,我们引入了贝塞尔校正,定义了无偏样本方差
S^2 = (1/(n-1)) * Σ (X_i - X̄)^2,并证明了E[S^2] = σ^2。 - 这解释了在统计学中,计算样本方差时通常除以
n-1而非n的根本原因,它校正了因使用样本均值而损失的一个“自由度”。

下一节,我们将探讨如何估计标准差。
052:标准差估计 📊
在本节课中,我们将学习如何估计数据的标准差。我们将从描述一个简单的标准差估计量开始,评估其偏差,并探讨是否存在无偏的标准差估计量。最后,我们会讨论偏差并非总是坏事,并介绍一致性估计的概念。
估计标准差
上一节我们介绍了方差的估计。本节中我们来看看如何估计标准差。
我们上次提出了一个简单的方差估计量,称为 S²。其公式为:
S² = (1/(n-1)) * Σ (X_i - X̄)²
其中,X̄ 是样本均值。我们通过除以 n-1 而非 n 来使其成为方差 σ² 的无偏估计量,即 E[S²] = σ²。
标准差 σ 是方差的平方根。因此,一个非常自然的估计量就是方差估计量的平方根,我们称之为标准估计量:
S = √(S²) = √( (1/(n-1)) * Σ (X_i - X̄)² )
以下是一个简单的计算示例。假设我们有一个包含5个观测值的样本:[2, 1, 4, 2, 6]。
- 计算样本均值
X̄ = 3。 - 计算
S² = (1/4) * [(2-3)² + (1-3)² + (4-3)² + (2-3)² + (6-3)²] = 4。 - 因此,标准差的估计值
S = √4 = 2。
评估估计量的偏差
一个很自然的问题是:这个估计量 S 是无偏的吗?换句话说,E[S] 是否等于 σ?
我们可以利用方差的定义来分析。回忆一下,对于任何随机变量 Y,有 Var(Y) = E[Y²] - (E[Y])²。将其应用于我们的估计量 S:
Var(S) = E[S²] - (E[S])²
由于方差 Var(S) 总是非负的,我们可以得到:
E[S²] >= (E[S])²
我们知道 S² 是方差的无偏估计,即 E[S²] = σ²。代入上式:
σ² >= (E[S])²
对两边取平方根(注意取正值):
σ >= E[S]
这个结果表明,估计量 S 的期望值 E[S] 通常小于或等于真实的标准差 σ。仅当 S 是常数(即所有观测值相同)时,等号成立。因此,S 系统地低估了标准差 σ,我们说 S 是一个有偏估计量。
为了更具体地说明这一点,让我们看一个伯努利分布的例子。
伯努利分布示例
考虑一个伯努利分布 Bernoulli(p),其标准差为 σ = √(p(1-p))。我们取样本量 n=2,并计算估计量 S 的期望值 E[S]。
以下是所有可能的样本组合及其对应的 S 值计算:
| X1 | X2 | 概率 | 样本均值 | S² | S |
|---|---|---|---|---|---|
| 0 | 0 | (1-p)² | 0 | 0 | 0 |
| 0 | 1 | p(1-p) | 0.5 | 0.5 | 1/√2 |
| 1 | 0 | p(1-p) | 0.5 | 0.5 | 1/√2 |
| 1 | 1 | p² | 1 | 0 | 0 |
现在计算 E[S]:
E[S] = (1-p)² * 0 + p(1-p) * (1/√2) + p(1-p) * (1/√2) + p² * 0
= √2 * p(1-p)
将其与真实标准差 σ = √(p(1-p)) 比较。由于 √2 * p(1-p) < √(p(1-p)) 对于所有 0 < p < 1 成立(除了 p=0 或 p=1 的平凡情况),我们再次验证了 E[S] < σ,即 S 是有偏的,且倾向于低估。
是否存在无偏的标准差估计量?
既然标准估计量 S 是有偏的,一个很自然的问题是:我们能否找到一个对任何分布都无偏的标准差估计量?即,是否存在一个估计量 σ̂,使得对于所有分布 P,都有 E[σ̂] = σ?
答案是:不可能。
我们可以通过一个简单的反证法来说明这一点,仅考虑伯努利分布族 Bernoulli(p) 就足够了。如果对于这个简单的分布族都无法找到无偏估计量,那么对于所有分布就更不可能了。
证明思路如下:
- 假设存在一个无偏估计量
σ̂(X1, X2),对于样本量n=2。 - 计算它的期望值
E[σ̂]。这将是一个关于概率p的表达式,具体形式是(1-p)²*a + p(1-p)*b + p(1-p)*c + p²*d,其中a, b, c, d是估计量在四种可能样本结果下输出的常数。这是一个关于p的多项式。 - 然而,真实的标准差
σ = √(p(1-p))并不是一个关于p的多项式。 - 一个多项式不可能在所有
p值上都等于一个非多项式。因此,对于某些p值,E[σ̂]必然不等于σ。 - 这与
σ̂是无偏估计量的假设矛盾。因此,这样的无偏估计量不存在。
这个证明巧妙地利用了数学形式上的矛盾,展示了寻找通用无偏标准差估计量的不可行性。
偏差并非世界末日
虽然我们找不到一个完美的无偏估计量,但这并不意味着世界末日。在统计学中,偏差只是评估估计量质量的其中一个方面。
首先,我们常用的估计量 S 虽然是有偏的,但它是一个一致估计量。这意味着随着样本量 n 的增大,S 的值会越来越接近真实的标准差 σ。在大多数实际应用中,只要我们有足够的数据,这个估计就是足够好的。
其次,在衡量估计量整体好坏时,我们经常使用均方误差,它同时考虑了偏差和方差。有时,一个略有偏差但方差很小的估计量,其均方误差可能比一个无偏但方差很大的估计量更小,从而总体表现更好。
因此,尽管标准估计量 S 不是无偏的,但它仍然是实践中估计标准差的一个可靠且常用的工具。
总结
本节课中我们一起学习了标准差的估计。
- 我们介绍了标准差的标准估计量
S,它是样本方差S²的平方根。 - 我们通过数学推导和伯努利分布的例子,证明了
S是一个有偏估计量,通常会低估真实的标准差。 - 我们探讨了是否存在一个通用的无偏标准差估计量,并利用反证法证明了这是不可能的。
- 最后,我们了解到偏差并非评估估计量的唯一标准,
S作为一致估计量,在大样本下会趋近于真实值,在实践中非常有用。


下一节,我们将进入一个新的重要主题:置信区间。
053:均值置信区间 📊

在本节课中,我们将学习如何为总体均值构建置信区间。我们将从点估计(给出一个具体数值)转向区间估计(给出一个范围),并说明我们对该范围包含真实参数的置信度。
从点估计到区间估计
上一节我们介绍了参数估计,目标是找到参数的最佳单一估计值。本节中,我们来看看如何不追求一个精确值,而是构建一个我们相当有信心包含真实参数的区间。
- 点估计(如均值估计为3.14)非常精确,但几乎可以肯定是错误的。
- 区间估计(如均值在3.1到3.18之间)牺牲了部分精度,但增加了我们对估计结果的信心。
我们希望得到类似这样的结论:“我们有95%的置信度,总体均值μ落在区间[3.1, 3.18]内。”这里的置信度可以理解为概率。
理论基础:中心极限定理与正态分布
为了理解置信区间,我们需要回到基础,即中心极限定理。该定理指出,对于足够大的样本量n(通常n≥30),样本均值X̄的分布近似服从正态分布。
具体来说,如果我们有n个独立同分布的随机变量X₁, X₂, ..., Xₙ,其总体均值为μ,标准差为σ,那么样本均值X̄的分布近似为:
X̄ ~ N(μ, σ²/n)
这意味着X̄的期望是μ,其标准差(称为标准误)是σ/√n。这个标准误会随着样本量n的增大而减小。
标准正态分布的区间预测
首先,我们考虑一个简单情况:预测一个标准正态随机变量Z ~ N(0,1)的值。
- 如果进行点估计,最可能的值是0,但这几乎肯定是错的。
- 更好的方法是给出一个区间
[-a, a],并计算Z落在此区间内的概率。
Z落在区间[-a, a]内的概率计算公式为:
P(-a ≤ Z ≤ a) = 2Φ(a) - 1
其中,Φ(a)是标准正态分布的累积分布函数在a处的值。
我们可以使用Python轻松计算Φ(a):
from scipy.stats import norm
# 计算 Φ(1),即 P(Z ≤ 1)
prob = norm.cdf(1)
print(prob) # 输出约为 0.8413
以下是几个常见的概率值(68-95-99.7法则的更精确版本):
P(-1 ≤ Z ≤ 1) ≈ 0.682(68%置信度)P(-1.96 ≤ Z ≤ 1.96) ≈ 0.95(95%置信度)P(-2.576 ≤ Z ≤ 2.576) ≈ 0.99(99%置信度)
构建置信区间:从概率到区间
在实际应用中,我们通常先确定想要的置信水平(例如95%),然后反推出对应的区间边界a。
给定置信水平P,我们需要找到Z_P,使得P(-Z_P ≤ Z ≤ Z_P) = P。
通过公式P = 2Φ(Z_P) - 1,可以推导出:
Z_P = Φ⁻¹((1+P)/2)
我们可以使用Python计算Φ⁻¹(即百分位点函数PPF):
from scipy.stats import norm
# 计算 Z_P,使得 P(-Z_P ≤ Z ≤ Z_P) = 0.95
Z_P = norm.ppf((1 + 0.95) / 2)
print(Z_P) # 输出约为 1.96
常见置信水平对应的Z_P值如下:
- 90% 置信度:
Z_P ≈ 1.645 - 95% 置信度:
Z_P ≈ 1.96 - 98% 置信度:
Z_P ≈ 2.326 - 99% 置信度:
Z_P ≈ 2.576
总体均值的置信区间(σ已知)
现在我们将上述原理应用于总体均值μ的估计。假设我们已知总体标准差σ。
根据中心极限定理,样本均值X̄近似服从N(μ, σ²/n)。因此,(X̄ - μ) / (σ/√n)近似服从标准正态分布N(0,1)。
由此可以推导出,在置信水平P下,总体均值μ的置信区间为:
[ X̄ - Z_P * (σ/√n), X̄ + Z_P * (σ/√n) ]
其中:
X̄是样本均值。Z_P是对应置信水平P的标准正态分布临界值。σ/√n是样本均值的标准误。Z_P * (σ/√n)被称为边际误差。


示例1:计算置信区间
假设推特用户每日推文数的标准差为σ=2。我们抽取了n=121名用户,得到样本均值X̄=3.7。求总体均值μ的95%置信区间。
计算步骤:
- 确定
Z_P:对于95%置信度,Z_P = 1.96。 - 计算标准误:
σ/√n = 2 / √121 = 2/11 ≈ 0.1818。 - 计算边际误差:
Z_P * (σ/√n) = 1.96 * (2/11) ≈ 0.356。 - 构建区间:下限
3.7 - 0.356 = 3.344,上限3.7 + 0.356 = 4.056。
结论: 我们有95%的置信度认为,所有推特用户日均推文数的总体均值在3.344到4.056条之间。
示例2:确定所需样本量
有时我们需要先确定边际误差和置信水平,然后反推需要多大的样本量。
假设成人静息心率的标准差σ=7.5次/分钟。我们希望估计总体心率均值,要求边际误差不超过2次/分钟,且置信水平为90%。需要多大的样本量n?
计算步骤:
- 确定
Z_P:对于90%置信度,Z_P = 1.645。 - 根据边际误差公式:
边际误差 = Z_P * (σ/√n) ≤ 2。 - 解出n:
√n ≥ (Z_P * σ) / 2=>n ≥ [(Z_P * σ) / 2]²。 - 代入数值:
n ≥ [(1.645 * 7.5) / 2]² ≈ (12.3375 / 2)² ≈ 38.05。
结论: 我们需要至少抽取39个样本(向上取整),才能以90%的置信度保证估计的边际误差在2次/分钟以内。
总结
本节课中我们一起学习了:
- 置信区间的概念:用一个区间而非单一值来估计参数,并附上置信水平。
- 构建置信区间的理论基础:中心极限定理和标准正态分布的性质。
- 如何计算标准正态分布的累积概率和逆函数(使用
norm.cdf和norm.ppf)。 - 在总体标准差σ已知的情况下,计算总体均值μ的置信区间的公式:
X̄ ± Z_P * (σ/√n)。 - 如何利用该公式进行两个方向的计算:
- 根据样本数据计算置信区间。
- 根据要求的精度(边际误差)和置信水平,确定必要的样本量。

下一讲,我们将探讨当总体标准差σ未知时,如何构建均值的置信区间,这将引入t分布的概念。
054:总体标准差未知时的置信区间(第一部分) 📊
在本节课中,我们将要学习当总体标准差未知时,如何构建置信区间。上一节我们介绍了在已知总体标准差(σ)的情况下构建置信区间的方法。然而,在实际应用中,σ几乎总是未知的。本节中,我们将探讨如何在这种情况下,通过估计标准差并使用学生t分布来构建置信区间。
已知σ时的置信区间回顾 🔄
首先,让我们快速回顾一下已知总体标准差(σ)时的标准方法。
我们定义标准正态分布 Z ~ N(0, 1)。对于一个给定的概率 P(例如0.95),我们可以找到临界值 Z_P,使得 Z 落在 [-Z_P, Z_P] 区间内的概率为 P。其计算公式为:
Z_P = Φ^{-1}((1+P)/2)
其中 Φ 是标准正态分布的累积分布函数(CDF)。
当我们从均值为 μ、标准差为 σ 的总体中抽取 n 个独立同分布样本 X_1, X_2, ..., X_n 时,样本均值 X̄ 的期望和标准差为:
E[X̄] = μ
σ_{X̄} = σ / √n

根据中心极限定理,标准化后的样本均值近似服从标准正态分布:
(X̄ - μ) / (σ/√n) ~ N(0, 1)

因此,我们可以构建置信区间:
μ ∈ [ X̄ - Z_P * (σ/√n), X̄ + Z_P * (σ/√n) ]
其中 Z_P * (σ/√n) 被称为误差幅度。
当σ未知时的问题 ❓
然而,上述方法的核心问题在于,我们几乎永远无法知道真实的总体标准差 σ。因此,我们需要一种新的方法来处理这种不确定性。
引入学生t分布 📈

当σ未知时,一个自然的想法是用样本标准差 S 来估计它。样本方差 S² 的无偏估计为:
S² = (1/(n-1)) * Σ_{i=1}^{n} (X_i - X̄)²

我们用 S 代替 σ 来标准化样本均值,得到一个新的统计量:
T = (X̄ - μ) / (S/√n)
这个统计量不再服从标准正态分布,而是服从学生t分布,其自由度为 ν = n - 1。学生t分布的概率密度函数(PDF)为:
f_ν(t) = (Γ((ν+1)/2)) / (√(νπ) * Γ(ν/2)) * (1 + t²/ν)^{-(ν+1)/2}
其中 Γ 是伽马函数。
以下是关于学生t分布的几个关键点:
- 对称性:它像正态分布一样,关于
t=0对称。 - 与正态分布的关系:当自由度
ν增大时,t分布越来越接近标准正态分布。当n很大时(例如 > 30),两者几乎相同。 - 更宽的尾部:对于较小的样本量(
n小),t分布的尾部比正态分布更厚,这反映了由于估计σ所带来的额外不确定性。
构建置信区间的步骤 📝



现在,我们可以给出当σ未知时,构建置信区间的具体步骤。
以下是构建置信区间的详细步骤:
- 确定临界值
t_{P, ν}:根据所需的置信水平P(如95%)和自由度ν = n-1,查找t分布的临界值。该值满足P(|T| ≤ t_{P, ν}) = P。计算公式为:t_{P, ν} = F_ν^{-1}((1+P)/2),其中F_ν是自由度为ν的t分布的CDF。 - 计算样本均值
X̄:X̄ = (1/n) * Σ_{i=1}^{n} X_i - 计算样本标准差
S:S = √[ (1/(n-1)) * Σ_{i=1}^{n} (X_i - X̄)² ] - 计算误差幅度:
误差幅度 = t_{P, n-1} * (S / √n) - 构建置信区间:
μ ∈ [ X̄ - 误差幅度, X̄ + 误差幅度 ]

应用示例:计算大象鼻子长度的置信区间 🐘
假设我们想估计成年非洲象鼻子的平均长度。我们随机测量了8头大象的鼻子长度(单位:英尺),数据如下:[5.62, 6.07, 5.93, 6.38, 6.15, 5.82, 6.25, 5.48]。我们希望构建一个95%的置信区间。
以下是计算过程:
- 确定临界值:置信水平
P=0.95,样本量n=8,自由度ν=7。计算t_{0.95, 7} = F_7^{-1}((1+0.95)/2) = F_7^{-1}(0.975)。使用Python的scipy.stats.t.ppf(0.975, 7)可得t ≈ 2.3646。 - 计算样本均值:
X̄ = (5.62+6.07+...+5.48)/8 = 6.095 - 计算样本标准差:
S = √[ (1/7)*((5.62-6.095)² + ... + (5.48-6.095)²) ] ≈ 0.4130 - 计算误差幅度:
误差幅度 = 2.3646 * (0.4130 / √8) ≈ 0.3453 - 构建置信区间:
μ ∈ [6.095 - 0.3453, 6.095 + 0.3453] = [5.7497, 6.4403]
因此,我们有95%的信心认为,成年非洲象鼻子的真实平均长度在5.75英尺到6.44英尺之间。

总结与要点 📚
本节课中我们一起学习了当总体标准差未知时构建置信区间的方法。
我们了解到,由于σ未知,需要用样本标准差 S 进行估计,这导致标准化统计量服从学生t分布而非正态分布。我们介绍了学生t分布的特性,并给出了构建置信区间的完整步骤。最后,通过一个测量大象鼻子长度的例子,演示了该方法的具体应用。
关键要点总结如下:
- 核心区别:用
S代替σ,用t分布代替Z分布。 - t分布:形状类似正态但尾部更厚,自由度
ν = n-1。样本量越大,越接近正态分布。 - 更宽的区间:对于小样本,t分布的临界值大于Z分布的临界值,导致置信区间更宽,这合理反映了更大的不确定性。
- 应用前提:本方法在样本数据本身近似服从正态分布时效果最好。对于严重偏离正态的数据,可能需要其他方法。

下一节,我们将开始学习假设检验的基本概念。
055:线性代数回顾 📚

在本节课中,我们将回顾线性代数的核心概念,为后续学习回归分析打下基础。线性代数是理解数据科学中许多高级方法的关键,特别是处理多维数据时。我们将从向量开始,逐步介绍其运算、性质以及如何用它们表示空间。
向量基础
上一节我们介绍了课程目标,本节中我们来看看线性代数的基本元素——向量。向量可以表示箭头、速度、方向或空间中的位置。在数据科学中,向量通常代表一个数据点,其每个分量对应一个特征。
一个二维向量可以表示为平面上的一个箭头,具有方向和长度。例如,向量 a = [1, π] 或 b = [-1.56, 1.2]。更一般地,一个 D 维向量是实数集 R^D 中的一个元素,由 D 个实数组成。
在 Python 中,我们使用 NumPy 数组来处理向量。需要注意的是,数组的“维度”有两种含义:向量本身的维度和数组的数据结构维度。
import numpy as np
# 定义一个四维向量(用一维数组表示)
vector_4d = np.array([1, 2, 3, 4])
# 定义一个 2x2 矩阵(用二维数组表示)
matrix_2x2 = np.array([[1, 2], [3, 4]])
向量运算
理解了向量的表示后,我们来看看能对向量进行哪些基本操作。以下是三种核心运算:
- 向量加法:将两个向量的对应分量相加。要求两个向量维度相同。几何上,这相当于将第二个向量的起点平移到第一个向量的终点。
- 标量乘法:将一个向量乘以一个实数(标量)。这相当于缩放向量的长度,如果标量为负,则方向反转。
- 内积(点积):两个向量的点积运算得到一个标量。计算方式为对应分量相乘后求和。公式为:a · b = Σ (a_i * b_i)。
v1 = np.array([1, 2])
v2 = np.array([-1, 1])
# 向量加法
v_sum = v1 + v2 # 结果为 [0, 3]
# 标量乘法
v_scaled = 0.5 * v1 # 结果为 [0.5, 1.0]
# 内积
dot_product = np.dot(v1, v2) # 结果为 1
向量范数与单位向量
点积引出了一个重要的概念——向量的范数(或长度)。向量的范数衡量其大小。
- 范数计算:向量 v 的范数(通常指 L2 范数)是其与自身点积的平方根。公式为:||v|| = √(v · v)。
- 单位向量:范数为 1 的向量称为单位向量。任何非零向量都可以通过除以自身的范数来“归一化”,从而得到指向相同方向的单位向量。
v = np.array([3, 4])
# 计算范数
norm_v = np.linalg.norm(v) # 结果为 5.0
# 或手动计算:np.sqrt(np.dot(v, v))
# 生成单位向量
unit_v = v / norm_v # 结果为 [0.6, 0.8]
投影与正交性
基于点积和单位向量,我们可以定义投影和正交性,这是理解坐标变换的基础。
- 投影:向量 v 在单位向量 u 方向上的投影是一个新向量,其长度为 v · u,方向与 u 相同。公式为:proj_u(v) = (v · u) * u。
- 正交性:如果两个向量的点积为零,则它们正交(垂直)。即,a · b = 0 ⇔ a 与 b 正交。
标准正交基与基变换
最后,我们将上述概念组合起来,介绍如何用一组向量作为“尺子”来度量整个空间,以及如何在不同的“尺子”系统间转换。
- 标准正交基:一组向量 {u1, u2, ..., uD} 如果满足(1)每个都是单位向量(ui · ui = 1),(2)彼此两两正交(ui · uj = 0, i≠j),则构成空间 R^D 的一个标准正交基。
- 标准基:最常用的基是标准基 e1=[1,0,...], e2=[0,1,...], ...。向量在此基下的坐标就是其本身的分量。
- 基变换与重构:给定一个标准正交基,任何向量 v 都可以唯一地表示为基向量的线性组合。系数通过计算 v 与每个基向量的点积得到(即投影长度)。然后,可以用这些系数和基向量完美地重构出原向量 v:v = Σ (v · ui) * ui。从一个基变换到另一个基称为基变换。

本节课中我们一起学习了线性代数的核心概念:向量的定义与表示、基本运算(加法、标量乘法、点积)、范数与单位向量、投影与正交性,以及最重要的标准正交基与基变换原理。掌握这些知识是理解后续回归分析中矩阵运算和几何解释的关键。在下一个视频中,我们将学习矩阵表示法,它能让我们更简洁地处理大量的向量方程。
056:矩阵表示法与运算

概述
在本节课中,我们将要学习矩阵的基本概念、表示法及其核心运算。矩阵是统计学和数值计算中极为有用的工具,我们将通过Python的NumPy库来演示这些操作。
什么是矩阵?🧮
矩阵本质上是一个由数字组成的矩形阵列。它有水平的行和垂直的列。如果一个矩阵有M行和N列,我们称它为M×N矩阵。
MATLAB大量使用矩阵表示法。在Python中,我们可以通过名为NumPy的库使用非常相似的表示法,这也是我们今天要做的。
矩阵转置
一个非常简单的操作是矩阵转置。假设有一个矩阵A,它有两列三行。它的转置矩阵则有两行三列。本质上,我们交换了行和列,得到了一个新的矩阵,记作 A^T。
以下是在NumPy中如何实现转置的示例。我们有一个2×3的矩阵,取其转置后,得到一个3×2的矩阵。具体代码请下载配套的笔记本来查看。
向量:矩阵的特殊形式
在矩阵表示法中,向量有两种形式:列向量和行向量。列向量中的所有元素垂直排列,而行向量中的所有元素水平排列。
我们可以将向量视为一种特殊的矩阵:列向量是一个D×1的矩阵,而行向量是一个1×D的矩阵。
将矩阵视为向量的集合是矩阵操作强大力量的来源。例如,一个2×3的矩阵可以看作是三个列向量的集合,也可以看作是两个行向量的集合。
以下是我们的矩阵A。以下操作展示了如何将A拆分为三个列向量。现在,我们得到了一个包含三个列向量的列表。我们可以使用concatenate函数将这些列向量重新组合,得到原始矩阵。我们可以检查重构的矩阵与原始矩阵是否相等,结果所有对应项都是True。
矩阵与标量的运算
标量就是一个单一的数字。矩阵与标量相加,意味着将标量加到矩阵的每一个元素上。减法同理。矩阵乘以标量,意味着矩阵的每个元素都乘以该标量。
我们也可以定义除法,例如 a / 5 等价于 a * (1/5),即矩阵的每个元素乘以五分之一。但是,5 / a 是没有定义的。
矩阵与矩阵的运算
首先,矩阵的加法和减法要求两个矩阵形状相同(即行数和列数相同)。然后,我们取对应元素的差,例如 a11 - b11,a12 - b12,依此类推。
接下来,我们讨论矩阵乘法,这是核心操作。让我们从“瘦”矩阵——向量开始。我们知道两个向量的点积计算方式。在矩阵表示法中,有一个约定:点积中的第一个向量必须是行向量,第二个必须是列向量。这个约定虽然看起来有些奇怪,但它能让我们用极简的符号完成非常强大的操作。
现在,让我们看看如何将其推广到非“瘦”矩阵。假设我们想将一个2×3的矩阵乘以一个维度为3的列向量。我们的做法是将矩阵A视为两个行向量的列,然后分别用每个行向量与列向量C做点积,得到结果。
我们甚至可以进一步推广,讨论矩阵与矩阵的乘法。这里有一个三行两列的矩阵A和一个两行三列的矩阵C。我们要计算A和C的乘积。首先需要检查A的列数是否等于C的行数。
为了计算乘积,我们将A视为行向量的列,将C视为列向量的行。当我们计算矩阵A乘以矩阵C时,我们取这些行向量与列向量的点积组合。展开后,你会得到大量的运算项,这也正是矩阵表示法方便之处——我们只需写成 A * C。
正交矩阵与基变换
现在,我们利用矩阵和向量的乘法知识,重新实现上一视频末尾的内容:使用正交矩阵进行基变换。
回忆一下正交基的定义:它是一组D个向量,每个向量的长度为1,且彼此正交。这里我们将使用行向量表示法来表示每个基向量,然后将所有这些行向量组合成一个矩阵。
我们的矩阵U的每一行都是一个正交基向量。要验证这是一组正交基向量,只需计算 U * U^T,并检查结果是否为单位矩阵。单位矩阵是什么?我们接下来会检查。
一旦有了这个表示法,对向量v进行基变换就简化为从左侧用U乘以v:U * v。如果我们想在新基下重构原向量,只需计算 U * U^T * v。正如我们所知,U * U^T 是单位矩阵,因此我们得到v本身。
单位矩阵与矩阵的逆
单位矩阵在矩阵乘法中的作用类似于数字1在标量乘法中的作用。如果用一个矩阵乘以单位矩阵,结果等于原矩阵。单位矩阵是一个方阵,除了主对角线上的元素为1外,其他元素均为0。根据矩阵乘法的定义,可以验证 A * I = I * A = A。
接下来,我们讨论一个更复杂的操作:矩阵求逆。这在下一个视频中会很有用。在标量乘法中,a的逆是 1/a,记作 a^{-1}。a^{-1} 的性质是 a * a^{-1} = 1。并非所有元素都有乘法逆元,例如0就没有。
类似地,某些方阵具有乘法逆矩阵,记作 A^{-1},满足 A * A^{-1} = A^{-1} * A = I(单位矩阵)。寻找矩阵的逆被称为矩阵求逆。
这里给出了一个2×2矩阵求逆的公式。这是一个足够小的矩阵,可以显式写出其逆矩阵。你会发现,本质上交换了 a22 和 a11 的位置,并对 a12 和 a21 取负号,然后除以一个表达式。这个表达式也揭示了矩阵何时没有逆:当 a11*a22 - a12*a21 = 0 时,该矩阵没有逆矩阵。
以下是一些NumPy代码,展示了如何对一个随机的2×2矩阵求逆。你可以看到矩阵C和它的逆矩阵 C_inv。在笔记本中,你可以验证 C 和 C_inv 的点积确实是单位矩阵。
正如所说,并非所有矩阵都有逆矩阵。那些没有逆矩阵的矩阵被称为奇异矩阵。这里有一个奇异矩阵的例子:一个第一行和第二行都是 [1, 0] 的矩阵是奇异的,如果我尝试求逆,会得到一个异常,说明无法对此矩阵求逆。请记住,不是所有矩阵都可逆。

总结
本节课中,我们一起学习了矩阵的基本概念、表示方法以及核心运算,包括转置、标量运算、矩阵加减法、矩阵乘法、单位矩阵和矩阵求逆。我们还了解了如何用矩阵表示正交基并进行基变换。矩阵表示法极大地简化了复杂的线性运算,是数据科学和统计学中不可或缺的工具。在下一个视频中,我们将学习如何利用这些矩阵知识来求解线性方程组。
057:求解线性方程组 📐

在本节课中,我们将学习如何使用矩阵来求解线性方程组。我们将从最简单的两个方程两个未知数的情况开始,了解其几何意义,并学习如何用Python的NumPy库进行计算。
概述
上一节我们介绍了矩阵的基本概念。本节中,我们来看看矩阵的第一个实际应用:求解线性方程组。我们将从一个简单的例子入手,即寻找一条穿过两个给定点的直线,并学习如何将其转化为矩阵问题并求解。
通过两点确定一条直线
线性方程组最简单的形式是包含两个方程和两个未知数。这对应于在平面上找到一条穿过两个给定点的直线。
假设我们有两个点:(-1, 2) 和 (1, 1)。我们的目标是找到一条穿过这两点的直线。
在平面上,任何非垂直的直线都可以用以下表达式表示:
y = w0 + w1 * x
其中,w0 是直线与y轴的截距,w1 是直线的斜率。x 和 y 是直线上点的坐标。
为了找到穿过给定两点的直线,我们需要找到满足这两个点约束条件的 w0 和 w1。
对于点 (-1, 2),代入方程得到:
w0 + w1 * (-1) = 2,即 w0 - w1 = 2
对于点 (1, 1),代入方程得到:
w0 + w1 * 1 = 1,即 w0 + w1 = 1
这样我们就得到了一个包含两个方程和两个未知数的线性方程组。
将方程组写成矩阵形式
我们可以将这个方程组用矩阵形式更简洁地表示出来。
以下是表示方法:
[ 1 -1 ] [ w0 ] = [ 2 ]
[ 1 1 ] [ w1 ] [ 1 ]
如果我们计算第一行和第二行的点积,就能得到之前列出的两个方程。
我们可以将其概括为:
A * w = B
其中:
A是系数矩阵。w是未知的参数向量[w0, w1]。B是因变量或常数项向量[2, 1]。
求解矩阵方程
我们的目标是找到满足 A * w = B 的向量 w。
如果矩阵 A 是方阵且可逆(在本例中正是如此),我们就可以在等式两边同时左乘 A 的逆矩阵 A^{-1}:
A^{-1} * A * w = A^{-1} * B
因为 A^{-1} * A 等于单位矩阵 I,所以左边简化为 w:
w = A^{-1} * B
以下是使用NumPy进行计算的步骤:
首先,定义矩阵 A 和向量 B。
import numpy as np
A = np.array([[1, -1],
[1, 1]])
B = np.array([2, 1])
接着,计算矩阵 A 的逆矩阵。
A_inv = np.linalg.inv(A)
我们可以验证 A_inv 确实是 A 的逆矩阵,因为 A * A_inv 的结果接近单位矩阵。
print(A @ A_inv) # 输出应接近 [[1., 0.], [0., 1.]]
最后,解出向量 w。
w = A_inv @ B
print(w) # 输出: [1.5, -0.5]
或者,NumPy提供了更直接的求解函数 np.linalg.solve。
w = np.linalg.solve(A, B)
print(w) # 输出: [1.5, -0.5]
我们得到的解是 w0 = 1.5, w1 = -0.5。
验证结果并绘图
现在我们已经得到了参数向量 w,可以定义这条直线了。
def line(x):
w0, w1 = w
return w0 + w1 * x
验证这条直线是否穿过给定的两个点:
print(line(-1)) # 输出: 2.0
print(line(1)) # 输出: 1.0
结果符合预期,证明我们找到了正确的直线。
将其绘制出来,可以直观地看到这条直线确实穿过了点 (-1, 2) 和 (1, 1)。
超定方程组简介
以上是两个点确定一条直线的完美情况。但在现实中,我们常常会遇到多于两个点的情况。
考虑在之前两个点的基础上增加第三个点,例如 (0, 0)。在二维平面上,如果点数超过两个,并且这些点不共线,那么就不存在一条能同时穿过所有点的直线。
当方程的数量(点数)超过未知数的数量(维度)时,我们称这个系统为超定的。这意味着没有精确解能使所有方程同时成立。
然而,我们仍然希望找到一条能“尽可能接近”所有点的直线。这引出了“最佳拟合”或“最小二乘解”的概念,我们将在下一节视频中详细讨论。
总结

本节课中,我们一起学习了如何使用矩阵求解线性方程组。
- 我们将“寻找穿过两点的直线”问题转化为一个包含两个方程和两个未知数的线性方程组。
- 我们学会了将方程组写成矩阵形式
A * w = B。 - 我们掌握了利用矩阵的逆(
w = A^{-1} * B)或使用NumPy的np.linalg.solve函数来求解未知向量w的方法。 - 最后,我们了解了当点数多于两个时,系统会变成超定方程组,并为下一节学习最小二乘法拟合做了铺垫。
058:线性回归 📈

在本节课中,我们将要学习线性回归的核心概念。这是一种用于寻找数据点之间线性关系的基本方法。我们将从简单的两点拟合开始,逐步扩展到处理多个数据点的情况,并学习如何使用最小二乘法找到最佳拟合线。
从两点到多点拟合
上一节我们介绍了如何找到一条穿过平面上两个点的直线。本节中我们来看看,当数据点多于两个时,我们能否找到一条接近所有这些点的直线。这就是回归分析的基本思想。
当平面上有多个点时,通常不存在一条能穿过所有点的直线。然而,我们常常可以找到一条非常接近所有点的直线。例如,下图展示了九个点,虽然它们不在同一条直线上,但显然存在一条向上倾斜的直线非常接近它们。

定义目标与成本函数
我们的目标是找到一条形式为 y = w0 + w1 * x 的直线。这意味着我们需要确定截距 w0 和斜率 w1。
由于没有直线能精确穿过所有点,我们需要定义“接近”的含义。我们将使用平方差的概念:对于每个数据点 (xi, yi),我们计算直线在该 x 处的预测值,然后计算其与实际 y 值的差,并将此差值平方。
我们将其平方的原因是为了确保差值始终为正。当预测完全准确时,差值为零。这个平方成本函数的值会随着预测点与实际点距离的增大而增大。我们的目标就是找到使这个总平方差最小的 w0 和 w1。
这种寻找最小化平方差的方法被称为最小二乘法,我们寻找的解称为最小二乘解。
使用矩阵和NumPy求解
我们可以使用矩阵表示法和 numpy.linalg 库来找到最小化平方误差的最优权重向量 W。
以下是涉及的矩阵:
- 我们定义矩阵
A,其中第一列全是1,第二列是所有x值。 - 我们有一个包含所有
y值的列向量y。 - 我们有一个包含两个值(
w0和w1)的列向量W,即我们要寻找的权重向量。
此时,误差向量 D 可以表示为 D = A * W - y。这个向量包含了每个点的预测误差。我们感兴趣的是误差平方和,这恰好等于误差向量 D 的范数(长度)的平方。因此,我们的目标是找到使向量 D 长度最短的 W。
在NumPy中,我们可以轻松实现这一过程。以下是关键步骤:
import numpy as np
# 假设 X 是包含所有x值的数组,Y 是包含所有y值的数组
# 构建矩阵A:第一列为1,第二列为X
A = np.vstack([np.ones(len(X)), X]).T
# 调用numpy的最小二乘函数求解
w, residuals, rank, s = np.linalg.lstsq(A, Y, rcond=None)
# w 就是包含 w0 和 w1 的向量
w0, w1 = w[0], w[1]
在一个包含9个点的玩具示例中,求解得到的权重向量 W 可能是 [1.9, 0.7166],其中 1.9 是截距 w0,0.7166 是斜率 w1。将这条直线绘制在散点图上,可以看到它确实非常接近所有点,而图中绿色的短线段则代表了每个点的误差(残差)。
真实数据案例:身高与体重
在现实中,我们通常处理的是海量数据点。例如,一个包含25,000人身高(英寸)和体重(磅)的数据集。对这些数据应用最小二乘线性回归,我们可以得到一条最佳拟合线(红色直线)。

这条红线表明,随着身高增加,体重也倾向于增加。然而,它并不能解释所有的体重变化,因为对于相同身高的人,体重也存在很大差异。这条线就是我们所说的线性回归线。
为了更细致地理解这条线,我们可以绘制均值图。具体做法是将身高按一定区间(例如每1英寸)分组,然后计算每个区间内体重的平均值,并将这些平均值用红点标出。
观察均值图可以发现,我们通过最小化所有点的平方误差得到的黑色回归线,确实很好地穿过了这些红点(平均值点)的中心。只有在数据非常少的身高极端值区域(如特别矮或特别高的人),才会出现明显的偏离。这表明,在忽略这些异常值的情况下,线性模型能够很好地代表数据的平均趋势。
回归的方向性
在像身高-体重这样的二维问题中,实际上存在两条回归线,这取决于预测的方向:
- 根据身高预测体重(
体重 = f(身高))。 - 根据体重预测身高(
身高 = g(体重))。
这两条线通常并不重合。下图展示了这一结果:红线是根据身高预测体重的回归线,而黑线是根据体重预测身高的回归线。

总结

本节课中我们一起学习了线性回归的基础知识。我们了解到,当数据点无法被一条直线完美穿过时,可以使用最小二乘法来寻找最佳拟合线,即最小化所有数据点预测误差的平方和。我们通过矩阵运算和NumPy库实现了这一过程,并在一个真实的身高-体重数据集上进行了应用。最后,我们认识到回归具有方向性,根据预测目标的不同,会得到不同的回归线。

在接下来的课程中,我们将探讨多项式回归,这是在线性回归不足以描述数据关系时,我们所需要使用的更复杂的方法。
059:多项式回归 📈

在本节课中,我们将学习如何超越简单的直线,使用多项式回归来拟合更复杂的曲线。我们将探讨如何选择合适的多项式次数,并理解机器学习中的两个核心概念:欠拟合与过拟合。

上一节我们介绍了线性回归,学习了如何用一条直线拟合数据。本节中,我们来看看如何拟合更复杂的曲线,为此我们将使用多项式回归。
首先进行一个简单的回顾。在上一个视频中,我们观察了平均值图。




我们看到,大多数情况下,代表平均值的红点落在一条直线上。在数据极少的极端位置,它们可能会偏离直线,但大多数时候都非常接近。



但我们可能会遇到看起来更像这样的数据。





在这里,代表平均值的红点并不在一条直线上。


如果我们尝试进行线性回归,效果不会很好。我们仍然可以进行线性回归,但只会得到较差的结果。
这就是我们将得到的结果:一条直线,你可以看到它并没有捕捉到数据的形状。








那么,我们如何尝试捕捉这种非线性数据的形状呢?


我们可以尝试一个二次多项式。这里不深入讲解多项式是什么,你可以查阅相关资料。这是一个二次多项式,其前两项与一次多项式相似,但多了一个第三项:w2 * x²。现在,我们希望将这三个参数都拟合到数据中。







我们再次使用最小二乘法进行拟合。唯一真正的不同之处在于,除了常数项和x值之外,我们现在还有x值的平方项。一旦我们有了这些,就可以使用相同的最小二乘函数来找到w0、w1和w2。


我们可以绘制结果,现在使用这个二次多项式,我们得到了一条非常平滑的曲线,它再次穿过了大部分数据,因此我们可以对此感到满意。





现在,这里有一个有趣的问题:给你一些数据,你想用一条线或曲线去拟合它,但你并不真正知道应该拟合多少次的多项式。你是想拟合一次(线性直线)、二次、三次、四次还是五次?




这是一个非常好的问题,你并不真正知道什么效果最好,那么如何决定呢?



当你尝试做这样的事情时,会出现两种现象。一种叫做欠拟合,这就是我们之前用直线看到的情况。直线不够丰富,不够灵活,无法拟合数据,所以它欠拟合了数据。




然后是相反的问题:过拟合。你使用一个模型,它“太好地”拟合了数据。这听起来很奇怪,“太好地”拟合数据是什么意思?为什么这会是个问题?




这是一个问题,因为我们并不总是只对拟合我们看到的数据感兴趣。我们还希望拟合来自同一分布、但我们尚未见过的新数据。





这就引出了训练误差和测试误差的概念。



我们所做的是:将已有的数据随机划分为两部分。这两部分在统计上基本是等价的,但它们是互斥的,每个样本要么在训练集中,要么在测试集中。

我们使用训练集来寻找最佳的多项式。然后,我们使用测试集来测试我们在新数据上找到的这个多项式。



现在,我们可以表达我们所说的过拟合到底是什么意思。




如果我们增加多项式的次数,训练误差(我们在训练数据上得到的误差)总是会下降。它会持续下降,因为多项式的次数越高,其灵活性就越大。但是,如果你观察测试误差,你会发现:最初它的行为与训练误差相似,但在某个点之后,训练误差继续下降,而测试误差将开始上升,因为我们过度拟合了训练误差,导致在测试数据上表现糟糕。



这种测试误差的上升就称为过拟合,这就是我们说过拟合时的意思。



我们将使用一个简单的数据集来分析这一点。



这是数据集,我们看到它有一个总体上升的趋势。我们可能会想,也许一条直线能很好地拟合它,或者一个二次多项式(抛物线)能很好地拟合它,但我们不知道,所以让我们看看我们能做什么。


如前所述,我们将数据分割为训练集和测试集。现在,假设我们对训练集拟合一个三次多项式。




我们得到了这个结果。你可以看到,这个三次多项式非常地拟合蓝点(训练数据),但它并不真正地拟合红点(测试数据)。它在测试数据上表现不佳。我们可以在上面的数字中看到这一点:训练均方根误差是0.04,而测试均方根误差是0.5。测试均方根误差明显大于训练误差,看起来我们过拟合了。但只有当我们尝试一系列不同次数的多项式并看看哪个拟合最好时,才能真正判断。


所以我们要这样做。我们将拟合从零次到五次的所有次数。


以下是结果。零次多项式是什么?零次多项式就是一个常数。我们基本上用一个常数来拟合整个数据,而这个常数结果就是数据的均值。用均值拟合效果很差,这绝对是欠拟合,在训练和测试上的表现都很差。当我们使用一次多项式时,我们看到对训练数据有一个不错的拟合,虽然不是完美的。训练数据的均方根误差是0.16,测试数据的均方根误差是0.22,比训练误差高,但不算太高。当我们使用二次多项式时,我们看到训练误差有所下降,而测试误差上升了。当我们使用三次多项式时,正如我们之前看到的,训练误差下降得更多,但测试误差显著增加。此时,一旦你使用四次多项式,你可以完美地拟合数据,训练误差极低,但测试误差非常高。因此,我们基本上看到,选择的最佳多项式次数是一次多项式,也就是直线,这符合我们的直觉。





但是,当你的数据维度非常高或者数据量非常大时,依赖直觉是困难的。


我们看到,均方根误差的最小值出现在d=1时。这是显示该结果的图表。我们看到训练误差持续下降(横轴是次数,纵轴是均方根误差)。如果我们看测试误差,它下降到d=1,然后开始上升、再上升。这告诉我们,这里的最小值点,即最佳模型,就是一个线性函数(一次多项式)。






我刚才介绍的这些概念,在统计学和机器学习中都非常核心。这只是对它们的初步涉猎,当你学习机器学习课程时,你会对它们有更深入的了解。


在下一个视频中,我们将讨论另一个相关的主题:主成分分析。




本节课总结
本节课中,我们一起学习了多项式回归。我们了解到:

- 多项式回归可以拟合比直线更复杂的非线性数据,其模型形式为:
y = w0 + w1*x + w2*x² + ... + wd*x^d。 - 选择合适的多项式次数至关重要,这引出了两个关键概念:
- 欠拟合:模型过于简单(如直线拟合曲线),无法捕捉数据中的潜在模式,导致在训练集和测试集上表现都差。
- 过拟合:模型过于复杂(如高次多项式),完美地拟合了训练数据中的噪声和细节,但在未见过的测试数据上表现糟糕,泛化能力差。
- 为了评估模型并避免过拟合,我们引入了训练集和测试集的概念。通过比较模型在两者上的误差(如均方根误差),我们可以找到在测试集上表现最佳、泛化能力最强的模型复杂度(多项式次数)。

通过实际的数据集演示,我们验证了随着多项式次数增加,训练误差持续下降,而测试误差会先下降后上升,其最低点对应的模型复杂度通常是最优选择。
060:均值回归 📉

在本节课中,我们将要学习一个统计学中既有趣又令人好奇的现象——均值回归。这个现象揭示了统计结果有时会与直觉相悖,并且非常普遍,因此值得深入了解。
什么是均值回归? 🤔
均值回归描述了一种现象:当某个变量的极端观测值出现后,其后续的观测值往往会向该变量的平均值靠拢。
为了理解这个概念,我们来看一个例子。假设学生们在两个时间点参加同一标准化考试,例如在一个季度前后。他们获得两个分数,分数范围是0到100,平均分是70分。
以下是通常会发生的现象:
- 如果某个学生第一次考试得了97分(远高于平均分),那么他第二次考试的分数很可能低于97分。
- 反之,如果某个学生第一次考试只得了55分(远低于平均分),那么他第二次考试的分数很可能高于55分。

这种现象被称为“回归到均值”,因为第二次的分数在向平均值70分移动。
均值回归的关键特性 🔑
上一节我们介绍了均值回归的现象,本节中我们来看看它的几个关键特性,这些特性使其显得“反直觉”。
需要特别注意的是,均值回归的发生与学生学习与否无关。即使两次考试的分数在统计上完全独立,这种现象也会发生。

此外,这种关系是对称的。如果我们已知第二次考试得了97分,那么第一次考试的分数也倾向于低于97分。

因此,均值回归本身并不传递任何因果信息。它不能说明最初成绩好的学生变差了,或者最初成绩差的学生变好了。这纯粹是统计学上的现象,我们不能从中得出任何有趣的结论。
经典案例:身高研究 📏
均值回归的一个著名早期研究是关于父子身高的,由弗朗西斯·高尔顿爵士在1886年完成。

研究的基本结论是:父母的极端特征(例如身高)不会完全遗传给子女。你可能会认为高个子父母倾向于有高个子孩子,这没错,但这些孩子的身高往往会比父母更接近平均身高。
以下是用于研究的数据可视化:
- X轴:父亲的身高。
- Y轴:儿子的身高。
图中显示,随着父亲身高增加,儿子的身高也增加,两者存在明确关系。但观察具体数值会发现,父亲的身高范围(例如从58到77英寸)远大于对应儿子身高的范围(例如从63到72英寸)。儿子的身高更紧密地聚集在平均身高附近。

另一种视角:差异分析 🔍
理解均值回归的一个有效方法是观察差异,而不是绝对值。

我们可以绘制另一张图,其Y轴不再是儿子的绝对身高,而是儿子身高与父亲身高的差值。
在这张图中,趋势更加明显:父亲越高,儿子身高相对于父亲的“劣势”就越大(即差值越负)。再次强调,这与遗传限制等因素无关,纯粹是均值回归的结果,即使变量完全独立也会发生。
核心概念总结 📝


本节课中我们一起学习了均值回归的原理和案例。我们可以用以下公式来总结其核心概念:
假设有一对独立同分布的随机变量 X1 和 X2。
- 如果我们筛选出 X1 远高于(或低于)分布均值的样本对,那么这些样本对中的 X2 值将倾向于更接近均值。
- 反之亦然,如果我们筛选出 X2 为极端值的样本对,那么对应的 X1 也会更接近均值。

简而言之,当基于一个变量的极端值进行筛选时,另一个相关联的变量会表现出向均值“回归”的趋势。

下节课预告:在下一讲中,我们将探讨主成分分析。
061:主成分分析 📊

在本节课中,我们将学习回归主题的最后一个重要概念——主成分分析。我们将探讨其基本思想、与线性回归的区别,以及它在数据标准化和降维中的应用。


线性回归回顾 📈

上一节我们介绍了线性回归。本节中我们来看看一个简单的例子。
假设平面上有九个点。这些点并不完全在一条直线上,但整体趋势是从左到右向上延伸。也就是说,y值倾向于随着x的增加而增加。

我们希望找到一条直线来拟合这些数据。这条直线的公式为:
y = w0 + w1 * x
我们的目标是找到参数 w0 和 w1。
使用NumPy的最小二乘法函数可以轻松计算出这些参数。当我们绘制出这条回归线时,可以看到每个数据点到直线的垂直距离(误差)。线性回归的目标就是最小化这些垂直误差的平方和。

在回归问题中,我们试图用x预测y。如果我们反过来,尝试用y预测x,会得到一条不同的直线。因此,预测的方向很重要。

从监督学习到无监督学习 🔄
通常,这类预测问题在机器学习中被称为监督学习。之所以称为“监督”,是因为我们试图预测的输出值y是由“监督者”(即已知正确答案的数据)提供的。

然而,我们也可以在不指定预测方向的情况下拟合一条直线。这种方法不关心我们选择x还是y作为预测目标,甚至不关心坐标系如何旋转。这被称为无监督学习,因为我们只是给定数据,没有指定任何特定的预测目标。
主成分分析介绍 🎯
如果我们想使用平方误差进行无监督的线性拟合,这种方法就叫做主成分分析。
主成分分析和回归都最小化相同的损失函数——均方根误差,但两者对“误差”的定义不同。
以下是两者的关键区别:
- 回归线(黑色)的误差是数据点到直线的垂直距离(绿色线段)。
- PCA线(红色)的误差是数据点到直线的正交(垂直)距离(蓝色线段)。


当我们最小化正交误差时,得到的红线与回归的黑线不同。更重要的是,如果我们旋转坐标系,回归的结果会改变,但PCA的结果不会改变。PCA的结果直接与数据本身相关,而与坐标系的选择无关。


理解PCA:方差最大化视角 📐
理解PCA的另一种方式是最大化方差。
假设我们有一组向量 x1 到 xn。我们取一个单位向量 U(长度为1),计算每个向量与 U 的点积,得到一个数值。我们可以计算这些数值的均值和方差,我们特别关注方差,它反映了数据在这个投影方向上的分散程度。
例如,沿着红色方向投影,数据点离均值较远,方差大。沿着与之垂直的方向投影,数据点更聚集,方差小。
如果我们考虑所有可能的方向(在二维情况下就是0到360度),为每个方向计算标准差(方差的平方根),并以该距离在方向上标出一个点,所有这些点的集合会形成一个椭圆。
这个椭圆的长轴方向对应最大方差的方向,这就是PCA的第一主成分(特征向量)。椭圆的短轴方向对应最小方差的方向,即与第一主成分正交的第二主成分。
这种方法的美妙之处在于它不限于二维,可以推广到高维。第一主成分是方差最大的方向,第二主成分是在与第一主成分正交的前提下方差最大的方向,依此类推。这描述了一个高维空间中的椭球体,它代表了数据的分布。

PCA的实际应用示例 👥
让我们看一个二维的真实例子。我们回到包含25,000人身高和体重的数据集。
以下是PCA分析的第一主成分方向。这是将数据投影上去时,能获得最高方差的方向。直观来看,数据在这个方向上分布得最广。

使用PCA进行数据标准化 ⚙️
这种看待PCA的方式提供了一种常见的数据标准化方法。标准化数据非常有用,因为它将数据的部分变化归入特定参数,便于后续研究。
以下是使用PCA标准化数据的步骤:
- 减去均值:通过减去均值,使新数据的均值为零。
- 旋转数据:将数据旋转,使得新坐标轴的方向就是特征向量(主成分)的方向。

具体过程如下:原始数据的均值在某个位置,减去均值后,均值变为(0, 0)。然后旋转数据,使得最大方差方向沿着新x轴,较小方差方向沿着新y轴。这种做法非常普遍。


PCA在计算机视觉中的应用示例 👁️

让我们看看PCA在计算机视觉中的一个小应用。

假设图像中有一个矩形斑点。我们想捕捉这个矩形的大小和方向。
我们可以将这个问题映射到PCA上:图像中所有属于该斑点的像素点(蓝色点)就是我们的数据。进行PCA分析后,我们发现特征向量基本沿着矩形的长轴方向,其标准差(或相关度量)反映了斑点在这个方向上的大小(延伸程度)。这种方法适用于任何形状。

总结 📝
本节课中我们一起学习了主成分分析与回归。
- 两者都是通过最小化均方根误差来建模数据的方法。
- 回归是监督方法,你必须选择要预测的目标变量。
- 主成分分析是无监督方法。无监督方法通常在获得原始数据后使用,用于总结数据或降低其维度,以便更有效地进行后续的监督学习任务。
- 两种方法都基于线性代数,因此是非常高效的方法,远比依赖梯度下降等方法高效。


这就是回归主题的结束。希望你觉得它很有趣。我们下周继续。
062:假设检验 🧪


概述
在本节课中,我们将要学习假设检验。假设检验是统计学中用于判断关于总体参数的某个假设是否成立的重要方法。我们将介绍假设的基本概念、类型,以及如何进行检验。

从参数估计到假设检验
上一节我们介绍了置信区间,它为我们提供了参数可能取值的一个范围。本节中,我们来看看假设检验。假设检验与参数估计不同,它旨在检验关于参数的某个具体陈述(即假设)是否成立。我们可以将假设检验看作是“流言终结者”的科学方法,只不过我们称之为假设检验。
什么是假设?
假设是关于参数的陈述或假设。参数可以是某个分布的参数(例如正态分布的均值),也可以是总体的某个特征(例如人口的平均收入)。
以下是几个假设的例子:
- 一枚硬币是有偏的,即正面朝上的概率 p ≠ 0.5。
- 入门课程的平均绩点 μ = 3.0。
- 亚马逊的平均送货时间 t ≤ 2 天。
- 男性平均每天玩电子游戏的时间 t_men > t_women。
假设的类型
假设可以分为简单假设和复合假设。

简单假设
简单假设为参数指定一个单一、具体的值。
- 例如:均值 μ = 4.5,或标准差 σ = 2.4。
复合假设
复合假设允许参数在多个值或一个范围内取值。
- 例如:均值 μ = 4.5 或 μ = 6.3。
- 例如:标准差 4.5 ≤ σ ≤ 6.3。
- 例如:均值大于标准差 μ > σ。

复合假设还可以进一步分为单侧假设和双侧假设。
单侧假设:参数位于某个给定值的一侧。
- 例如:均值 μ ≤ 2.3 或 μ > 4.5。
双侧假设:参数不等于某个给定值。
- 例如:均值 μ ≠ 2.3。

零假设与备择假设
在假设检验中,我们通常会设定两个对立的假设。

零假设 (H₀):通常代表现状、默认的或被广泛接受的观点。我们倾向于认为它是真的,除非有强有力的证据反驳它。
- 例如:地球是圆的。
备择假设 (H₁ 或 Hₐ):代表我们希望验证或研究的新观点,通常是零假设的补充或对立面。
- 例如:地球是平的。
以下是几个例子:
例1:硬币公平性(简单零假设)
- H₀: 硬币是公平的,即 p = 0.5。
- H₁ (双侧): 硬币是有偏的,即 p ≠ 0.5。
- H₁ (单侧): 硬币偏向正面,即 p > 0.5。

例2:性别与平均绩点
- H₀: 男性和女性的平均绩点相同,即 μ_men = μ_women。
- H₁ (双侧): 男性和女性的平均绩点不同,即 μ_men ≠ μ_women。
- H₁ (单侧): 男性的平均绩点高于女性,即 μ_men > μ_women。
例3:智能手机市场份额(单侧零假设)
- H₀: 至少60%的人使用iPhone,即 p ≥ 0.6。
- H₁: 至多60%的人使用iPhone,即 p ≤ 0.6。


如何进行假设检验?
一旦我们提出了假设,下一步就是检验它。检验的过程类似于设计一个科学实验。
- 设计实验并收集数据。
- 定义检验统计量 (T):这是一个从数据中计算出的数值,它与我们的假设相关。
- 确定零假设下检验统计量的分布:我们假设 H₀ 为真,然后计算出检验统计量 T 可能取值的概率分布。
- 根据观测数据计算检验统计量的实际值 (t)。
- 做出决策:
- 如果观测到的结果 t 在 H₀ 下发生的概率很大,则数据与 H₀ 一致,我们不拒绝零假设。
- 如果观测到的结果 t 在 H₀ 下发生的概率很小,并且更符合 H₁,则数据与 H₀ 不一致,我们拒绝零假设,支持备择假设。
这个过程的核心思想是保守性:我们只在证据非常有力时,才拒绝零假设(现状)。这类似于司法系统中的“无罪推定”:被告在被证明有罪之前被视为无罪。
直观示例
让我们通过两个简单的硬币实验来直观理解这个过程。
示例1:单侧备择假设
- H₀: 硬币公平,p = 0.5。
- H₁: 硬币偏向正面,p > 0.5。
实验:抛掷硬币20次。
检验统计量 (T):正面朝上的次数 X。
在 H₀ 下,X 服从二项分布 X ~ Binomial(n=20, p=0.5)。
决策的直观想法:
- 如果正面次数 X 很大(例如 ≥ 16),这在公平硬币下概率很小,但在 p > 0.5 下概率更大。因此,我们可能拒绝 H₀。
- 如果正面次数 X 较小(例如 ≤ 15),我们不拒绝 H₀。
示例2:双侧备择假设
- H₀: 硬币公平,p = 0.5。
- H₁: 硬币有偏,p ≠ 0.5。
实验与统计量:同上。
决策的直观想法:
- 如果正面次数 X 接近10(例如在5到15之间),这与公平硬币的预期相符,我们不拒绝 H₀。
- 如果正面次数 X 非常小(例如 ≤ 4)或非常大(例如 ≥ 16),这在公平硬币下概率很小,我们拒绝 H₀,认为硬币有偏(可能是正面多或反面多)。

总结
本节课中我们一起学习了假设检验的基础知识。我们介绍了假设的概念及其类型(简单/复合,单侧/双侧),明确了零假设与备择假设的角色。我们了解了假设检验的基本流程:提出假设、设计实验、定义检验统计量、并在零假设下评估观测数据的可能性。通过硬币实验的直观示例,我们初步体会了如何根据数据做出“拒绝”或“不拒绝”零假设的决策。下一讲,我们将进一步形式化这个过程,并介绍一个关键概念——P值。
063:假设检验 - Z检验与T检验(第一部分)

概述
在本节课中,我们将学习两种重要的假设检验方法:Z检验和T检验。这两种方法适用于数据分布为正态或近似正态的情况。我们将探讨它们的使用场景、计算步骤,并通过具体示例来理解如何应用它们。
正态分布与中心极限定理回顾
上一节我们讨论了经典的假设检验。本节中,我们来看看当数据分布为正态或近似正态时,如何进行假设检验。这需要回顾中心极限定理。
中心极限定理指出,如果我们从任意分布(均值为 μ,标准差为 σ)中独立抽取 n 个样本,那么当 n 足够大(通常 n ≥ 30)时,样本均值 x̄ 的分布将近似于正态分布。
具体公式如下:
- 样本均值:
x̄ = (Σx_i) / n - 样本均值的期望:
E(x̄) = μ - 样本均值的方差:
Var(x̄) = σ² / n - 样本均值的标准差:
σ_x̄ = σ / √n
为了标准化,我们构造一个统计量 Z:
Z = (x̄ - μ) / (σ / √n)
这个统计量将近似服从标准正态分布(均值为0,方差为1)。请注意,这个公式要求我们知道总体的标准差 σ。
Z检验:已知标准差的情况
当总体标准差 σ 已知,且样本量足够大或数据本身近似正态时,我们可以使用Z检验来检验关于总体均值 μ 的假设。
一个典型的应用场景是:我们有一个未知总体,但出于某些原因(例如,已知测量仪器的精度),我们知道其标准差 σ。零假设 H₀ 可能设定总体均值为某个特定值(例如 μ = 5),备择假设 H₁ 则可能设定均值大于、小于或不等于该值。
以下是进行Z检验的步骤:
- 设定假设与显著性水平:确定零假设
H₀(如 μ = μ₀)和备择假设H₁(如 μ > μ₀, μ < μ₀, 或 μ ≠ μ₀)。选择显著性水平 α(通常为 5% 或 1%)。 - 计算检验统计量:根据样本数据计算 Z 值:
Z = (x̄ - μ₀) / (σ / √n)。 - 做出决策:比较计算出的 Z 值与临界值
Z_α,或计算 P 值。- 临界值法:对于给定的 α,找到标准正态分布上的临界值
Z_α(例如,α=0.05 的单侧检验,Z_α ≈ 1.645)。如果计算出的 Z 值超过Z_α(对于右侧检验),则拒绝零假设。 - P值法:P 值是在零假设成立的前提下,观察到当前样本结果或更极端结果的概率。对于右侧检验,
P = P(Z ≥ z_observed)。如果P < α,则拒绝零假设。
- 临界值法:对于给定的 α,找到标准正态分布上的临界值

根据备择假设的形式,检验可以分为以下三种类型:
- 右侧检验(单尾):
H₀: μ = μ₀,H₁: μ > μ₀- P 值 =
P(Z ≥ z_observed)
- 左侧检验(单尾):
H₀: μ = μ₀,H₁: μ < μ₀- P 值 =
P(Z ≤ z_observed)
- 双侧检验(双尾):
H₀: μ = μ₀,H₁: μ ≠ μ₀- P 值 =
P(|Z| ≥ |z_observed|) = 2 * P(Z ≥ |z_observed|)

Z检验示例:巧克力中的可可含量

(声明:以下数据仅用于演示目的)
假设Trader Joe's出售一种黑巧克力棒,声称含有85克可可。我们怀疑其实际含量少于85克。
- 零假设 H₀:平均可可含量为 85 克。
- 备择假设 H₁:平均可可含量 小于 85 克。
- 显著性水平 α:5%。
- 已知信息:假设我们已知每块巧克力棒可可含量的标准差 σ = 0.5 克。
- 样本:我们购买了 n = 30 块巧克力并测量,得到样本平均含量
x̄ = 84.83克。
计算检验统计量 Z:
Z = (84.83 - 85) / (0.5 / √30) ≈ -1.86
计算 P 值(左侧检验):
P 值是标准正态随机变量小于 -1.86 的概率。
from scipy.stats import norm
p_value = norm.cdf(-1.86) # 计算累积分布函数在-1.86的值
print(p_value) # 输出约为 0.0314,即 3.14%
由于 P 值 (3.14%) < α (5%),我们拒绝零假设,接受备择假设。有证据表明平均可可含量可能低于85克。
如果进行双侧检验呢?
H₀: μ = 85 克,H₁: μ ≠ 85 克。- 使用相同的 Z = -1.86。
- P 值 =
P(|Z| ≥ 1.86) = 2 * P(Z ≥ 1.86) = 2 * (1 - norm.cdf(1.86)) ≈ 2 * 0.0314 = 0.0628(6.28%)。 - 由于 P 值 (6.28%) > α (5%),我们无法拒绝零假设。
这个例子展示了相同的Z值,在不同的备择假设下可能导致不同的结论。单侧检验的拒绝域更集中,因此有时更敏感。
T检验:未知标准差的情况
在现实中,我们通常不知道总体标准差 σ。这时,我们需要使用T检验。它由威廉·戈塞特(笔名“Student”)提出。
当我们从正态总体(均值为 μ,标准差 σ 未知)中抽取样本时,可以定义以下统计量:
t = (x̄ - μ₀) / (s / √n)
其中,s 是样本标准差:s = √[ Σ(x_i - x̄)² / (n-1) ]。
在零假设成立且数据来自正态总体(或近似正态)的前提下,这个统计量 t 服从自由度为 n-1 的 t 分布。
T检验的步骤与Z检验类似,只是用于计算P值的分布从标准正态分布换成了t分布。
T检验示例:特斯拉加速时间
假设特斯拉声称Model X从0加速到60英里/小时的平均时间 不超过4秒。我们想检验这个说法。
- 零假设 H₀:平均加速时间 ≤ 4 秒。
- 备择假设 H₁:平均加速时间 > 4 秒。
- 显著性水平 α:5%。
- 假设:加速时间大致服从正态分布,且标准差 σ 未知。
- 样本:我们进行了 n = 8 次测试,得到时间(秒)为:[4.1, 4.0, 4.3, 4.2, 4.1, 4.0, 4.2, 4.1]。

计算样本统计量:
import numpy as np
sample = np.array([4.1, 4.0, 4.3, 4.2, 4.1, 4.0, 4.2, 4.1])
x_bar = np.mean(sample) # 4.125
s = np.std(sample, ddof=1) # 0.097 (样本标准差,使用 ddof=1 进行无偏估计)
n = len(sample) # 8
计算检验统计量 t:
t = (4.125 - 4) / (0.097 / √8) ≈ 1.1206

计算 P 值(右侧检验,自由度为 n-1=7):
P 值是自由度为7的t分布中,大于1.1206的概率。
from scipy.stats import t
p_value = 1 - t.cdf(1.1206, df=7)
print(p_value) # 输出约为 0.149,即 14.9%
由于 P 值 (14.9%) > α (5%),我们无法拒绝零假设。没有足够的证据反驳特斯拉“平均加速时间不超过4秒”的说法。
Z检验与T检验的比较与总结
本节课中,我们一起学习了Z检验和T检验。它们就像一对“双胞胎”,核心区别在于是否已知总体标准差。
以下是它们的核心对比:
| 特征 | Z检验 | T检验 |
|---|---|---|
| 标准差 | 总体标准差 σ 已知 | 总体标准差 σ 未知,使用样本标准差 s 估计 |
| 检验统计量 | Z = (x̄ - μ₀) / (σ/√n) |
t = (x̄ - μ₀) / (s/√n) |
| 适用样本量 | 大样本 (n ≥ 30),或小样本但总体正态且σ已知 | 小样本 (n < 30) 且总体需近似正态;大样本时也适用 |
| 所用分布 | 标准正态分布 | t 分布 (自由度 df = n-1) |
| 关系 | 当样本量 n 很大时,t 分布接近标准正态分布,T检验结果趋近于Z检验 |
关键要点:
- Z检验适用于总体标准差已知的情况,或样本量非常大(n ≥ 30)时,根据中心极限定理,可以用样本标准差近似总体标准差。
- T检验更通用,适用于总体标准差未知的情况,尤其在小样本检验中占主导地位。但它要求数据本身近似正态分布。
- 选择单侧还是双侧检验,取决于备择假设的具体形式,这会直接影响P值的计算和最终结论。
- P值法是现代统计中更常用的决策方式,它提供了反对零假设的证据强度的连续度量。


在下一部分,我们将继续深入探讨假设检验的其他方面。

浙公网安备 33010602011771号