news 2026/9/12 12:10:42

Data Science for Beginners 第 4 课实战:用均值、分布、相关性与假设检验分析糖尿病数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Data Science for Beginners 第 4 课实战:用均值、分布、相关性与假设检验分析糖尿病数据集

Data Science for Beginners 第 4 课实战:用均值、分布、相关性与假设检验分析糖尿病数据集

【免费下载链接】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 课程第 4 课「概率与统计」配套作业《Small Diabetes Study》,带领读者用 Pandas、Matplotlib 与 SciPy 对一个真实的糖尿病病人小样本数据集完成五项统计任务:计算均值与方差、按性别绘制箱线图、分析变量分布、检验各变量与疾病进展的相关性,并用 t 检验验证「糖尿病进展在男女性别间存在差异」这一假设。读完本文,你将掌握一套可复用的「描述统计 → 可视化 → 相关性 → 假设检验」数据分析流程,并能在 Jupyter Notebook 环境中完整复现该作业的参考答案。

数据集与任务概览

本作业使用一个小型糖尿病病人数据集,共 442 条记录,以制表符分隔存放在仓库的 data/diabetes.tsv 中。每个样本包含 11 个字段:

字段含义
AGE年龄
SEX性别(1 与 2 两个取值)
BMI身体质量指数(body mass index)
BP平均血压(average blood pressure)
S1 ~ S6六种不同的血液测量指标
Y一年内疾病进展程度的定量度量(disease progression)

数据前几行如下:

AGESEXBMIBPS1S2S3S4S5S6Y
059232.1101.15793.238.04.4.859887151
148121.687.0183103.270.3.3.89186975
272230.593.015693.641.04.04.85141

作业要求在 1-Introduction/04-stats-and-probability/assignment.ipynb 中完成以下五项任务:

  1. 计算所有变量的均值与方差;
  2. 分别按性别绘制 BMI、BP、Y 的箱线图;
  3. 分析 AGE、SEX、BMI、Y 四个变量的分布形态;
  4. 检验不同变量与疾病进展(Y)之间的相关性;
  5. 检验「糖尿病进展在男性和女性之间存在差异」这一假设。

仓库同时提供了完整的参考答案笔记本,下文所有统计结果均来自该参考答案的真实输出。关于均值、方差、箱线图、正态分布、假设检验与相关性等概念的完整理论讲解,可参阅本课讲义 1-Introduction/04-stats-and-probability/README.md。

环境准备与数据加载

建议在 Jupyter Notebook 环境中运行(参考答案使用 Python 3.8 + conda 环境)。所需依赖为 Pandas、NumPy、Matplotlib 与 SciPy,前三者用于数据处理和可视化,scipy.stats.ttest_ind用于任务 5 的假设检验。

import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy.stats import ttest_ind df = pd.read_csv("data/diabetes.tsv", sep='\t') df.head()

注意数据文件使用制表符\t作为分隔符,因此必须显式传入sep='\t',否则 Pandas 会将整行解析为单列。若从 1-Introduction/04-stats-and-probability/assignment.ipynb 目录运行,路径需相应调整为../../data/diabetes.tsv

任务 1:计算所有变量的均值与方差

均值(mean)刻画变量的中心趋势,方差(variance)刻画数据相对均值的离散程度——两者是描述统计中最基础的指标。这里有两种等价做法。

方法一:一行命令获取完整统计摘要

df.describe()会一次性返回每个变量的计数、均值、标准差、最小值、四分位数(25%/50%/75%)与最大值:

df.describe()

参考答案输出摘要(部分):

统计量AGESEXBMIBPS1S2S3S4S5S6Y
count442442442442442442442442442442442
mean48.521.4726.3894.65189.14115.4449.794.074.6491.26152.13
std13.110.504.4213.8334.6130.4112.931.290.5211.5077.09
min19.001.0018.0062.0097.0041.6022.002.003.2658.0025.00
25%38.251.0023.2084.00164.2596.0540.253.004.2883.2587.00
50%50.001.0025.7093.00186.00113.0048.004.004.6291.00140.50
75%59.002.0029.28105.00209.75134.5057.755.005.0098.00211.50
max79.002.0042.20133.00301.00242.4099.009.096.11124.00346.00

方法二:显式计算均值与方差矩阵

若只想得到均值与方差两行,可直接调用df.mean()df.var()并拼成一个 DataFrame:

pd.DataFrame([df.mean(), df.var()], index=['Mean','Variance'])

参考答案输出:

AGESEXBMIBPS1S2S3S4S5S6Y
Mean48.521.4726.3894.65189.14115.4449.794.074.6491.26152.13
Variance171.850.2519.52191.301197.72924.96167.291.670.27132.175943.33

观察可知:Y(疾病进展)的方差高达 5943.33,是离散程度最大的变量,说明病人之间一年内的疾病进展差异显著;而 SEX 为二值变量,方差仅 0.25。

任务 2:按性别绘制 BMI、BP、Y 的箱线图

箱线图(box plot)可以直观展示数据的中位数、四分位数以及离群值:箱体上下边缘分别对应第一四分位数 Q1 与第三四分位数 Q3,箱内横线为中位数,延伸出的须线覆盖非离群范围,而超出[Q1-1.5*IQR, Q3+1.5*IQR](IQR=Q3-Q1 为四分位距)的点被标记为离群值。

用 Pandas 内置的boxplot方法,即可按 SEX 分组绘制箱线图:

for col in ['BMI','BP','Y']: df.boxplot(column=col, by='SEX') plt.show()

该代码依次生成三张以 SEX 为分组(横轴取值 1、2)的箱线图。参考答案的结论是:三张图均显示两组的中位数与四分位区间存在一定差异,但就图形本身而言,需要结合后续任务 4 的相关分析与任务 5 的假设检验,才能判断这些差异是否具有统计意义。

任务 3:分析 AGE、SEX、BMI、Y 的分布形态

直方图(histogram)按取值区间(bins)统计样本频数,是判断分布形态最直接的图形工具:

for col in ['AGE','SEX','BMI','Y']: df[col].hist() plt.show()

对四个变量逐一绘制直方图后,参考答案给出的结论为:

  • AGE(年龄):分布近似正态(normal)——大部分样本集中在均值附近,向两端逐渐递减;
  • SEX(性别):呈现均匀(uniform)形态——两个取值对应的样本数大致相当;
  • BMI 与 Y:形态介于两者之间,仅凭直方图难以断言其服从何种分布(hard to tell)。

这一步骤的训练价值在于:识别分布形态是后续选择统计检验方法的前提。例如任务 5 的 t 检验正是基于「两组数据近似服从正态分布」的假设,而 SEX 作为二值分类变量则天然无法用连续分布描述。

任务 4:检验各变量与疾病进展(Y)的相关性

相关性(correlation)取值范围为 [-1, 1]:1 表示强正相关,-1 表示强负相关,0 表示无关。作业提示指出,相关矩阵(correlation matrix)能最有效地揭示哪些变量相互依赖。Pandas 提供一行命令:

df.corr()

参考答案输出中,与 Y 相关性最强的变量如下:

变量与 Y 的相关系数
BMI0.586
S50.566
BP0.441
S40.430
S3-0.395
S60.382

此外,相关矩阵还显示 S1 与 S2 之间相关系数高达 0.897——这符合直觉:同为血液测量指标,两者高度共线。

参考答案的结论是:Y 与 BMI 及 S5(血糖相关血液指标)的相关性最强,这从医学角度看是合理的(肥胖与血糖水平是糖尿病进展的典型风险因素)。注意:强相关不等于因果关系,本数据集只能说明变量之间存在统计关联。

为进一步直观确认相关性,参考答案还对相关性最强的三个变量(BMI、S5、BP)与 Y 绘制了散点图:

fig, ax = plt.subplots(1,3,figsize=(10,5)) for i,n in enumerate(['BMI','S5','BP']): ax[i].scatter(df['Y'], df[n]) ax[i].set_title(n) plt.show()

散点图中 BMI、S5 均随 Y 呈现明显上升趋势,与相关系数相互印证。

任务 5:假设检验——糖尿病进展在性别间是否存在差异

这是本作业的收尾任务,也是将前面所有统计工具串起来的核心:箱线图显示两性别的 Y 分布略有差异,但这种差异是否显著到足以拒绝原假设(两性别疾病进展无差异)?仅靠肉眼判断不够,需要借助统计检验。

作业采用Student t 检验(两独立样本、方差不齐假设),使用 SciPy 的ttest_ind

from scipy.stats import ttest_ind tval, pval = ttest_ind(df.loc[df['SEX']==1,['Y']], df.loc[df['SEX']==2,['Y']], equal_var=False) print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}")

运行结果:

T-value = -0.90 P-value: 0.3674449793083975

解读方法:p 值代表「在原假设成立的前提下,观察到当前或更极端结果的概率」。p 值越接近 0(通常以 0.05 为阈值),越有把握拒绝原假设、支持「两性别进展不同」的备择假设。

本例 p 值为 0.367,远大于 0.05,因此没有足够证据表明性别会影响糖尿病进展。参考答案的结论是:虽然任务 2 的箱线图与任务 3 的分布图显示了两组间的一定差异,但该差异很可能是抽样误差所致,尚不能构成统计显著证据。

评分标准(Rubric)

作业提供了明确的评分维度,可对照检查自己的完成度:

优秀(Exemplary)合格(Adequate)需改进(Needs Improvement)
所有任务均完成,并配有图形化展示与解释大部分任务完成,但缺少对图形和计算结果的解释或洞察仅完成均值/方差计算与基础绘图等简单任务,未从数据中得出任何结论

由此可见,本作业的评分重点不只是「跑通代码」,而是对统计结果的解读能力——每张图、每个数值都要落到「这说明什么」的层面,这也是数据科学区别于单纯编程的核心所在。

延伸思考

掌握本作业的完整流程后,可以继续尝试以下方向的延伸练习(理论背景见第 4 课讲义):

  • 为 Y 与其他变量分别计算置信区间,观察置信水平变化对区间宽度的影响;
  • 对 AGE、BMI 等近似正态的变量做更细致的分布拟合,验证其是否符合正态假设;
  • 参照讲义中棒球运动员数据的做法,将本数据集中的其他假设(如年龄与进展的关系)也用 t 检验验证一遍;
  • 尝试将 S1~S6 六个血液指标与 Y 做多元相关分析,识别潜在的共线性问题,为后续回归建模做准备。

仓库中还提供了更多数据科学与可视化实战材料,例如 3-Data-Visualization 板块的相关系数可视化任务,可作为本作业的进阶延伸。

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 12:09:13

AI短剧工具实测:LibTV、小云雀、可灵与Seko底层逻辑对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 12:07:54

Bun 运行时深度解析:单体架构、Zig 底层与工程提效实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 12:07:49

Supermemory 怎么设计 containerTag 实现多租户记忆隔离

Supermemory 怎么设计 containerTag 实现多租户记忆隔离 【免费下载链接】supermemory Memory and context engine app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era. 项目地址: https://gitcode.com/GitHub_Trending/s…

作者头像 李华
网站建设 2026/9/12 12:07:47

C#视觉缺陷检测框架在新能源电池制造中的应用

1. 项目背景与核心需求在新能源电池制造领域,视觉缺陷检测系统已成为质量控制的关键环节。传统检测方法面临三大痛点:检测精度不足导致漏检、多工位协同效率低下、产线调试影响正常生产。我们开发的这套C#视觉缺陷检测框架,正是为了解决这些行…

作者头像 李华
网站建设 2026/9/12 12:06:55

Consolidated Review: PR {number}

Consolidated Review: PR #{number} 【免费下载链接】Archon The first open-source harness builder for AI coding. Make AI coding deterministic and repeatable. 项目地址: https://gitcode.com/GitHub_Trending/archon3/Archon Date: {ISO timestamp} Agents: cod…

作者头像 李华
网站建设 2026/9/12 12:06:37

AI写作助手如何提升创作效率与质量

1. 项目概述:当创意遇上AI写作助手"好写作AI"是一款面向文字工作者的智能创作辅助工具,专门解决写作过程中的创意枯竭问题。它通过自然语言处理技术模拟头脑风暴过程,能在作者卡壳时提供情节发展建议、修辞优化方案甚至完整段落生成…

作者头像 李华