原理说明
概念:偏相关分析,用于分析当两个变量都与第三个变量相关时,将第三个变量的影响剔除,只分析另外两个变量之间的相关程度。这里的第三个可以是多个变量。
偏相关分析(Partial correlation analysis),简单地说,是在消除其他变量C影响的条件下,计算的A、B两变量之间的相关系数。
Matlab中,计算偏相关系数所用的函数是partialcorr,使用方法如下:
[R,P] = partialcorr(X,Y,Z); %在控制变量Z的影响下,计算变量X、Y的偏相关系数
读取清理数据:从 Excel 文件中读取数据,并移除包含 NaN 或负数的行。
计算偏相关系数:对于 2007 到 2020 年的每个月,计算特定列的数据与另一列的偏相关系数,过滤掉了 Y 值小于 0 的行。如果找不到符合条件的行,相关系数和 P 值设为 NaN。最后,去除了相关系数数组中的 NaN 值,并将相关系数的绝对值乘以 100。
置信区间绘图:绘制调整趋势后的相关系数 (corr-detrend(corr)) 的线图,并添加置信区间。之后,使用 interp1 进行插值以获得更平滑的曲线,并用 fill 函数添加置信区间的填充色。
设置图例、坐标轴标签和标尺,并对图表进行美化。
代码展示
这段MATLAB脚本的目的是对特定数据集进行预处理和分析,具体是读取数据,移除包含NaN值或负数的行,然后计算特定年份和月份下某两个变量的偏相关性,并对偏相关系数进行可视化处理。以下是代码的详细解释和注释:
clear all;
clc;
close all;
% 导入数据
data = importdata('路径');
% 找出含有NaN值的行
nanRows = any(isnan(data), 2);
% 找出含有小于0值的行
negativeRows = any(data < 0, 2);
% 合并两个条件,确定需要删除的行
rowsToRemove = nanRows | negativeRows;
% 删除这些行
data = data(~rowsToRemove, :);
% 初始化相关系数和P值数组
corr = [];
pval = [];
% 遍历2007到2020年,每年的12个月
for year = 2007:2020
for mon = 1:12
% 找出对应年份和月份,且第六列数据大于0的行
onesRows = find(data(:,1) == year & data(:,