养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

MATLAB使用统计法卡方分布表剔除异常数据处理

时间:2024-09-21 16:45:19

对于从工业或者其他场合获取的数据表格,一般需要进行数据预处理才能够作为有价值的数据供分析和研究使用,下面分享给大家一种“MATLAB使用统计法卡方分布表剔除异常数据处理”方法,帮助大家进行数据清洗和处理。

工具/原料

电脑

MATLAB

样本数据表格

方法/步骤

1、使用xlsread读入样本数据。A12=xlsread('样本数据.xlsx','sheet1');检查是否读入。

MATLAB使用统计法卡方分布表剔除异常数据处理

2、赋值和计算需要进行数据处理的数据行数。程序:HanData1=A12(:,[1:3]);x1=(1:length(HanData1))';handle_x1=x1;%length(HanData)为行数n1=size(x1,1);%n=size(x,1)为行数计算。

MATLAB使用统计法卡方分布表剔除异常数据处理

3、然后对数据归一化处理,计算协方差矩阵,对每列归一化后的数据求均值。程序:for咯悝滩镞i=1:size(HanData1,2)%si芰垄孕动ze(HanData,2)为列数guiHanData1(:,i)=(HanData1(:,i)-mean(HanData1(:,i)))/std(HanData1(:,i));%对数据归一化处理S1=cov(guiHanData1);%计算协方差矩阵mHanData1(:,i)=mean(guiHanData1(:,i));%对每列归一化后的数据求均值end运行结果。

MATLAB使用统计法卡方分布表剔除异常数据处理

4、然后计算每行数据的卡方分布因子。MATLAB程序如下:m1=zeros(n1,1);fori=1:n1m1(i)=(guiHanData1(i,:)-mHanData1)*inv(S1)*(guiHanData1(i,:)-mHanData1)';%计算每行数据的卡方分布因子end运行后结果如下图。

MATLAB使用统计法卡方分布表剔除异常数据处理

5、索引卡方分布因子大于预设卡方分布因子大于10的行标,预设值越大则删除的数据越少,可查看卡方分布表。程序:out1=find(m1>10);计算结果。

MATLAB使用统计法卡方分布表剔除异常数据处理

6、取出卡方分布因子大于预设卡方分布因子大于10的所在行的数据保存至outData,即将要剔除的数据。outData1=HanData1(out1,:);运行。

MATLAB使用统计法卡方分布表剔除异常数据处理

7、剔除卡方分布因子大于预设卡方分布因子大于10的所在行的数据。HanData1(out1,:)=[];handle_x1(out1,:)=[];运行结果如下。

MATLAB使用统计法卡方分布表剔除异常数据处理

8、将数据处理的效果用图形显示出来。MATLAB程序如下:%画图figure(&#补朱锚卦39;NumberTitl髫潋啜缅e','off','Name','数据处理');subplot(2,2,1);plot(handle_x1,HanData1(:,3),'o',x1(out1),outData1,'ro','LineWidth',2.5);%holdon%plot(x(out),outData,'ro');gridonxlabel('自变量');ylabel('因变量');legend('正常值','异常值')title('样本数据处理');%****************************************************************运行后图形效果如下。

MATLAB使用统计法卡方分布表剔除异常数据处理

9、完整的“MATLAB使用统塥骈橄摆计法卡方分布表剔除异常数据处理”程序代码如下:A12=xlsread('样本数据.xlsx','sheet1刻八圄俏9;);%读入样本数据%*******剔除不正常数据***************************************HanData1=A12(:,[1:3]);x1=(1:length(HanData1))';handle_x1=x1;%length(HanData)为行数n1=size(x1,1);%n=size(x,1)为行数fori=1:size(HanData1,2)%size(HanData,2)为列数guiHanData1(:,i)=(HanData1(:,i)-mean(HanData1(:,i)))/std(HanData1(:,i));%对数据归一化处理S1=cov(guiHanData1);%计算协方差矩阵mHanData1(:,i)=mean(guiHanData1(:,i));%对每列归一化后的数据求均值endm1=zeros(n1,1);fori=1:n1m1(i)=(guiHanData1(i,:)-mHanData1)*inv(S1)*(guiHanData1(i,:)-mHanData1)';%计算每行数据的卡方分布因子endout1=find(m1>10);%索引卡方分布因子大于预设卡方分布因子大于10的行标,预设值越大则删除的数据越少,可查看卡方分布表outData1=HanData1(out1,:);%取出卡方分布因子大于预设卡方分布因子大于10的所在行的数据保存至outData,即将要剔除的数据HanData1(out1,:)=[];handle_x1(out1,:)=[];%剔除卡方分布因子大于预设卡方分布因子大于10的所在行的数据%画图figure('NumberTitle','off','Name','数据处理');subplot(2,2,1);plot(handle_x1,HanData1(:,3),'o',x1(out1),outData1,'ro','LineWidth',2.5);%holdon%plot(x(out),outData,'ro');gridonxlabel('自变量');ylabel('因变量');legend('正常值','异常值')title('样本数据处理');%****************************************************************

MATLAB使用统计法卡方分布表剔除异常数据处理

© 一点知识