MATLAB分析数据相关性实例
我们收集到的数据类型(或者变量)之间存在相关性,本介绍用MATLAB工具进行分析。
操作方法
- 01
相关性的度量 两个数据(如di和dj)之间是否相关,取决于其联合概率密度p(di,dj),如果这个函数的协方差为非零,则视为相关。因此,协方差矩阵C在量化不同元素相关度的程度上非常有用。
- 02
分析思路 我们可以用由观测数据构造的直方图来近似概率密度函数,从而从数据集中估计Cij。我们首先将(di,dj)平面分成许多小格子,用索引s编号。Ns表示bin中的数据对数目。 通过统计在(di,dj)平面的小块中的数据,将数据的散点图转换为对协方差的估计。
- 03
相关指数定义 当数据表现出某种程度的相关性时,协方差是非零的,但其实际数值取决于数据的整体范围。 通过按方差乘积的平方根缩放,可以将范围归一化为1。
- 04
于是,已知数据集D,可以通过以下MATLAB命令获得其协方差矩阵C和相关系数矩阵R: C=cov(D); % covariance R=corrcoef(D); % correlation coefficient
- 05
实例1:分析某岩石中化学成份含量的相关度 (1)注意使用单元格字符串来创建变量名称数组 name = { 'SiO2', 'TiO2', 'Al203', 'FeO', 'MgO', 'CaO', 'Na2O', 'K2O' }; (2)获取矩阵大小 Ns = size(D); N = Ns(1); M = Ns(2); (3)计算相关 dbar = mean(D); % 均值 C = cov(D); % 协方差 sigma = diag(D).^0.5; % stddev R = corrcoef(D); % 相关指数
- 06
结果分析 可以从下图看到,如SiO2和MgO之间,存在强烈相关。
- 07
实例2:分析某河流的流量与时间的关系 河流流量与时间序列的相关程序,也可以通过联合概率密度函数来描述。 如果我们将河流在时间ti的流量表示为di,将河流在时间tj的流量表示为dj,那么我们可以说联合概率密度函数p(di,dj)。当时间差t=ti-tj很小时,我们期望di和dj将具有强正相关性。当时间差很大时,我们预计相关性会更弱。下面的散点图,表示了时间间隔为1天和30天的相关程度。