免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Data-Science-For-Beginners 第 04 课:概率与统计入门——从概率分布到置信区间与假设检验(MLB 实战)

Data-Science-For-Beginners 第 04 课:概率与统计入门——从概率分布到置信区间与假设检验(MLB 实战) Data-Science-For-Beginners 第 04 课概率与统计入门——从概率分布到置信区间与假设检验MLB 实战【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners本文基于 Data-Science-For-Beginners 课程第 04 课1-Introduction/04-stats-and-probability本仓库以法语版translations/fr/1-Introduction/04-stats-and-probability/README.md为指定文档撰写系统讲解概率与随机变量、概率分布、均值/方差/标准差、分位数与箱线图、正态分布、置信区间、假设检验、大数定律与中心极限定理、协方差与相关性等核心概念并结合课程配套的 notebook.ipynb 与 data/SOCR_MLB.tsv 真实数据集演示如何用 NumPy、Pandas 和 SciPy 把这些概念落地为可运行的代码。读完本文你将能够独立完成描述性统计、置信区间计算和两样本 t 检验并理解机器学习建模前“数据服从某概率分布”这一假设的来源。说明法语文档本身是由自动翻译服务生成的译文原文为英文课程本文在其技术内容基础上结合仓库源码与数据文件做了核对与扩充。课程在本节前后各设置了课前/课后测验pre/post quiz可配合学习。1. 为什么数据科学离不开概率与统计统计学与概率论是两个紧密关联的数学领域对数据科学高度相关。即使不深入研究数学也能操作数据但至少掌握一些基本概念仍然更有利。原文档给出的定位是这是一篇“帮助你起步”的简短入门覆盖概念定义 真实数据演练两条主线。本仓库将这一课放在1-Introduction第 1 阶段介绍中的第 04 节前接“定义数据”后接“关系数据库”是课程中唯一一节系统性引入数学工具的课程后续的数据准备、数据可视化与数据科学生命周期各阶段都会反复使用这里建立的概念。2. 概率与随机变量2.1 概率的定义概率Probability是介于 0 和 1 之间的一个数用来表达某个**事件event**发生的可能性大小。在假定所有结果等可能的前提下其定义为概率 有利结果数导致该事件的结果 / 结果总数原文档的经典例子掷一枚骰子得到偶数的概率是 3/6 0.5结果为 2、4、6 共 3 种总结果 6 种。2.2 随机变量与样本空间描述事件时数学上用随机变量random variable来表达。例如表示掷骰子所得点数的随机变量取值 1 到 6集合 {1, 2, 3, 4, 5, 6} 称为样本空间sample space。进而可以谈论随机变量取某个值的概率例如 P(X3) 1/6。随机变量分为两类离散discrete样本空间可数即存在可以逐一列举的离散取值如掷骰子的 1–6连续continuous样本空间是某个实数区间甚至是整个实数集 ℝ。原文档给出的好例子是“公交车到达的时间”。3. 概率分布3.1 离散分布与均匀分布对离散随机变量可以用函数 P(X) 直接描述每个事件的概率对样本空间S中的每个取值sP(Xs) 给出 0 到 1 之间的一个数且所有事件概率之和等于 1。最著名的离散分布是均匀分布uniform distribution样本空间含 N 个元素每个元素概率均为 1/N。掷骰子正是 6 元均匀分布。3.2 连续分布与概率密度函数连续变量的概率分布描述起来更微妙。以公交车到达时间为例对任意一个精确的到达时刻t公交车恰好在这一瞬间到达的概率其实是0原文档的幽默注释现在你知道了——概率为 0 的事件不仅会发生而且非常频繁至少每次公交车到站时都在发生。因此对连续变量只能谈论它落在某个区间内的概率例如 P(t₁ ≤ X t₂)。此时分布由概率密度函数probability density functionp(x)描述满足P(t₁ ≤ X t₂) ∫ᵗ¹ᐟᵗ² p(x) dx即密度函数在区间上的积分连续版均匀分布称为连续均匀分布定义在有限区间上X 落入某个长度为 l 的区间的概率与 l 成正比最大为 1。另一个重要的分布是正态分布在第 7 节详述。4. 均值、方差与标准差设我们从随机变量 X 中抽取 n 个样本x₁, x₂, ..., xₙ。均值mean / arithmetic average均值或算术平均按传统方式定义为 (x₁ x₂ ... xₙ)/n。当样本量增大即取 n→∞ 的极限时就得到分布的均值也叫期望expectation记作E(x)。原文档补充可以证明对任意离散分布取值 {x₁, ..., xₙ} 对应概率 p₁, ..., pₙ其期望为 E(X) x₁p₁ x₂p₂ ... xₙpₙ。要衡量取值离散的程度可以计算方差σ² Σ(xᵢ − μ)²/n其中 μ 是序列均值。σ 称为标准差standard deviationσ² 称为方差variance。在课程 notebook 中这两者直接由 NumPy 给出import numpy as np import pandas as pd df pd.read_csv(../../data/SOCR_MLB.tsv, sep\t, headerNone, names[Name, Team, Role, Weight, Height, Age]) mean df[Height].mean() var df[Height].var() std df[Height].std()这段加载与统计代码见 notebook.ipynb 的“Analyzing Real Data”部分。5. 众数、中位数与四分位数有时均值不能很好地代表数据的“典型值”——例如存在少数完全超出范围的极端值时均值会被明显拉偏。此时**中位数median**是更好的指示一半数据点小于它另一半大于它。为了理解数据分布还要谈论四分位数quartiles第一四分位数 Q125% 的数据小于该值第三四分位数 Q375% 的数据小于该值。中位数与四分位数的关系可以用**箱线图box plot**图形化表示在箱线图中还要计算四分位距 IQR Q3 − Q1以及离群值outliers——落在 [Q1 − 1.5×IQR, Q3 1.5×IQR] 边界之外的取值。对于取值种类有限的分布一个好的“典型值”是出现频率最高的取值即众数mode。它常用于分类数据如颜色。原文档的例子假设一群人强烈偏好红色、另一群人偏好蓝色若把颜色编码为数字均值会落在橙绿光谱之间的某个无意义位置无法反映任何一群人的真实偏好而众数会是其中一种颜色若两色票数相等则样本是**多峰multimodal**的。6. 用真实数据应用统计概念MLB 数据集6.1 数据集与加载分析现实数据时数据往往不是严格意义上的随机变量我们没有在做结果未知的实验。原文档的例子是一支棒球队的身体数据身高、体重、年龄。这些数字不完全是随机的但依然可以套用同样的数学概念——例如把一系列体重视为从某个随机变量中抽取的样本序列。课程使用的数据集取自 SOCR MLB Height/Weight 数据集在仓库中为 data/SOCR_MLB.tsv共 1033 名球员记录制表符分隔。从数据文件可见其前三列依次为球员姓名、球队、场上位置Role随后是身高英寸约 71–75、体重磅约 160–230、年龄三个数值列notebook.ipynb 通过names参数把后三列映射为Weight、Height、AgeheaderNone表示文件无表头。复现文档中的数值前建议先按数值量级核对各列含义确认列对应关系正确。原文档给出了前 20 个体重的示例序列已核对与 TSV 文件前 20 行一致[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0]提示继承原文档要查看使用本数据集的完整示例请打开配套的 notebook.ipynb。本课中散布着若干挑战任务可通过往该 notebook 里添加代码来完成。若不确定如何操作数据不必担心——课程后续会用 Python 系统讲解数据处理。6.2 总体箱线图与按角色的箱线图对体重画箱线图可以同时展示均值、中位数和四分位数。由于数据包含不同的球员角色role还可以按角色分别绘制身高箱线图直观比较各位置的参数差异notebook 中对应代码为df.boxplot(columnHeight, byRole, ...)与水平方向的总体箱线图plt.boxplot(df[Height].ffill(), orientationhorizontal, showmeansTrue)。从该图可以看出一垒手First Baseman的平均身高高于二垒手Second Baseman。原文档明确指出这只是一个观察稍后我们会学习如何更形式化地检验这个假设并证明数据具有统计显著性。原文档强调的核心假设处理现实数据时我们假定所有数据点都来自某个概率分布的抽样。正是这一假设让我们能应用机器学习技术、构建可用的预测模型。6.3 直方图与“分布形状”的警示要看数据到底是什么分布可以画直方图histogramX 轴是一系列体重区间称为bins纵轴是样本落入各区间的次数。原文档的结论是数值集中在某个平均体重附近离得越远取值越少——棒球员体重显著偏离均值的概率很低体重的方差则刻画了偏离均值的幅度。原文档的重要警示务必继承如果换成非棒球联赛人群例如大学生的体重分布很可能不同但分布形状相同只是均值和方差改变。因此如果在棒球运动员上训练模型直接应用到大学生身上很可能给出错误结果因为底层分布不同。7. 正态分布上面看到的体重分布非常有代表性现实中大量测量值都服从同类型的分布只是均值与方差不同。这种分布就是正态分布normal distribution在统计学中地位极其重要。用正态分布来生成“潜在棒球员”的随机体重是正确做法。已知平均体重mean和标准差std后生成 1000 个样本samples np.random.normal(mean, std, 1000)对生成的样本画直方图会得到与真实体重分布非常相似的画面进一步增大样本数与 bins 数量可以逼近理想的正态分布原文档配有 mean0、std1 的标准正态直方图见1-Introduction/04-stats-and-probability/images/normal-histogram.png。notebook 还补充了一个“反例”演示若错误地用均匀随机数生成器np.random.rand去模拟体重得到的分布形状会完全不对wrong_sample np.random.rand(1000) * 2 * std mean - std结论notebook 原文因为现实中大多数量近似正态分布生成模拟样本数据时不应使用均匀随机数生成器。8. 置信区间8.1 总体、样本与置信区间的定义谈棒球员体重时我们假定存在某个随机变量 W对应全体棒球员称为总体 population体重的理想概率分布而手头的一串体重是总体中的一个子集称为样本 sample。有意思的问题是能否知道 W 的分布参数即总体的均值和方差最朴素的答案是计算样本的均值和方差但随机样本未必精确代表总体因此需要谈论置信区间confidence interval置信区间是基于给定样本对总体真实均值的估计它在一定概率即置信水平 confidence level下是准确的。设样本为 X₁, ..., Xₙ。每次从分布中抽样都会得到不同的均值 μ因此 μ 本身也可视为随机变量。置信水平为 p 的置信区间是一对值 (Lₚ, Rₚ)满足P(Lₚ ≤ μ ≤ Rₚ) p即测得均值落入该区间内的概率为 p。8.2 计算方式Student 分布原文档说明并诚实标注“这超出了本入门范围”计算置信区间时我们定义“样本均值相对于总体真实均值”的分布称为Student 分布学生分布。有趣的事实Student 分布以数学家 William Sealy Gosset 命名他以笔名 “Student” 发表论文。他曾在 Guinness 酿酒厂工作据一种说法雇主不希望公众知道他们在用统计检验评估原料质量。若要以置信水平 p 估计总体均值 μ需取 Student 分布的(1−p)/2 分位数A可查表也可用统计软件内置函数计算如 Python、R。于是 μ 的区间为μ ∈ X̄ ± A·D/√n其中 X̄ 是样本均值D 是标准差n 是样本量。注原文档同时声明省略了一个重要概念——自由度degrees of freedom它与 Student 分布密切相关建议查阅更完整的统计书籍深入理解。8.3 notebook 中的实现与结果notebook.ipynb 给出了完整实现基于 SciPy 的 t 分布分位数函数import scipy.stats def mean_confidence_interval(data, confidence0.95): a 1.0 * np.array(data) n len(a) m, se np.mean(a), scipy.stats.sem(a) h se * scipy.stats.t.ppf((1 confidence) / 2., n - 1) return m, h for p in [0.85, 0.9, 0.95]: m, h mean_confidence_interval(df[Weight].ffill(), p) print(fp{p:.2f}, mean {m:.2f} ± {h:.2f})其中scipy.stats.sem是标准误scipy.stats.t.ppf((1 confidence) / 2., n - 1)即为 Student 分布的对应分位数 A双尾自由度 n−1。原文档给出的体重均值置信区间结果为p体重均值0.85201.73 ± 0.940.90201.73 ± 1.080.95201.73 ± 1.28注意置信概率越高置信区间越宽。9. 假设检验9.1 从数据观察提出假设MLB 数据集中球员有不同角色各角色的汇总统计可由 notebook 的df.groupby(Role).agg({Weight: mean, Height: mean, Age: count})计算本文已对照 data/SOCR_MLB.tsv 复核如下角色身高均值体重均值人数Catcher捕手72.723684204.32894776Designated_Hitter指定击球手74.222222220.88888918First_Baseman一垒手74.000000213.10909155Outfielder外野手73.010309199.113402194Relief_Pitcher救援投手74.374603203.517460315Second_Baseman二垒手71.362069184.34482858Shortstop游击手71.903846182.92307752Starting_Pitcher先发投手74.719457205.163636221Third_Baseman三垒手73.044444200.95555645可以注意到一垒手平均身高高于二垒手于是容易得出“一垒手比二垒手更高”的结论。这种陈述称为假设hypothesis因为我们并不知道它是否真的成立。但每个均值都带有置信区间观察到的差异可能只是统计误差需要更形式化的检验方法。9.2 方法一比较置信区间分别计算一垒手与二垒手身高的置信区间原文档数值法语版以逗号作小数点此处统一为英文小数点置信水平一垒手身高二垒手身高0.8573.62..74.3871.04..71.690.9073.56..74.4470.99..71.730.9573.47..74.5370.92..71.81在任何置信水平下两组区间都不重叠从而支持“一垒手比二垒手更高”这一假设。9.3 方法二Student t 检验更形式化地说我们要解决的是两个概率分布是否相同至少参数是否相同的问题。根据分布类型检验方法不同若已知分布为正态可应用Student t 检验Student t-test。t 检验的步骤计算所谓的t 值t-value——在考虑方差的前提下衡量两组均值的差异可以证明 t 值服从Student 分布由此得到给定置信水平 p 的阈值可计算或查表最后比较 t 值与阈值以接受或拒绝假设。在 Python 中SciPy提供了ttest_ind函数该库还有大量其他有用的统计函数它替我们计算 t 值并做置信度 p 值的反查因此直接查看 p 值即可下结论。原文档给出的示例代码比较一垒手与指定击球手身高from scipy.stats import ttest_ind tval, pval ttest_ind(df.loc[df[Role]First_Baseman, [Height]], df.loc[df[Role]Designated_Hitter, [Height]], equal_varFalse) print(fT-value {tval[0]:.2f}\nP-value: {pval[0]})T-value 7.65 P-value: 9.137321189738925e-12p 值极低意味着有充分证据支持“一垒手更高”的结论。参数equal_varFalse表示采用 Welch 修正不假定两组方差相等。notebook 中的对照版本比较的是 First_Baseman 与 Second_Baseman见 notebook.ipynb并对两个返回值的含义作了说明p 值可视为“两个分布具有相同均值”的概率本例中它非常低说明有强证据支持一垒手更高t 值是 t 检验中归一化均值差的中间量需要与给定置信水平下的阈值比较。原文档还列出其他常见的待检验假设类型证明某个样本服从特定分布我们一直假设身高正态分布但这需要形式化的统计验证证明样本均值等于某个预定义值比较多组样本的均值例如不同年龄组的幸福水平差异。10. 大数定律与中心极限定理正态分布之所以重要原因之一是中心极限定理central limit theorem设有一个大样本包含 N 个独立取值 X₁, ..., Xₙ来自任意一个均值为 μ、方差为 σ² 的分布。则当 N 足够大即 N→∞时均值 ΣᵢXᵢ 近似服从正态分布均值为 μ方差为 σ²/N。换一种理解方式无论原始分布如何对一组随机变量取值求和再取均值结果都是正态分布。由中心极限定理还可推出当 N→∞ 时样本均值等于 μ 的概率趋于 1这就是大数定律law of large numbers。notebook 用中心极限定理现场“造”了一个正态随机数生成器见 notebook.ipynbPython 的伪随机生成器默认给均匀分布而对一批均匀随机数求均值即可得到近似正态分布的值def normal_random(sample_size100): sample [random.uniform(0, 1) for _ in range(sample_size)] return sum(sample) / sample_size sample [normal_random() for _ in range(100)] plt.figure(figsize(10, 6)) plt.hist(sample) plt.tight_layout() plt.show()11. 协方差与相关性11.1 概念与公式数据科学的任务之一是发现数据间的关系。当两条序列在相同时刻表现出相似行为时我们说它们相关correlate要么同升同降要么一升一降。换句话说两条序列之间似乎存在某种关系。原文档的告诫相关不一定意味着因果有时两个变量共同依赖于某个外部原因也可能是纯粹的巧合。但强的数学相关是两变量以某种方式相连的良好信号。数学上刻画两个随机变量关系的核心概念是协方差covarianceCov(X, Y) E[(X − E(X)) · (Y − E(Y))]即先计算两个变量各自相对均值的偏差再取偏差的乘积并求期望。若两个变量同向偏离乘积恒为正协方差为正若反向偏离一个低于均值时另一个高于均值乘积恒为负协方差为负若偏差相互独立则大致相消为零。协方差的绝对值本身说明不了相关强度有多大因为它取决于实际取值的量级。为做归一化用协方差除以两个变量的标准差得到相关系数correlation。其好处是取值恒在 [−1, 1] 区间1 表示强正相关−1 表示强负相关0 表示完全不相关变量相互独立。11.2 实战身高与体重的相关矩阵用 NumPy 计算 MLB 球员体重与身高的相关性print(np.corrcoef(weights, heights))结果是相关矩阵correlation matrixarray([[1. , 0.52959196], [0.52959196, 1. ]])相关矩阵 C 可对任意数量的输入序列 S₁, ..., Sₙ 计算。Cᵢⱼ 是 Sᵢ 与 Sⱼ 的相关系数对角线元素恒为 1即 Sᵢ 与自身的相关。0.53 说明人的体重与身高之间存在一定相关。用散点图可以直观看到这种关系11.3 notebook 补充数据清洗与非线性陷阱notebook 还给出了几个值得借鉴的细节“Correlation and Evil Baseball Corp”部分人工构造的线性关系假设一家“邪恶棒球公司”按身高发薪底薪 1000 美元 按身高线性加成 0–100 美元此时np.cov/np.corrcoef显示相关系数为 1散点图呈完全线性加入非线性把加成公式改成sin函数后相关系数下降但仍较高——相关系数主要刻画线性关系叠加噪声再给工资加一个 ±10 的随机扰动相关系数进一步下降真实变量的 nan 陷阱直接对原始列计算np.corrcoef(df[Height].ffill(), df[Weight])会得到nan因为序列中存在缺失值必须先用ffill()/fillna处理缺失值相关系数0.53才得以计算出来。这一节的 takeawaynotebook 原文它展示了数据准备与清洗的重要性——没有合适的数据什么都算不出来。12. 挑战任务使用 notebook 中的示例代码检验以下其他假设继承原文档 Challenge 一节一垒手的年龄大于二垒手一垒手的身高大于三垒手游击手的身高大于二垒手。可直接复用第 9 节的mean_confidence_interval与ttest_ind代码只需替换Role过滤条件和比较列即可。13. 延伸阅读与课后作业原文档说明概率与统计范围极广值得单独开一门课。若想深入理论原文档推荐了三份材料此处仅列书名与作者不含外链纽约大学 Carlos Fernandez-Granda 的讲义Probability and Statistics for Data SciencePeter Bruce 与 Andrew Bruce 的Practical Statistics for Data Scientists附 R 示例代码James D. Miller 的Statistics for Data Science附 R 示例代码。课后作业Small Diabetes Study。作业使用仓库内的 data/diabetes.tsv442 名糖尿病患者的记录列包括 AGE、SEX、BMI、BP、六项血液指标 S1–S6以及一年后病情进展指标 Y样例数据见 assignment.md 中的表格配套 assignment.ipynb 中列出 5 个任务计算所有数值的均值与方差按性别绘制 BMI、BP 与 Y 的箱线图判断 Age、Sex、BMI、Y 各变量的分布类型检验各变量与病情进展Y的相关性提示相关矩阵最有信息量检验“男性与女性的糖尿病进展程度不同”这一假设。仓库中同时提供了参考解答 solution/assignment.ipynb可对照自查。14. 小结继承原文档 Conclusion本节本文章覆盖的内容数据的基本统计性质均值、方差、众数与四分位数随机变量的各类分布包括正态分布如何寻找不同属性之间的相关性如何运用数学与统计工具证明或拒绝某些假设如何基于数据样本计算随机变量的置信区间。这当然不是概率统计全部主题的穷举但对于进入后续课程数据准备、可视化、数据科学生命周期而言已经是一个足够好的起点。本课程的完整脉络可参考仓库根目录 README.md第 04 课在其中的位置见 1-Introduction/README.md。本文基于仓库文档 translations/fr/1-Introduction/04-stats-and-probability/README.md 编写配套资源课程 notebook、数据集 SOCR_MLB.tsv、课后作业 与 参考解答。本课作者为 Dmitry Soshnikov见原文档 Credits。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表