我使用xcorr
来计算两个时间序列之间的互相关。为了评估统计显著性,我需要执行自举并在两个时间序列之间创建随机相关性,以创建零分布。例如,timeseries1
的大小为16x11(即16个时间点和11个受试者(,而timeseries2
的大小也是16x11。这里,受试者是匹配的对,因此,例如,
timeseries1(:,1)
与timeseries2(:,1)
匹配;即时间序列1是来自主题一的一种类型的数据,并且CCD_。
我需要对它们进行加扰,以便创建新的随机相关性,如timeseries1(:,1)
与timeseries2(:,5)
等。
我试着使用boostrp
如下
scorr = @(timseries1,timeseries2)(xcorr(timseries1,timeseries2,'coeff'));
bootstat = bootstrp(1000,scorr,a,b);
然而,我得到了一个错误,因为bootstrap只接受向量而不接受矩阵。在函数的文档中,所提供的所有示例都具有每个受试者1个值的数据,因此例如来自15个受试者的LSAT分数与来自15个被试者的其他测试分数相关。但我每个受试者有16个样本,如果我把时间序列减少到一个时间点,我将无法进行互相关。
有人对如何做到这一点有什么建议吗?
您可以使用randperm进行采样而不进行替换,这将返回1:n_subjects:之间的两个不同的随机整数
n_boot = 100;
n_subj = 11;
n_samples = 16;
timeseries1 = randn(n_samples, n_subj);
timeseries2 = randn(n_samples, n_subj);
null_dist = nan(n_boot, ...
n_samples*2-1);
for i = 1:n_boot
subjs_to_corr = randperm(n_subj, 2); % draw 2 random numbers from 1:n_subj without replacement
null_dist(i, :) = xcorr(timeseries1(:, subjs_to_corr(1)), ...
timeseries2(:, subjs_to_corr(2)));
end