首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BOOTSTRAP之后查看重采样数据

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

Stack Overflow用户
提问于 2013-01-15 11:57:33
回答 1查看 4.2K关注 0票数 1

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

代码语言:javascript
复制
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(:)’显示为引导样本选择的数据/值的索引,但不显示新的样本值!!我从我的原始数据创建假数据,甚至看不到幕后是什么,这不是很有趣吗?!?

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

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 13:36:31

问题1的答案是bootsam提供了重采样数据的索引。具体地说,bootsamnth列提供nth重采样数据集的索引。在您的示例中,要获得nth重新采样的数据集,您将使用:

代码语言:javascript
复制
lead_resample_n = lead(bootsam(:, n));
depth_resample_n = depth(bootsam(:, n));

关于第二个问题,我猜你的意思是,如何在不担心对重新采样的数据应用函数的情况下获得重新采样的数据集。就我个人而言,我会使用randi,但在这种情况下,您使用randi还是unidrnd无关紧要。下面的示例假设某个数据矩阵D为4列(如您的问题所示):

代码语言:javascript
复制
%# 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, :);

要创建多个重新采样的数据,您可以简单地循环创建随机索引。或者,您可以通过创建一个随机索引矩阵并使用它来索引D,从而一步到位。通过谨慎使用reshapepermute,您可以将其转换为T*4*M数组,其中沿第三维对m = 1, ..., M进行索引将生成mth重新采样的数据集。示例代码如下:

代码语言:javascript
复制
%# Build an example dataset
T = 10;
M = 3;
D = randn(T, 4);

%# Obtain a set of random indices, ie indices of draws with replacement
Ind = randi(T, T, M);

%# Obtain the resampled data
DResampled = permute(reshape(D(Ind, :)', 4, T, []), [2 1 3]);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14330936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档