如何在BOOTSTRAP之后查看重采样数据

时间:2013-01-15 03:57:33

标签: matlab statistics statistics-bootstrap

我试图在Matlab中使用'bootstrap'重新采样(替换)我的数据库,如下所示:

D = load('Data.txt');
lead = D(:,1);
depth = D(:,2);
X = D(:,3);
Y = D(:,4);

%Bootstraping to resample 100 times
[resampling100,bootsam] = bootstrp(100,'corr',lead,depth);

%plottig the bootstraping result as histogram
hist(resampling100,10);
... ... ...
... ... ...

虽然上面写的脚本是正确的,但我想知道如何能够看到/加载通过bootstrap创建的重采样100数据集? 'bootsam(:)'显示为bootstrap样本选择的数据/值的索引,但不显示新的样本值!我从原始数据创建假数据并不是很有趣,我甚至无法看到幕后创建的内容?!?

我的第二个问题:是否可以在不使用任何功能的情况下重新整个矩阵(在本例中为D)?但是,我知道如何使用'unidrnd'从矢量数据创建随机值。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

问题1的答案是bootsam提供重采样数据的索引。具体而言,nth的{​​{1}}列提供了bootsam重采样数据集的索引。在您的情况下,要获取nth重采样数据集,您将使用:

nth

关于第二个问题,我猜你的意思是,如何获得重新采样的数据集,而不必担心将函数应用于重采样数据。就个人而言,我会使用lead_resample_n = lead(bootsam(:, n)); depth_resample_n = depth(bootsam(:, n)); ,但在这种情况下,您使用randi还是randi无关紧要。假设有一些数据矩阵unidrnd的4列(如您的问题所示):

D

要创建多个重新采样的数据,您可以简单地循环创建随机索引。或者您可以通过创建随机索引矩阵并使用它来索引%# Build an example dataset T = 10; D = randn(T, 4); %# Obtain a set of random indices, ie indices of draws with replacement Ind = randi(T, T, 1); %# Obtain the resampled data DResampled = D(Ind, :); 来一步完成。仔细使用Dreshape后,您可以将其转换为permute数组,其中沿第三维索引T*4*M会生成m = 1, ..., M重采样数据集。示例代码如下:

mth