连续变量的单变量图类型
内容提要
本文介绍连续变量的单变量图类型,包括直方图、密度图、Q-Q图、P-P图和经验分布函数图,说明各自用途与区别。重点讲解用Matplotlib、ProPlot和SciencePlots绘制直方图,涵盖设置分箱、添加正态分布曲线和中位数线等统计信息,以及使用Seaborn的histplot函数。
延伸解读
直方图与密度图:互补的分布观察工具
直方图通过分组计数展示数据分布,但分组数量会影响呈现效果;密度图作为其变体,用平滑曲线反映数值水平,能避免因分组数导致的数据展示不完整,更利于判断整体趋势。两者都用于观察连续变量的分布,但密度图对核函数选择敏感,不同核函数会得到不同的估计结果。实际应用中,可结合两者优势,先用直方图看大致形态,再用密度图辅助判断趋势。
Q-Q图与P-P图:分布检验的两种视角
Q-Q图通过比较分位数来检验数据是否服从某分布,若两分布相似,点会落在y=x线上;若线性相关,点会落在一条直线上。P-P图则基于累积概率比较,当样本符合预期分布时,点会形成一条直线。两者都用于分布检验,但方法不同:Q-Q图对尾部差异更敏感,P-P图对中部差异更敏感。在学术研究中,直方图或密度图的使用频率远高于Q-Q图,但Q-Q图能揭示位置、尺度和偏度等特性。
绘制直方图时添加统计信息的技巧
在直方图上添加正态分布曲线、均值线或中位数线,能更直观地展示统计信息。难点在于正态曲线的绘制:需用scipy.stats.norm拟合数据并计算概率密度函数(PDF),由于PDF已归一化(曲线下面积为1),而直方图总面积为样本数与组距的乘积,因此需将PDF结果乘以样本数和组距,才能将曲线缩放到与直方图高度匹配。中位数线则直接用axvline绘制。
Matplotlib、ProPlot与SciencePlots的直方图绘制对比
文章展示了用Matplotlib、ProPlot和SciencePlots绘制直方图的示例。Matplotlib提供基础功能,通过rcParams可自定义字体、坐标轴等样式;ProPlot简化了子图格式设置,如通过ax.format统一调整标签和范围;SciencePlots则通过plt.style.context(['science'])一键应用学术风格主题。三者核心绘图逻辑相似,但ProPlot和SciencePlots在样式统一和代码简洁性上更有优势,适合需要快速产出规范图表的场景。
Q&A
连续变量的单变量图有哪些常见类型?
常见的类型包括直方图、密度图、Q-Q图、P-P图和经验分布函数图。
直方图和密度图有什么区别?
直方图通过分组计数用矩形高度表示频数,而密度图用平滑曲线反映数据分布,不受分组数量影响,能更有效地判断整体趋势。
Q-Q图是用来做什么的?
Q-Q图用于检验数据分布是否服从某种理论分布,通过比较分位数,若两个分布相似,点会落在y=x线上;若线性相关,点会落在一条直线上。
P-P图和Q-Q图有什么不同?
P-P图基于累积概率与理论累积概率的关系,而Q-Q图基于分位数比较。两者都用于检验分布,但检验方法不同。
如何用Matplotlib绘制直方图?
使用axes.Axes.hist()函数,参数x为数据,bins定义分箱(整数、序列或字符串),density控制是否绘制密度图。
如何在直方图上添加正态分布曲线和中位数线?
使用scipy.stats.norm.fit拟合数据得到均值和标准差,计算概率密度函数,并乘以样本数和箱宽以匹配直方图高度,然后用ax.plot绘制曲线;用ax.axvline绘制中位数线。
Seaborn的histplot函数有什么作用?
Seaborn的histplot函数可以更灵活地绘制直方图。