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'

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

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

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

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

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) задает генератор случайных чисел с помощью неотрицательного целого seed. Для получения дополнительной информации смотрите Управление Global Stream Используя 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 значения. The 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 вычислений 9 (1), стр. 111-113, 1980.

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

См. также

| | | | |

Введенный в R2011b