缺失值
数据的确实主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确。
异常值分析
异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不如剔除得把异常值包括进数据的计算分析过程中,对结果会带来不良影响;重视异常值的出现,分析其产生原因,常常成为发现问题而改进决策的契机。异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点的分析。
matlab代码展示
%% 餐饮销量数据缺失值及异常值检测
clear;
% 初始化参数
catering_sale = '数据所在位置'; % 数据
index = 1; % 销量数据所在列
%% 读入数据
[num,txt] = xlsread(catering_sale);
sales =num(2:end,index);
rows = size(sales,1);
%% 缺失值检测 并打印结果
nanvalue = find(isnan( sales));
if isempty(nanvalue) % 没有缺失值
disp('没有缺失值!');
else
rows_ = size(nanvalue,1);
disp(['缺失值个数为:' num2str(rows_) ',缺失率为:' num2str(rows_/rows) ]);
end
%% 异常值检测
% 箱形图上下界
q_= prctile(sales,[25,75]);
p25=q_(1,1);
p75=q_(1,2);
upper = p75+ 1.5*(p75-p25);
lower = p25-1.5*(p75-p25);
upper_indexes = sales(sales>upper);
lower_indexes = sales(sales<lower);
indexes =[upper_indexes;lower_indexes];
indexes = sort(indexes);
% 箱形图
figure
hold on;
boxplot(sales,'whisker',1.5,'outliersize',6);
rows = size(indexes,1);
flag =0;
for i =1:rows
if flag ==0
text(1+0.01,indexes(i,1),num2str(indexes(i,1)));
flag=1;
else
text(1-0.017*length(num2str(indexes(i,1))),indexes(i,1),num2str(indexes(i,1)));
flag=0;
end
end
hold off;
disp('数据缺失值及异常值检测完成!');
运行结果如下
缺失值个数为:1,缺失率为:0.005
餐饮销量数据缺失值及异常值检测完成!
对于这个图像 这个图像为箱型图
它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间。
箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性。