在 MATLAB 中使用矩阵而不是向量进行引导?
Bootstrp with matrices instead of vectors in MATLAB?
我正在使用 xcorr
来计算两个时间序列之间的互相关。为了评估统计显着性,我需要执行 bootstrapping 并在两个时间序列之间创建随机相关性以创建空分布。因此,例如 timeseries1
的大小为 16x11(即 16 个时间点和 11 个主题),timeseries2
的大小也为 16x11。这里的主题是配对的,例如 ,
timeseries1(:,1)
与 timeseries2(:,1)
匹配;即 timeseries1 是主题一的一种数据类型,timeseries2(:,1)
是主题一的不同类型的数据。
我需要打乱它们,以便创建新的随机相关性,例如 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 进行无放回采样,这将 return 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
我正在使用 xcorr
来计算两个时间序列之间的互相关。为了评估统计显着性,我需要执行 bootstrapping 并在两个时间序列之间创建随机相关性以创建空分布。因此,例如 timeseries1
的大小为 16x11(即 16 个时间点和 11 个主题),timeseries2
的大小也为 16x11。这里的主题是配对的,例如 ,
timeseries1(:,1)
与 timeseries2(:,1)
匹配;即 timeseries1 是主题一的一种数据类型,timeseries2(:,1)
是主题一的不同类型的数据。
我需要打乱它们,以便创建新的随机相关性,例如 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 进行无放回采样,这将 return 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