2013-02-20 3 views
-1

Я пытаюсь использовать технику бутстрапа в MATLAB без использования инструментария Statistics.Расчет 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)); 

мне нужно б) цикла по числу вычислений начальной загрузки Я хочу (10000), и с этой петлей к,

c) случайным образом выбрать подмножество значений N из исходных данных (предлагается делать с использованием генератора случайных чисел, умноженного на N, затем округлять, чтобы получить целое число).

После того, как у меня N, д) Я рассчитает (и хранить) нужную статистику для каждого к,

е) сортировать сохраненный вектор от низшего к высшему,

е), а затем найти значение, которое отсекает самые низкие 0.025 и самое высокое 0.025.

Любые советы вообще были бы замечательными.

+2

попытка опубликовать фактический программирования или язык проблемы, а не ряд связанных или не связанных между собой задач назначения. Из вашего сообщения я понимаю, что ваша проблема заключается в том, как рисовать случайные выборки из набора данных, хранящегося в виде матрицы. – gevang

ответ

0

Это сводится к рисованию случайных образцов от [1, N], где N номер образца, который вам нужен для каждого испытания. Затем вы индексируете столбцы вашей матрицы данных напрямую, используя k различных перестановок. Пример (Образцы = 50, Trials = 1000, Subset = 40):

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

Чтобы генерировать образцы без повторений, или отбор без замены, вы можете использовать randperm, который вызывает rand.

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

Если вы хотите выборки с заменой (т.е. для начальной загрузки) заменить вызов randperm с:

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

и увеличить nSamples соответственно.

Набор выборки данных для каждого испытания (например, к = 1), тогда:

xk = x(:, indexSample(:,k)) % sample data for trial k 
Смежные вопросы