没有统计工具箱的Bootstrap计算

时间:2013-02-20 04:06:26

标签: matlab statistics

我试图在不使用统计工具箱的情况下在MATLAB中使用bootstrap技术。

我的数据集是一个2 x 50矩阵,第1列是月,第2列是沉淀。值。我使用这个脚本计算了均值,标准偏差和偏度系数:

yr = x(:,1);
p = x(:,2);
x_hat = mean(p);
sd = p-x_hat;
s = sqrt((1/(n-1)) .* (sum((sd).^2)));
skew = ((1/(n-1)) .* (sum((sd).^3))/(s.^3));

我需要b)遍历我想要的引导计算次数(10000),并使用该循环k,

c)从原始数据中随机选择N个值的子集(建议使用随机数生成器乘以N,然后舍入以得到整数)。

一旦我有N, d)我将计算(并存储)每个k的所需统计量,

e)将存储的矢量从最低到最高排序

f)然后找到切断最低0.025和最高0.025的值。

任何建议都会很棒。

1 个答案:

答案 0 :(得分:0)

这归结为从[1, N]抽取随机样本,其中N是每次试验所需的样本编号。然后,使用k个不同的排列直接索引数据矩阵的列。示例(样本= 50,试验= 1000,子集= 40):

x = randn(2, 50); % example data matrix
N = 50; nTrials = 1000; nSamples = 40;   

要生成不重复的样本,或不带替换的采样,您可以使用调用rand的{​​{3}}。

for k = 1:nTrials
  indexSample(:,k) = randperm(N, nSamples);      
end    

如果您希望带有替换的采样(即用于引导程序),请将对randperm的调用替换为:

indexSample(:,k) = round(N*rand(nSamples, 1))

并相应地增加nSamples。

每个试验的数据样本集(例如k = 1)是:

xk = x(:, indexSample(:,k)) % sample data for trial k