问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Matlab箱线图详解,从原理到实战应用

创作时间:
作者:
@小白创作中心

Matlab箱线图详解,从原理到实战应用

引用
CSDN
1.
https://m.blog.csdn.net/weixin_31268759/article/details/146167197

箱线图(Boxplot),又称盒须图,由美国统计学家John Tukey于1977年提出,是一种用于展示数据分布特征的标准化可视化工具。它通过五个关键统计量(最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)、最大值)直观呈现数据的集中趋势、离散程度及潜在异常值。相较于直方图或核密度图,箱线图在多组数据对比和小样本分析中更具优势,尤其适用于探索性数据分析(EDA)异常值检测

一、箱线图的核心组成与统计学意义

1. 箱线图的基本结构

箱线图由以下6个关键部分组成:

  • 箱体(Box)

  • 下边界:第一四分位数(Q1,25%),即数据中25%的观测值小于等于Q1。

  • 中间线:中位数(Q2,50%),即数据的中等水平。

  • 上边界:第三四分位数(Q3,75%),即75%的数据点小于等于Q3。

  • 箱长:IQR(Inter Quartile Range)= Q3 − Q1,反映数据中间50%的分布范围。

  • 须(Whisker)

  • 上线须延伸至 Q3 + 1.5×IQR 或数据集的最大值(取两者较小者)。

  • 下线须延伸至 Q1 − 1.5×IQR 或数据集的最小值(取两者较大者)。

  • 异常值(Outliers)

  • 超出须范围的离散点,可能是数据录入错误、测量误差或真实极端值。

2. 箱线图的统计学解读

  • 对称性:若中位数位于箱体中心,则数据分布大致对称;若中位数偏向上/下边界,则暗示右偏/左偏。
  • 离散程度:IQR较小说明数据集中,反之则分散。
  • 异常值数量:过多异常值可能需检查数据质量或考虑非参数统计方法。

二、箱线图的适用场景与优势

1. 典型应用场景

  • 多组数据对比:比较不同实验组、时间段或类别的数据分布。
  • 异常值检测:快速定位需重点关注的数据点。
  • 非参数数据展示:不依赖数据分布假设,适用于非正态分布数据。

2. 与其他图表的对比

图表类型
优势
局限性
箱线图
简洁展示五数概括,适合多组对比
无法展示具体分布形状(如双峰)
直方图/密度图
直观显示数据分布形态
多组对比时占用空间大
散点图
展示个体数据点及变量关系
数据量大时易重叠,难以提炼统计特征

三、基于MATLAB的箱线图绘制

1. 基础绘图函数

% 生成模拟数据(三组)
group1 = randn(100,1)*2 + 5;
group2 = randn(100,1)*1 + 8;
group3 = randn(100,1)*0.5 + 10;
data = [group1, group2, group3];

% 绘制基础箱线图
figure;
boxplot(data, 'Labels', {'Group A', 'Group B', 'Group C'});
title('基础箱线图:三组数据分布对比');
ylabel('观测值');
grid on;

2. 自定义样式优化

(1) 修改颜色与透明度

% 获取箱线图对象
h = findobj(gca, 'Tag', 'Box');

% 定义颜色矩阵(RGB)
colors = [0.9 0.2 0.2;   % 红色
          0.2 0.6 0.2;   % 绿色
          0.2 0.2 0.8];  % 蓝色

% 为每个箱体赋予不同颜色
for i = 1:length(h)
    patch(get(h(i), 'XData'), get(h(i), 'YData'), colors(i,:), 'FaceAlpha', 0.6);
end

% 调整异常点样式
set(findobj(gca, 'Tag', 'Outliers'), 'Marker', 'd', 'MarkerSize', 8);

(2) 添加均值标记

% 计算每组均值
means = mean(data);

% 在箱体顶部绘制均值线
hold on;
plot(1:3, means, 'r*', 'MarkerSize', 10, 'LineWidth', 1.5);
text(1:3, means + 0.5, cellstr(num2str(means', 'μ=%.2f')), ...
     'Color', 'r', 'FontSize', 10);
hold off;

3. 横向箱线图绘制

figure;
boxplot(data, 'Labels', {'Group A', 'Group B', 'Group C'}, 'Orientation', 'horizontal');
xlabel('观测值');
title('横向箱线图');
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号