exponenta event banner

bootstrp

Выборка начальной загрузки

Описание

пример

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

пример

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

пример

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

пример

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

Чтобы получить индексы выборки начальной загрузки без применения функции к выборкам, установите 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.

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

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

load patients
patientData = [Age Weight Height];

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

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

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

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 не случайна.

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

se = std(bootstat)
se = 0.1285

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

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

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

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

Создайте 50 образцов начальной загрузки из чисел с 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

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

свернуть все

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

Пример: 100

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

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

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

Пример: @mean

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

Данные для выборки из, указанные как вектор столбца или матрица. 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]') указывает нарисовать четыре выборки начальной загрузки из значений 1 и 2 и взять среднее значение каждого образца. Для каждого розыгрыша вероятность получить 1 является 0.4и вероятность получения 2 является 0.6.

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

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

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

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

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

Для воспроизводимого вычисления установите Streams к типу, допускающему субпотоки: 'mlfg6331_64' или 'mrg32k3a'.

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

Примечание

Для параллельного выполнения вычислений требуется Toolbox™ параллельных вычислений.

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

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

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

свернуть все

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

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

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

Совет

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

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

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