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

时间:2024-10-12 01:32:44

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);for i=1:n1 m1(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);% hold on% plot(x(out),outData,'ro');grid onxlabel('自变量');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)为行数for i=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);for i=1:n1 m1(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);% hold on% plot(x(out),outData,'ro');grid onxlabel('自变量');ylabel('因变量');legend('正常值','异常值')title('样本数据处理');%****************************************************************

MATLAB使用统计法卡方分布表剔除异常数据处理
© 手抄报圈