-1

我正在尝试在 MATLAB 中使用引导技术而不使用统计工具箱。

我的数据集是一个 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 的值。

任何建议都会很棒。

4

1 回答 1

0

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

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

要生成不重复的样本或不替换的采样,您可以使用调用randpermrand

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
于 2013-02-20T06:53:39.367 回答