✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
箱线图是一种用于展示数据分布的统计图形。它可以帮助我们快速了解数据的中心趋势、离散程度和异常值。
箱线图的组成
箱线图由以下几个部分组成:
-
中位数:数据的中值是将数据从小到大排列后,位于中间位置的值。中位数将数据分为两半,一半的值大于中位数,一半的值小于中位数。
-
四分位数:数据的第一四分位数是将数据从小到大排列后,位于 25% 位置的值。数据的第三四分位数是将数据从小到大排列后,位于 75% 位置的值。
-
箱体:箱体是位于第一四分位数和第三四分位数之间的矩形。箱体的高度表示数据的四分位数范围。
-
触须:触须是连接箱体和极值点的线段。触须的长度通常为 1.5 倍的四分位数范围。
-
极值点:极值点是位于触须之外的数据点。极值点可能是异常值,也可能是正常数据。
箱线图的绘制
箱线图的绘制步骤如下:
-
将数据从小到大排列。
-
计算数据的四分位数和中位数。
-
绘制箱体。箱体的左端点为第一四分位数,箱体的右端点为第三四分位数。箱体的高度为四分位数范围。
-
绘制触须。触须的左端点为第一四分位数减去 1.5 倍的四分位数范围,触须的右端点为第三四分位数加上 1.5 倍的四分位数范围。
-
绘制极值点。极值点是位于触须之外的数据点。
箱线图的解读
箱线图可以帮助我们快速了解数据的中心趋势、离散程度和异常值。
-
中位数:中位数是数据的中心趋势。中位数将数据分为两半,一半的值大于中位数,一半的值小于中位数。
-
四分位数范围:四分位数范围是数据的第一四分位数和第三四分位数之差。四分位数范围表示数据的离散程度。四分位数范围越大,数据的离散程度越大。
-
极值点:极值点是位于触须之外的数据点。极值点可能是异常值,也可能是正常数据。
箱线图的应用
箱线图广泛应用于数据分析和统计学中。箱线图可以帮助我们快速了解数据的分布情况,找出异常值,并比较不同数据集之间的差异。
箱线图的应用场景包括:
-
数据探索:箱线图可以帮助我们快速了解数据的分布情况,找出异常值。
-
数据比较:箱线图可以帮助我们比较不同数据集之间的差异。
-
异常值检测:箱线图可以帮助我们检测异常值。
-
统计分析:箱线图可以用于统计分析,例如计算数据的平均值、中位数和标准差。
📣 部分代码
function varargout = minmax(a, type, whis)
%MINMAX Returns minimum and maximum value in the given array
%
% [minval maxval] = minmax(a)
% lims = minmax(a);
% lims = minmax(a, type);
% lims = minmax(a, type, w);
%
% Computes the minimum and maximum value in entire array (all dimensions).
%
% Input variables:
%
% a: numeric array
%
% type: 'all': absolute minimum and maximum (default)
% 'noout': discards outliers
% 'center': centers on zero
% 'centernoout': centers on 0 and eliminates outliers
% 'expand': wider that 'all' by a specifed fraction
%
% w: for no-outlier version, factor defining an outlier. Point is
% considered an outlier if larger than q3+w*(q3-q1) or smaller
% than q1-w*(q3-q1) [1.5]
%
% for expand version, fraction of actual range to add onto each
% end [0.1]
%
% Output variables:
%
% minval: minimum value in a
%
% maxval: maximum value in a
% Copywrite 2005 Kelly Kearney
if nargin == 1
type = 'all';
end
switch type
case 'all'
minval = min(a(:));
maxval = max(a(:));
case 'noout'
if nargin < 3
whis = 1.5;
end
pctiles = prctile(a(:),[25 75]);
q1 = pctiles(1);
q3 = pctiles(2);
vhi = q3+whis*(q3-q1);
vlo = q1-whis*(q3-q1);
minval = min(a(a > vlo));
maxval = max(a(a < vhi));
if isempty(minval)
minval = vlo;
end
if isempty(maxval)
maxval = vhi;
end
case 'center'
temp = max(abs([min(a(:)) max(a(:))]));
minval = -temp;
maxval = temp;
case 'centernoout'
if nargin < 3
whis = 1.5;
end
pctiles = prctile(a(:),[25 75]);
q1 = pctiles(1);
q3 = pctiles(2);
vhi = q3+whis*(q3-q1);
vlo = q1-whis*(q3-q1);
temp = max(abs([min(a(a > vlo)) max(a(a < vhi))]));
minval = -temp;
maxval = temp;
case 'expand'
if nargin < 3
whis = 0.1;
end
minval = min(a(:));
maxval = max(a(:));
da = maxval - minval;
minval = minval - whis*da;
maxval = maxval + whis*da;
otherwise
error('Unrecognized option: %s', type);
end
if nargout == 2
varargout{1} = minval;
varargout{2} = maxval;
elseif nargout == 1
varargout{1} = [minval maxval];
elseif nargout == 0
[minval maxval]
else
error('Wrong number of output arguments');
end