ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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 indexBP平均血压average blood pressureS1 ~ S6六种不同的血液测量指标Y一年内疾病进展程度的定量度量disease progression数据前几行如下AGESEXBMIBPS1S2S3S4S5S6Y059232.1101.15793.238.04.4.859887151148121.687.0183103.270.3.3.89186975272230.593.015693.641.04.04.85141作业要求在 1-Introduction/04-stats-and-probability/assignment.ipynb 中完成以下五项任务计算所有变量的均值与方差分别按性别绘制 BMI、BP、Y 的箱线图分析 AGE、SEX、BMI、Y 四个变量的分布形态检验不同变量与疾病进展Y之间的相关性检验「糖尿病进展在男性和女性之间存在差异」这一假设。仓库同时提供了完整的参考答案笔记本下文所有统计结果均来自该参考答案的真实输出。关于均值、方差、箱线图、正态分布、假设检验与相关性等概念的完整理论讲解可参阅本课讲义 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()参考答案输出摘要部分统计量AGESEXBMIBPS1S2S3S4S5S6Ycount442442442442442442442442442442442mean48.521.4726.3894.65189.14115.4449.794.074.6491.26152.13std13.110.504.4213.8334.6130.4112.931.290.5211.5077.09min19.001.0018.0062.0097.0041.6022.002.003.2658.0025.0025%38.251.0023.2084.00164.2596.0540.253.004.2883.2587.0050%50.001.0025.7093.00186.00113.0048.004.004.6291.00140.5075%59.002.0029.28105.00209.75134.5057.755.005.0098.00211.50max79.002.0042.20133.00301.00242.4099.009.096.11124.00346.00方法二显式计算均值与方差矩阵若只想得到均值与方差两行可直接调用df.mean()与df.var()并拼成一个 DataFramepd.DataFrame([df.mean(), df.var()], index[Mean,Variance])参考答案输出AGESEXBMIBPS1S2S3S4S5S6YMean48.521.4726.3894.65189.14115.4449.794.074.6491.26152.13Variance171.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, Q31.5*IQR]IQRQ3-Q1 为四分位距的点被标记为离群值。用 Pandas 内置的boxplot方法即可按 SEX 分组绘制箱线图for col in [BMI,BP,Y]: df.boxplot(columncol, bySEX) 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.586S50.566BP0.441S40.430S3-0.395S60.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_indfrom scipy.stats import ttest_ind tval, pval ttest_ind(df.loc[df[SEX]1,[Y]], df.loc[df[SEX]2,[Y]], equal_varFalse) print(fT-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),仅供参考
返回列表