对时间序列做分段相关性分析(matlab代码)

对一对时间序列做相关性分析,包括pearson,sprearman和kendall相关分析三种。

说明

针对一对长度相同的时间序列数据,既对整体序列对做相关性分析,也对分段后的序列对做相关性分析。

在分段时,设置的时间窗为60s(wintime=60),时间间隔为30s(hoptime=30),也就是每30s判断一次这一时间点前后共60s内的序列对相关性。

matlab代码中,[r,p]为整体相关性的返回值,r1, r2, r3, p1, p2, p3为三种分段后的相关性分析的返回值。

matlab代码如下

x = []; %input x here
y = []; %input y here

[r,p] = corr(x,y,'type','pearson')

length = size(x,1);
path = 60/2; % compute corr every 30 datas with length of 60
t = (ceil(length/path)-1);
for i = 1:t
    if (i==t)
        a = x(path*(i-1)+1:length);
        b = y(path*(i-1)+1:length);
    else
        a = x(path*(i-1)+1:path*(i+1));
        b = y(path*(i-1)+1:path*(i+1));
    end
    [r1(i),p1(i)] = corr(a,b,'type','pearson');
    [r2(i),p2(i)] = corr(a,b,'type','spearman');
    [r3(i),p3(i)] = corr(a,b,'type','kendall');
    if isnan(r1(i))
        r1(i) = 0;
        r2(i) = 0;
        r3(i) = 0;
    end
end

k(1,:) = r1;
k(2,:) = r2;
k(3,:) = r3;
k(4,:) = p1;
k(5,:) = p2;
k(6,:) = p3;

你可能感兴趣的:(零散的文章)