在数学建模中往往需要对数据中的异常值进行处理,而其中面对数学建模中庞大的数据要找到其中的异常值,往往建模小白不知道如何下手。今天,将通过简单的几行代码轻松解决数学建模中数据异常值!
箱线图(Boxplot)是一种用来显示数据分布情况的统计图表,常用于描述数据集的集中趋势和离散程度。它主要由以下几个部分组成:
1. 中位数(Median):箱线图中的一条横线表示数据的中位数,反映数据的中心位置。
2. 四分位数(Quartiles):箱体的上下边缘分别代表第一四分位数(Q1)和第三四分位数(Q3),即数据分布的25%和75%的位置。
3. 内限距(IQR):箱体的高度表示四分位距(IQR),即Q3和Q1之间的差值,反映数据的集中程度。内限距(IQR,Interquartile Range)通常取的是数据的第三四分位数(Q3)减去第一四分位数(Q1)的差值,即IQR = Q3 - Q1。它反映了数据中间50%的分布范围。在箱线图中,内限距(IQR)通常用于计算须(Whiskers)的长度,定义为从Q1延伸至Q1 - 1.5 × IQR,以及从Q3延伸至Q3 + 1.5 × IQR。任何超出这个范围的值通常被视为异常值(Outliers)。1.5倍的IQR是一个常见的默认值,但在特定的分析中,也可以根据需要调整这个倍数。
4. 须(Whiskers):箱体两侧延伸的线段,通常表示数据范围内的非异常值。须的长度通常为1.5倍的IQR,但可以根据具体情况调整。
5. 异常值(Outliers):图中在须之外的独立点,这些点表示超出正常范围的异常数据。
通过箱线图识别出异常值后,我们可以通过将其设为缺失值来进行处理!
通过一个简单的代码来实现(大家可以直接将x的数据替换成自己的数据就可以)
x=[48 51 57 57 49 86 48 53 59 50 48 47 53 56 60];
Q1=prctile(x,25);%下四分位数
Q3=prctile(x,75);%上四分位数
IQR=Q3-Q1;%四分位距
lb=Q1-1.5*IQR%下界
ub=Q3+1.5*IQR%上界
temp=(x<lb)|(x>ub);
ind=find(temp)
% 绘制箱线图
figure;
boxplot(x, 'orientation', 'horizontal');
hold on;
scatter(x(ind), ones(size(ind)), 'r', 'filled'); % 在箱线图上用红点标记异常值
hold off;
title('Boxplot with Outlier Highlighted');
xlabel('Value');