exponenta event banner

datasample

Случайная выборка из данных с заменой или без нее

Описание

пример

y = datasample(data,k) возвращает k наблюдений, отобранных равномерно случайным образом, с заменой, из данных в data.

пример

y = datasample(data,k,dim) возвращает образец, взятый вдоль измерения dim из data.

пример

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

пример

y = datasample(s,___) использует поток случайных чисел s для генерации случайных чисел. Выбор s может предшествовать любому из входных аргументов в предыдущих синтаксисах.

пример

[y,idx] = datasample(___) также возвращает вектор индекса, указывающий, какие значения datasample отобран из data с использованием любого из входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Создайте поток случайных чисел для воспроизводимости.

s = RandStream('mlfg6331_64'); 

Нарисуйте пять уникальных значений из целых чисел 1 кому 10.

y = datasample(s,1:10,5,'Replace',false)
y = 1×5

     9     8     3     6     2

Создайте поток случайных чисел для воспроизводимости.

s = RandStream('mlfg6331_64');

Произвести 48 случайные символы из последовательности ACGT по указанным вероятностям.

seq = datasample(s,'ACGT',48,'Weights',[0.15 0.35 0.35 0.15])
seq = 
'GGCGGCGCAAGGCGCCGGACCTGGCTGCACGCCGTTCCCTGCTACTCG'

Задайте случайное начальное число для воспроизводимости результатов.

rng(10,'twister') 

Создайте матрицу с 10 строками и 1000 столбцами.

X = randn(10,1000);

Создание потока случайных чисел для воспроизводимости в пределах datasample.

s = RandStream('mlfg6331_64');

Случайный выбор пяти уникальных столбцов из X.

Y = datasample(s,X,5,2,'Replace',false)
Y = 10×5

    0.4317   -0.3327    0.9112   -2.3244    0.9559
    0.6977   -0.7422    0.4578   -1.3745   -0.8634
   -0.8543   -0.3105    0.9836   -0.6434   -0.4457
    0.1686    0.6609   -0.0553   -0.1202   -1.3699
   -1.7649   -1.1607   -0.3513   -1.5533    0.0597
   -0.3821    0.5696   -1.6264   -0.2104   -1.5486
   -1.6844    0.7148   -0.6876   -0.4447   -1.4615
   -0.4170    1.3696    1.1874   -0.9901    0.5875
   -0.2410    1.4703   -2.5003   -1.1321   -1.8451
    0.6212    1.4118   -0.4518    0.8697    0.8093

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

Загрузите набор данных образца.

load hospital

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

y = datasample(hospital,size(hospital,1));

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

Создайте два случайных вектора.

x1 = randn(100,1);
x2 = randn(100,1);

Выберите образец 10 элементы из вектора x1и возвращает индексы образца в векторе idx.

[y1,idx] = datasample(x1,10);

Выберите образец 10 элементы из вектора x2 использование индексов в векторе idx.

y2 = x2(idx);

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

свернуть все

Входные данные для выборки, определенные как вектор, матрица, многомерный массив, таблица или массив набора данных. По умолчанию datasample образцы из первого несинглетонного размера data. Например, если data является матрицей, то datasample образцы из строк. Изменить это поведение с помощью dim входной аргумент.

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

Число выборок, указанное как положительное целое число.

Пример: datasample(data,100) возвращает 100 наблюдений, отобранных равномерно и случайным образом из данных в data.

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

Размерность для выборки, заданная как положительное целое число. Например, если data является матрицей и dim является 2, y содержит выборку столбцов в data. Если data является таблицей или массивом наборов данных и dim является 2, y содержит выборку переменных в data. Использовать dim обеспечить выборку по определенному измерению независимо от того, data - вектор, матрица или N-мерный массив.

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

Поток случайных чисел, указанный как глобальный поток или RandStream. Например, s = RandStream('mlfg6331_64') создает поток случайных чисел, который использует мультипликативный алгоритм генератора Фибоначчи. Дополнительные сведения см. в разделе Создание потока случайных чисел и управление им.

rng функция обеспечивает простой способ управления глобальным потоком. Например, rng(seed) инициирует генератор случайных чисел с использованием неотрицательного целого числа. Дополнительные сведения см. в разделе Управление глобальным потоком с помощью RandStream.

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

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

Пример: 'Replace',false,'Weights',ones(datasize,1) выборки без замены и с вероятностью, пропорциональной элементам Weights, где datasize - размер выбираемого размера.

Индикатор для выборки с заменой, указанный как разделенная запятыми пара, состоящая из 'Replace' и либо true или false.

Образец с заменой, если 'Replace' является true, или без замены, если 'Replace' является false. Если 'Replace' является false, то k не должно быть больше размера отбираемого размера. Например, если data = [1 3 Inf; 2 4 5] и y = datasample(data,k,'Replace',false), то k не может быть больше, чем 2.

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

Веса выборки, указанные как пара, разделенная запятыми, состоящая из 'Weights' и вектор неотрицательных числовых значений. Вектор имеет размер datasize, где datasize - размер выбираемого размера. Вектор должен иметь хотя бы одно положительное значение и не может содержать NaN значения. datasample выборки функций с вероятностью, пропорциональной элементам 'Weights'.

Пример: 'Weights',[0.1 0.5 0.35 0.46]

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

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

свернуть все

Образец, возвращаемый в виде вектора, матрицы, многомерного массива, таблицы или массива набора данных.

  • Если data является вектором, то y является вектором, содержащим k элементы, выбранные из data.

  • Если data является матрицей и dim = 1, то y является матрицей, содержащей k строки, выбранные из data. Или, если dim = 2, то y является матрицей, содержащей k столбцы, выбранные из data.

  • Если data является N-мерным массивом и dim = 1, то y - N-мерный массив выборок, взятых вдоль первого несинглтона размерности data. Или, если указать значение для dim аргумент пары имя-значение, datasample образцы вдоль размера dim.

  • Если data является таблицей и dim = 1, то y является таблицей, содержащей k строки, выбранные из data. Или, если dim = 2, то y является таблицей, содержащей k переменные, выбранные из data.

  • Если data является массивом наборов данных и dim = 1, то y является массивом наборов данных, содержащим k строки, выбранные из data. Или, если dim = 2, то y является массивом наборов данных, содержащим k переменные, выбранные из data.

Если вход data содержит отсутствующие наблюдения, представленные как NaN значения, datasample выборки из всего входного сигнала, включая NaN значения. Например, y = datasample([NaN 6 14],2) может вернуться y = NaN 14.

При взятии пробы с заменой (по умолчанию), y может содержать повторные наблюдения из data. Установите Replace аргумент пары имя-значение для false в пробу без замены.

Индексы, возвращаемые в виде вектора, указывающего, какие элементы datasample выбирает из data создать y. Например:

  • Если data является вектором, то y = data(idx).

  • Если data является матрицей и dim = 1, то y = data(idx,:).

  • Если data является матрицей и dim = 2, то y = data(:,idx).

Совет

  • Для выборки случайных целых чисел с заменой из диапазона используйте randi.

  • Для выборки случайных целых чисел без замены используйте randperm или datasample.

  • Для случайной выборки данных с заменой или без нее используйте datasample.

Алгоритмы

datasample использование randperm, rand, или randi для генерации случайных значений. Поэтому datasample изменяет состояние генератора глобальных случайных чисел MATLAB ®. Управление генератором случайных чисел с помощьюrng.

Для выбора взвешенных образцов без замены, datasample использует алгоритм Вонга и Истона [1].

Альтернативная функциональность

Вы можете использовать randi или randperm генерировать индексы для случайной выборки с заменой или без замены соответственно. Однако datasample может быть более удобным в использовании, потому что это образцы непосредственно из ваших данных. datasample также позволяет осуществлять взвешенную выборку.

Ссылки

[1] Вонг, К. К. и М. К. Истон. «Эффективный метод взвешенной выборки без замены». SIAM Journal of Computing 9 (1), стр. 111-113, 1980.

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

См. также

| | | | |

Представлен в R2011b