bootstrp

Описание

пример

bootstat = bootstrp(nboot,bootfun,d) рисует nboot выборки данных bootstrap из d, вычисляет статистику по каждой выборке с помощью функции bootfun, и возвращает результаты в bootstat. bootstrp функция создает каждую выборку bootstrap путем дискретизации с заменой из строк d. Каждая строка выходного аргумента bootstat содержит результаты применения bootfun к одной выборке загрузочного стропа.

пример

bootstat = bootstrp(nboot,bootfun,d1,...,dN) рисует nboot выборки bootstrap из данных в dl,...,dN. Нескалярные аргументы в данные dl,...,dN должно иметь одинаковое число строк, n. bootstrp функция создает каждую выборку bootstrap путем дискретизации с заменой из индексов 1:n и выбор соответствующих строк нескалярных dl,...,dN. Функция передает выборку нескалярных данных и неизмененных аргументов скалярных данных в dl,...,dN на bootfun.

пример

bootstat = bootstrp(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Например, вы можете добавить веса наблюдений к вашим данным или вычислить итерации bootstrap параллельно.

пример

[bootstat,bootsam] = bootstrp(___) также возвращается bootsam, an n-by- nboot матрица выборочных индексов начальной загрузки, где n - количество строк в исходных, нескалярных данных. Каждый столбец в bootsam соответствует одной выборке начальной строки и содержит индексы строк значений, взятых из нескалярных данных, для создания этой выборки.

Чтобы получить выборки bootstrap индексы, не применяя функцию к выборкам, установите bootfun в пустые ([]).

Примеры

свернуть все

Оцените плотность ядра загрузочных средств.

Сгенерируйте 100 случайных чисел из экспоненциального распределения со средним 5.

rng('default')  % For reproducibility
y = exprnd(5,100,1);

Вычислите выборку из 100 загрузочных средств случайных выборок, взятых из вектора y.

m = bootstrp(100,@mean,y);

Постройте график оценки плотности загрузочных средств.

[fi,xi] = ksdensity(m);
plot(xi,fi)

Figure contains an axes. The axes contains an object of type line.

Вычислите и постройте график средств и стандартных отклонений 100 выборок загрузочного ремешка.

Сгенерируйте 100 случайных чисел из экспоненциального распределения со средним 5.

rng('default')  % For reproducibility
y = exprnd(5,100,1);

Вычислите выборку из 100 загрузочных средств и стандартных отклонений случайных выборок, взятых из вектора y.

stats = bootstrp(100,@(x)[mean(x) std(x)],y);

Постройте график пар оценки загрузочного стропа.

plot(stats(:,1),stats(:,2),'o')
xlabel('Mean')
ylabel('Standard Deviation')

Figure contains an axes. The axes contains an object of type line.

Возьмите выборки bootstrap данных о пациентах, вычислите средние измерения для каждой выборки данных и визуализируйте результаты.

Загрузите patients набор данных. Создайте матрицу patientData содержащие измерения возраста, веса и роста. Каждая строка patientData соответствует одному пациенту.

load patients
patientData = [Age Weight Height];

Создайте 200 выборок данных bootstrap из данных в patientData. Чтобы создать каждую выборку, случайным образом выберите с заменой 100 строк (то есть size(patientData,1)) из строк в patientData. Для каждой выборки вычислите средний возраст, вес и измерения роста. Каждая строка bootstat содержит три средние измерения для одной выборки загрузочного ремешка.

rng('default') % For reproducibility
bootstat = bootstrp(200,@mean,patientData);

Визуализируйте средние измерения для всех 200 выборок данных начальной загрузки. Обратите внимание, что выборки bootstrap с большими средними весами, как правило, имеют большие средние высоты.

scatter3(bootstat(:,1),bootstat(:,2),bootstat(:,3))
xlabel('Mean Age')
ylabel('Mean Weight')
zlabel('Mean Height')

view([-75 10])

Figure contains an axes. The axes contains an object of type scatter.

Вычислите стандартную ошибку коэффициента корреляции с помощью повторной дискретизации выборочных данных.

Загрузите lawdata набор данных, который содержит счет LSAT и GPA школы права для 15 учащихся.

load lawdata
rng('default')  % For reproducibility
size(lsat)
ans = 1×2

    15     1

size(gpa)
ans = 1×2

    15     1

Создайте 1000 выборок данных путем повторной дискретизации 15 точек данных и вычислите корреляцию между двумя переменными для каждой выборки данных.

[bootstat,bootsam] = bootstrp(1000,@corr,lsat,gpa);

Отобразите первые 5 коэффициентов корреляции с начальной загрузкой.

bootstat(1:5,:)
ans = 5×1

    0.9874
    0.4918
    0.5459
    0.8458
    0.8959

Отображение индексов данных, выбранных для первых 5 выборок начальных настроек.

bootsam(:,1:5)
ans = 15×5

    13     3    11     8    12
    14     7     1     7     4
     2    14     5    10     8
    14    12     1    11    11
    10    15     2    12    14
     2    10    13     5    15
     5     1    11    11     9
     9    13     5    10     3
    15    15    15     3     3
    15    11     1     2     4
      ⋮

Создайте гистограмму, которая показывает изменение коэффициента корреляции для всех выборок начального списка.

histogram(bootstat)

Figure contains an axes. The axes contains an object of type histogram.

Минимум выборки положителен, что указывает на то, что связь между счетом LSAT и GPA не случайна.

Наконец, вычислите стандарт ошибки bootstrap для предполагаемого коэффициента корреляции.

se = std(bootstat)
se = 0.1285

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

Создайте 50 выборки bootstrap из чисел с 1 по 6. Чтобы создать каждую выборку, bootstrp случайным образом выбирает с заменой из чисел от 1 до 6, шесть раз. Этот процесс аналогичен прокатке штампа шесть раз. Для каждой выборки, пользовательская функция countfun (показан в конце этого примера) подсчитывает количество 1с в выборке.

rng('default') %For reproducibility
counts = bootstrp(50,@countfun,(1:6)');

Примечание: Если вы используете файл live скрипта для этого примера, countfun функция уже включена в конец файла. В противном случае вам нужно создать эту функцию в конце файла .m или добавить ее в качестве файла по пути MATLAB ®.

Создайте 50 выборки bootstrap из чисел с 1 по 6, но присвойте цифры различные веса. Каждый временной bootstrp случайным образом выбирает из чисел с 1 по 6, вероятность выбора 1 0.5, вероятность выбора 2 0.1и так далее. Снова, countfun подсчитывает количество 1с в каждой выборке.

weights = [0.5 0.1 0.1 0.1 0.1 0.1]';
weightedCounts = bootstrp(50,@countfun,(1:6)','Weights',weights);

Сравните два набора выборок начальных строк с помощью гистограмм.

histogram(counts)
hold on
histogram(weightedCounts)
legend
xlabel('Number of 1s in Sample')
ylabel('Number of Samples')
hold off

Figure contains an axes. The axes contains 2 objects of type histogram.

Два набора выборок начальных строк имеют различные распределения; в частности, выборки во втором наборе, как правило, содержат больше 1с. Для примера из 50 образцов в первом наборе только два образца содержат более двух 1с. Напротив, из 50 выборок во втором наборе (с весами наблюдений), 12+14+4+2=32 выборки содержат более двух 1с.

Этот код создает функцию countfun.

function numberofones = countfun(sample)
numberofones = sum(sample == 1);
end

Оцените стандартные ошибки для вектора коэффициента в линейной регрессии путем загрузки невязок.

Примечание: Этот пример использует regress, что полезно, когда вам просто нужны оценки коэффициентов или невязки регрессионой модели, и вам нужно повторить подбор кривой модели несколько раз, как в случае загрузки. Если вам нужно исследовать подобранную регрессионую модель дальше, создайте объект линейной регрессионой модели при помощи fitlm.

Загрузите выборочные данные.

load hald

Выполните линейную регрессию и вычислите невязки.

x = [ones(size(heat)),ingredients];
y = heat;
b = regress(y,x);
yfit = x*b;
resid = y - yfit;

Оцените стандартные ошибки путем загрузки невязок.

se = std(bootstrp(1000,@(bootr)regress(yfit+bootr,x),resid))
se = 1×5

   56.1752    0.5940    0.5815    0.5989    0.5691

Входные параметры

свернуть все

Количество выборок bootstrap для рисования, заданное как положительный целочисленный скаляр. Чтобы создать каждую выборку загрузочного ремешка, bootstrp случайным образом выбирается с заменой n вне n строки (нескалярных) данных в d или d1,...,dN.

Пример: 100

Типы данных: single | double

Функция для применения к каждой выборке, заданная как указатель на функцию. Функция может быть пользовательской или встроенной функцией. Вы должны задать bootfun с @ символ.

Для примера, который использует пользовательскую функцию, см. Сравнение выборок загрузочного ремешка с различными весами наблюдений.

Пример: @mean

Типы данных: function_handle

Данные для выборки из, заданные как вектор-столбец или матрица. The n строки d соответствуют наблюдениям. Когда вы используете несколько входных параметров данных d1,...,dNможно задать некоторые аргументы как скалярные значения, но все нескалярные аргументы должны иметь одинаковое число строк.

Если вы используете один векторный аргумент dможно задать его как вектор-строка. bootstrp затем выборки из элементов вектора.

Типы данных: single | double | logical | char | string | cell | categorical

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: bootstrp(4,@mean,(1:2)','Weights',[0.4 0.6]') задает, чтобы нарисовать четыре выборки bootstrap из значений 1 и 2 и взять среднее для каждой выборки. Для каждого розыгрыша вероятность получения 1 является 0.4, и вероятность получения 2 является 0.6.

Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights' и неотрицательный вектор с, по меньшей мере, одним положительным элементом. Количество элементов в Weights должно быть равно количеству строк n в d данных или d1,...,dN. Чтобы получить одну выборку bootstrap, bootstrp случайным образом выбирается с заменой n вне n строки данных, использующие веса как полиномиальные вероятности дискретизации.

Типы данных: single | double

Опции для параллельных вычислений итераций начальных строк и установки случайных чисел во время выборки начальных строк, заданные как разделенная разделенными запятой парами, состоящая из 'Options' и структуру. Создайте Options структура с statset. В этой таблице перечислены поля опций и их значения.

Имя поляЗначениеДефолт
UseParallelУстановите это значение равным true для параллельного вычисления итераций bootstrap.false
UseSubstreams

Установите это значение равным true проводить расчеты параллельно воспроизводимым способом.

Чтобы вычислить воспроизводимо, установите Streams к типу, который позволяет субпотоки: 'mlfg6331_64' или 'mrg32k3a'.

false
StreamsЗадайте это значение как RandStream объект или массив ячеек таких объектов. Используйте один объект, кроме тех случаев, когда UseParallel значение true и UseSubstreams значение false. В этом случае используйте массив ячеек, размер которого совпадает с размером параллельного пула.Если вы не задаете Streams, затем bootstrp использует поток по умолчанию или потоки.

Примечание

Вам нужен Parallel Computing Toolbox™, чтобы запускать расчеты параллельно.

Пример: 'Options',statset('UseParallel',true)

Типы данных: struct

Выходные аргументы

свернуть все

Загрузите выборку, возвращенный как вектор-столбец или матрица с nboot строки. The iпервая строка bootstat соответствует результатам применения bootfun на ith bootstrap выборки. Если bootfun возвращает матрицу или массив, затем bootstrp функция сначала преобразует этот выход в вектор-строку перед сохранением в bootstat.

Bootstrap выборки индексы, возвращенные как n-by- nboot числовая матрица, где n - количество строк в исходных, нескалярных данных. Каждый столбец в bootsam соответствует одной выборке начальной строки и содержит индексы строк значений, взятых из нескалярных данных, для создания этой выборки.

Для примера, если все данные входные параметры в d1,...,dN содержит 16 значений и nboot = 4, затем bootsam является матрицей 16 на 4. Первый столбец содержит индексы 16 значений, взятых из d1,...,dN для первой выборки начальной загрузки во втором столбце содержатся индексы для второй выборки начальной загрузки и так далее. Индексы bootstrap одинаковы для всех входных наборов данных d1,...,dN.

Совет

  • Для получения выборочных индексов начальной загрузки bootsam не применяя функцию к выборкам, задайте bootfun в пустые ([]).

Расширенные возможности

Представлено до R2006a