通过与老师商议讨论重新制定了原始数据表,而在筛选过程中,有一个步骤是独立性检验,我们通过计算机来判断是否通过独立性检验,其中包括计算数据矩阵的相关系数和显著性。重新制定后的表如下图,我们这里用Excel表代替:
这里共有53行,52个指标,共有18列,后12列为12个时间节点的数据。
我们打算对这52个指标都进行相关系数的计算和显著性检验,首先我们可以取一个3*12的有原始数据的表进行计算,A=rawdata(2:4,7:18),这句代码的含义是取这个数据库表的第二到四行的7至18列数据,取完如下图所示:
之后由于我们之前创建的cell结构体类型,而函数要对矩阵进行计算,所以要将结构体类型转换为double类型,语句如下:b=cell2mat(A);在右侧,我们也可以看到,A为3*12的cell,而b为3*12的double。
接下来,由于我们最后要得到3*3的相关系数表,所以要对矩阵进行转置,语句如下:c=b';
我们就对这个矩阵进行相关系数的计算,Matlab中计算的函数为:
[r,p] = corrcoef(c);之后运行一下:
其中r为相关系数,p为显著性,成功运行,之后我们要选出彼此都不相关的指标,我的想法是新建一个3*3的矩阵,全部置为1,之后如果满足相关系数大于0.8和显著性小于0.1的约束,便将其置为0,由于对角线必为1,所以这个矩阵只要每一列的和为1,就证明这个指标只与自己相关,这个指标便满足条件,所有代码如下:
close all; clear all; clc
[~,~,rawdata]=xlsread('shuizhili2.xlsx');
A=rawdata(2:4,7:18);
b=cell2mat(A);
c=b';
[r,p] = corrcoef(c)
B=ones(3,3);
for z=1:3
for u=1:3
if(1>r(z,u)>0.8&&p(z,u)<0.1)
B(z,u)=0;
end
end
end
for q=1:3
if(sum(B(:,q))==1)
rawdata(q+1,:)
end
end
运行,结果正确,接下来我们会进行可比性的公式计算,以及全部的筛选条件合并。