Data Science for Beginners 实战:糖尿病数据小研究——均值、分布、相关性与假设检验全流程解析

📅 发布时间:2026/9/10 17:54:57
Data Science for Beginners 实战:糖尿病数据小研究——均值、分布、相关性与假设检验全流程解析
Data Science for Beginners 实战糖尿病数据小研究——均值、分布、相关性与假设检验全流程解析【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners这篇技术指南围绕 1-Introduction/04-stats-and-probability 课程配套作业「Small Diabetes Study糖尿病数据小研究」展开完整讲解如何用 Pythonpandas、matplotlib、SciPy对一组真实的糖尿病患者数据进行描述性统计、可视化与推断统计从计算均值/方差、绘制箱线图与直方图到构建相关矩阵、执行双样本 t 检验。读完本文你将掌握一套可直接复用的「数据→描述→可视化→相关性→假设检验」五步分析范式并能在本仓库的 Jupyter Notebook 中逐任务复现全部结果。任务背景我们要研究什么「Small Diabetes Study」是 Data Science for Beginners 项目第 04 课《统计与概率导论》的课后作业目标是使用概率与统计的方法研究一组小规模的糖尿病患者数据集。该数据集由仓库本地文件 data/diabetes.tsv 提供共 442 条患者记录、11 个字段字段含义如下依据 1-Introduction/04-stats-and-probability/solution/assignment.ipynb 中的说明字段含义AGE年龄SEX性别编码取值为 1 与 2 两类BMI身体质量指数Body Mass IndexBP平均血压S1 ~ S6六项不同的血液检测指标Y一年内疾病进展的定量度量目标变量数据文件为制表符\t分隔的文本文件前几行示例对应作业文档给出的样例AGESEXBMIBPS1S2S3S4S5S6Y059232.1101.015793.238.04.04.859887151148121.687.0183103.270.03.03.89186975272230.593.015693.641.04.04.672885141作业要求完成五个具体任务详见 1-Introduction/04-stats-and-probability/assignment.md计算所有变量的均值与方差按性别SEX绘制 BMI、BP、Y 的箱线图分析 Age、Sex、BMI、Y 变量的分布形态检验各变量与疾病进展Y之间的相关性检验「男性与女性的糖尿病进展程度不同」这一假设。下文将逐一拆解这五项任务给出可运行的代码与可验证的结果解读。环境准备与数据加载作业要求在本仓库的 1-Introduction/04-stats-and-probability/assignment.ipynb 中完成该 Notebook 已内置任务骨架与数据加载代码各任务留有待填充的代码单元。运行环境为 Python 3.8 condaNotebook 元数据中声明的 kernel 为 Python 3.8.8需要 pandas、numpy、matplotlib 与 scipy.stats 等常用科学计算库。第一步是读取数据。作业 Notebook 中给出的加载方式为import pandas as pd import numpy as np df pd.read_csv(../../data/diabetes.tsv, sep\t) df.head()其中../../data/diabetes.tsv是相对于 Notebook 所在目录1-Introduction/04-stats-and-probability/的路径从仓库根目录看即 data/diabetes.tsv。sep\t指明文件使用制表符分隔df.head()用于快速预览前 5 行验证各列类型与数值是否正常。提示本作业中的SEX列存储为数值型1 与 2进行分组、绘图、t 检验时可直接以该数值作为分组键无需额外做标签映射。任务一计算所有变量的均值与方差均值mean反映数据的集中趋势方差variance反映数据的离散程度——这是第 04 课「Mean, Variance and Standard Deviation」一节的核心概念。作业要求对全部 11 个变量逐一计算。最快捷的方式是直接调用 DataFrame 的聚合方法参考 solution/assignment.ipynbdf.mean() # 各列均值 df.var() # 各列方差更专业的做法是合并展示便于一次性对照pd.DataFrame([df.mean(), df.var()], index[Mean, Variance])此外df.describe()能一次性输出 count、mean、std、最小值、四分位数与最大值相当于对「均值离散程度分布区间」做了全景速览df.describe()基于解决方案 Notebook 中的真实输出关键变量的描述性统计如下样本量均为 442变量均值标准差最小值25% 分位中位数75% 分位最大值AGE48.5213.111938.25505979BMI26.384.4218.023.2025.7029.2842.2BP94.6513.83628493105133Y152.1377.092587140.5211.5346各变量的方差与上述df.var()对应注意 pandas 默认采用样本方差、即分母为 n-1变量方差AGE171.85SEX0.25BMI19.52BP191.30S11197.72S2924.96S3167.29S41.67S50.27S6132.17Y5943.33从数值可以直观读出两个信息Y 的方差5943远大于其他变量说明患者间疾病进展程度的个体差异非常大而 S5、S4 这类量纲较小的血液指标方差很低其波动尺度与其他指标不在一个量级——这提醒我们在做后续相关性分析时不要直接比较协方差而要使用归一化后的相关系数见任务四。任务二按性别绘制 BMI、BP、Y 的箱线图箱线图box plot用中位数、上下四分位数与须线直观呈现数据分布还能标出离群点outlier。本任务要求按性别分组观察三个关键变量在两组间是否存在肉眼可见的差异。pandas 的DataFrame.boxplot支持按分组列拆分绘制代码非常简洁参考解决方案for col in [BMI, BP, Y]: df.boxplot(columncol, bySEX) plt.show()对BMI、BP、Y三个列分别循环调用bySEX会把每个变量按性别 1 / 性别 2 各画一个箱体便于横向对比两组的中位数、四分位区间与离群点。读图要点结合第 04 课 README 中关于箱线图与四分位距的讲解箱体上下边界对应 Q1 与 Q3箱体中的横线是中位数箱体上下的须线延伸到 1.5×IQRIQR Q3 − Q1范围内的最远数据点超出范围的点即为离群点比较两组箱体的位置与重叠程度可以初步判断该变量是否与性别相关。在实际观察中BMI 与 BP 两组箱体大致重叠而 Y 的箱体位置、形状存在一定差异——这为任务五的正式假设检验提供了可视化直觉「看起来有差异」并不等于「统计上显著」还需要用假设检验给出定量结论。任务三分析 Age、Sex、BMI、Y 的分布本任务关注四个变量的分布形态最直观的工具是直方图histogram。直方图把取值区间bins作为横轴、区间内的样本计数作为纵轴用于判断分布是正态、均匀、偏态还是多峰对应第 04 课「Probability Distribution」与「Normal Distribution」两节的内容。解决方案中通过循环对每个变量绘制直方图for col in [AGE, SEX, BMI, Y]: df[col].hist() plt.show()结合直方图形状解决方案给出的结论如下AGE年龄呈近似正态分布中间高、两端低峰值集中在 40~60 岁区间与df.describe()中「均值 48.5 ≈ 中位数 50」的特征一致SEX性别只取 1 和 2 两个值是典型的均匀/离散分布两类的计数大致相当BMI、Y直方图形态介于两者之间仅凭直方图较难断言其服从何种分布需要更严格的正态性检验才能下结论。这一步的训练价值在于观察分布形态是后续所有统计推断的前提。比如任务五的 t 检验对分布形态有一定假设要求先通过直方图建立对数据的感性认识能帮助分析者判断统计方法是否适用。任务四检验各变量与疾病进展Y的相关性相关性分析用于回答「哪些指标与疾病进展 Y 关系更紧密」。任务提示给出了关键建议相关矩阵correlation matrix能提供关于变量依赖关系最有用的信息。pandas 一行即可输出全部变量两两之间的 Pearson 相关系数矩阵df.corr()矩阵是对称的对角线恒为 1变量与自身的相关性第 i 行第 j 列的值表示第 i 个变量与第 j 个变量的相关系数取值范围在 [−1, 1]1 为强正相关−1 为强负相关0 为无线性相关。关键结论各变量与 Y 的相关系数取自解决方案输出变量与 Y 的相关系数AGE0.188SEX0.043BMI0.586BP0.441S10.212S20.174S3−0.395S40.430S50.566S60.382解决方案给出的解读是与疾病进展 Y 相关性最强的是 BMI0.586和 S50.566代表血糖相关的血液指标这在医学意义上相当合理。此外 BP0.441、S40.430也表现出中等强度的正相关而 S3 与 Y 呈中等负相关−0.395。相关矩阵还能揭示自变量之间的共线性例如 S1 与 S2 的相关系数高达 0.897S3 与 S4 为 −0.738——血液指标之间高度相关。这在后续构建预测模型时是需要警惕的多重共线性信号本课程后续「真实世界数据」等章节会进一步探讨这类问题。为了让相关性更直观解决方案还绘制了 Y 与 BMI、S5、BP 的散点图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()散点图中 Y 与 BMI、S5 呈现明显的正向带状趋势与相关矩阵的数值相互印证。需要强调的是对应第 04 课「Covariance and Correlation」一节的提醒相关不等于因果。两个变量强相关可能源于共同的外部因素也可能纯属偶然数学上的强相关只是「两者存在某种联系」的良好信号不能据此断言 Y 由某变量引起。任务五假设检验——男女的糖尿病进展是否存在差异最后一个任务是正式的推断统计检验「糖尿病进展程度Y在男性和女性之间存在差异」这一假设。这与第 04 课 README 中「第一垒手比第二垒手更高」的例子是同一套路——先提出假设再用统计检验给出量化证据。当两组数据近似服从正态分布时可以使用Student t 检验两独立样本 t 检验比较两组的均值。Python 中通过 SciPy 的ttest_ind实现它同时返回 t 值和 p 值p 值用于判断结果是否具有统计显著性from scipy.stats import ttest_ind tval, pval ttest_ind( df.loc[df[SEX] 1, [Y]], df.loc[df[SEX] 2, [Y]], equal_varFalse # 使用 Welch t 检验不假设两组方差相等 ) print(fT-value {tval[0]:.2f}\nP-value: {pval[0]})该代码把数据按SEX拆成两组比较两组的 Y 均值是否显著不同。参数equal_varFalse表示采用 Welch 修正版 t 检验对两组方差不等的情况更稳健。解决方案的实际输出为T-value -0.90 P-value: 0.3674449793083975结论解读p 值为 0.367远高于常用的显著性阈值 0.05。p 值接近 0通常低于 0.05才意味着对假设有较高置信度当前结果说明没有强有力的证据表明性别会影响糖尿病的进展程度——尽管任务二的箱线图里两组 Y 似乎有些差异但统计检验告诉我们这个差异很可能只是抽样波动。这与 README 中棒球运动员身高的例子形成鲜明对比那里 t 检验的 p 值小到9.14e-12从而有力支持「第一垒手更高」的假设。对比两个案例正是理解 p 值含义的最佳练习。评分标准与完成度自检作业文档提供了三级评分量表Rubric是判断完成质量的标准优秀Exemplary合格Adequate需改进Needs Improvement所有要求任务均已完成结果有图形化展示并配有解释大部分任务完成但缺少对图形或计算结果的解释与结论仅完成均值/方差计算和简单绘图等基础任务未从数据中得出任何结论对照该量表自查三个要点完整性五个任务是否全部完成尤其是任务四的相关矩阵与任务五的 t 检验可视化箱线图、直方图、散点图是否齐备解释力是否对每个图形和数值结果写出了结论——这正是从「合格」跨入「优秀」的关键。总结与进一步探索通过这五项任务我们完整走了一遍数据分析的经典流程描述用mean()/var()/describe()掌握每个变量的集中趋势与离散程度可视化用箱线图对比分组差异用直方图观察分布形态相关分析用df.corr()建立相关矩阵锁定与目标变量 Y 关系最强的 BMI 与 S5假设检验用scipy.stats.ttest_ind完成两样本 t 检验并依据 p 值给出「无显著证据表明性别影响进展」的结论。想要动手实践可以打开带任务骨架的 1-Introduction/04-stats-and-probability/assignment.ipynb 自行完成五个任务参考带完整输出与结论的 1-Introduction/04-stats-and-probability/solution/assignment.ipynb 对照检查系统学习本课全部统计概念概率分布、均值/方差、四分位与箱线图、正态分布、置信区间、假设检验、协方差与相关可阅读课程主文档 1-Introduction/04-stats-and-probability/README.md。进阶挑战把任务四中发现的强相关变量BMI、S5、BP作为候选特征尝试建立简单的线性回归模型预测 Y并观察删除共线变量如 S1/S2后模型稳定性的变化——这将为后续「真实世界数据」与机器学习章节打下基础。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考