2026a
# 使用箱线图比较分组数据
此示例展示了如何通过创建带缺口的箱线图来比较两组数据。
缺口显示样本中位数的变异性。缺口的宽度是经过计算的,使得缺口不重叠的箱体在 5% 的显著性水平下具有不同的中位数。显著性水平基于正态分布的假设,但中位数的比较对于其他分布也相当稳健。比较箱线图的中位数就像一种可视化的假设检验,类似于用于均值的 t 检验。有关箱线图不同特征的更多信息,请参见 boxplot。
加载 fisheriris 数据集。该数据集包含三种鸢尾花的花萼和花瓣的长度和宽度测量值。将山鸢尾(setosa)的花萼宽度数据存储为 s1,将变色鸢尾(versicolor)的花萼宽度数据存储为 s2。
using TyStatistics
using TyPlot
using TyMath
using TyBase
path = pkgdir(TyStatistics)
datapath = path *"/data/fisheriris.mat"
data =load(datapath)
s1 = meas[1:50,2];
s2 = meas[51:100,2];
使用样本数据创建带凹口的箱线图,并在每个箱体上标注其代表的鸢尾花种类名称。
boxplot([s1 s2],notch = "on",labels = ["setosa","versicolor"])
两个箱子的缺口没有重叠,这表明在 5% 的显著性水平上,鸢尾花中的 Setosa 和 Versicolor 的花萼中位宽有显著差异。Setosa 箱子中的红色中位线和 Versicolor 箱子中的红色中位线都没有出现在箱子中央,这表明每个样本都有轻微的偏斜。此外,Setosa 数据包含一个异常值,而 Versicolor 数据没有任何异常值。
你可以使用 Syslab 的 boxchart 函数来创建箱线图,而不是使用 boxplot 函数。使用 boxchart 函数重新创建之前的图表。
speciesName = categorical(species[1:100]);
sepalWidth = meas[1:100,2];
b = boxchart(speciesName,sepalWidth,notch="on");
箱形图创建的每个缺口都是围绕中位线的锥形阴影区域。阴影有助于更好地识别缺口。
使用箱形图的一个优点是该函数会创建一个 BoxChart 对象,你可以通过点符号轻松更改其属性。例如,你可以通过指定对象 b 的 set_marker 属性来更改离群值的样式。
b["fliers"][1].set_marker(".")
有关使用箱线图的优势的更多信息,请参阅替代功能。