Main Content

datasample

Muestra aleatoria de los datos, con o sin sustitución

Descripción

y = datasample(data,k) devuelve k observaciones muestreadas uniformemente de manera aleatoria, con sustitución, a partir de los datos de data.

ejemplo

y = datasample(data,k,dim) devuelve una muestra tomada a lo largo de la dimensión dim de data.

ejemplo

y = datasample(___,Name,Value) devuelve una muestra de cualquier argumento de salida de las sintaxis anteriores, con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo: 'Replace',false especifica el muestreo sin sustitución.

ejemplo

y = datasample(s,___) utiliza la secuencia numérica aleatoria s para generar números aleatorios. La opción s puede preceder a cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

[y,idx] = datasample(___) también devuelve un vector índice que indica qué valores datasample muestreados a partir de data utilizan cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

Ejemplos

contraer todo

Cree la secuencia numérica aleatoria para la reproducibilidad.

s = RandStream('mlfg6331_64'); 

Extraiga cinco valores únicos a partir de los enteros del 1 al 10.

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

     9     8     3     6     2

Cree la secuencia numérica aleatoria para la reproducibilidad.

s = RandStream('mlfg6331_64');

Genere 48 caracteres aleatorios a partir de la secuencia ACGT para las probabilidades especificadas.

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

Establezca la semilla aleatoria para reproducir los resultados.

rng(10,'twister') 

Genere un máximo de 10 filas y 1000 columnas.

X = randn(10,1000);

Cree la secuencia numérica aleatoria para la reproducibilidad dentro de datasample.

s = RandStream('mlfg6331_64');

Seleccione de manera aleatoria cinco columnas únicas de 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

Vuelva a crear muestras de observaciones a partir de un arreglo de conjuntos de datos para crear un conjunto de datos de réplica bootstrap. Para obtener más información sobre bootstrap, consulte Bootstrap Resampling.

Cargue el conjunto de datos de muestra.

load hospital

Cree un conjunto de datos que tenga el mismo tamaño que el conjunto de datos hospital y contenga muestras aleatorias elegidas con sustitución a partir del conjunto de datos hospital.

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

Seleccione muestras a partir de datos basados en indicios de una muestra elegida a partir de otro vector.

Genere dos vectores aleatorios.

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

Seleccione una muestra de 10 elementos del vector x1 y devuelva los índices de la muestra en el vector idx.

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

Seleccione una muestra de 10 elementos del vector x2 usando los índices del vector idx.

y2 = x2(idx);

Argumentos de entrada

contraer todo

Los datos de entrada a partir de los cuales se realiza el muestreo, especificados como vector, matriz, arreglo multidimensional, tabla o arreglo de conjuntos de datos. De forma predeterminada, datasample extrae muestras a partir de la primera dimensión no singular de data. Por ejemplo, si data es una matriz, entonces datasample extrae muestras a partir de las filas. Cambie este comportamiento con el argumento de entrada dim.

Tipos de datos: single | double | logical | char | string | table

El número de muestras, especificado como un entero positivo.

Ejemplo: datasample(data,100) devuelve 100 observaciones muestreadas uniformemente de manera aleatoria a partir de los datos en data.

Tipos de datos: single | double

La dimensión a partir de la cual realizar un muestreo, especificada como entero positivo. Por ejemplo, si data es una matriz y dim es 2, y contiene una selección de columnas de data. Si data es una tabla o un arreglo de conjuntos de datos y dim es 2, y contiene una selección de variables de data. Utilice dim para garantizar el muestro a lo largo de una dimensión específica, independientemente de si data es un vector, una matriz o un arreglo de N dimensiones.

Tipos de datos: single | double

La secuencia de números aleatorios, especificada como la secuencia global o RandStream. Por ejemplo, s = RandStream('mlfg6331_64') crea una secuencia de números aleatorios que usa el algoritmo de generación de Fibonacci retardado multiplicativo. Para obtener más detalles, consulte Crear y controlar una secuencia de números aleatorios.

La función rng proporciona una forma simple de controlar la secuencia global. Por ejemplo, rng(seed) siembra el generador de números aleatorios utilizando la semilla de enteros no negativos. Para obtener más detalles, consulte Gestionar la secuencia global con RandStream.

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

En versiones anteriores a R2021a, use comas para separar cada nombre y valor y encierre Name entre comillas.

Ejemplo: 'Replace',false,'Weights',ones(datasize,1) extrae muestras sin sustitución y con probabilidad proporcional a los elementos de Weights, donde datasize es el tamaño de la dimensión a partir de la que se realiza el muestreo.

El indicador para realizar un muestreo sin sustitución, especificado como el par separado por comas que consta de 'Replace' y true o false.

Extraiga una muestra con sustitución si 'Replace' es true, o sin sustitución si 'Replace' es false. Si 'Replace' es false, entonces k no debe superar el tamaño de la dimensión a partir de la que se realiza el muestreo. Por ejemplo, si data = [1 3 Inf; 2 4 5] y y = datasample(data,k,'Replace',false), entonces k no puede ser mayor que 2.

Tipos de datos: logical

Las ponderaciones del muestreo, especificadas como el par separado por comas que consta de 'Weights' y un vector de valores numéricos no negativos. El vector es del tamaño de datasize, donde datasize es el tamaño de la dimensión a partir de la que se realiza el muestreo. El vector debe tener como mínimo un valor positivo y no puede contener valores NaN. La función datasample realiza un muestreo con probabilidad proporcional a los elementos de 'Weights'.

Ejemplo: 'Weights',[0.1 0.5 0.35 0.46]

Tipos de datos: single | double

Argumentos de salida

contraer todo

La muestra, devuelta como vector, matriz, arreglo multidimensional, tabla o arreglo de conjuntos de datos.

  • Si data es un vector, entonces y es un vector que contiene k elementos seleccionados de data.

  • Si data es una matriz y dim = 1, entonces y es una matriz que contiene k filas seleccionadas de data. O, si dim = 2, entonces y es una matriz que contiene k columnas seleccionadas de data.

  • Si data es un arreglo de N dimensiones y dim = 1, entonces y es un arreglo de N dimensiones de muestras tomadas a lo largo de la primera dimensión no singular de data. O, si especifica un valor para el argumento de par nombre-valor dim, datasample extrae una muestra a lo largo de la dimensión dim.

  • Si data es una tabla y dim = 1, entonces y es una tabla que contiene k filas seleccionadas de data. O, si dim = 2, entonces y es una tabla que contiene k variables seleccionadas de data.

  • Si data es un arreglo de conjuntos de datos y dim = 1, entonces y es un arreglo de conjuntos de datos que contiene k filas seleccionadas de data. O, si dim = 2, entonces y es un arreglo de conjuntos de datos que contiene k variables seleccionadas de data.

Si la entrada data contiene observaciones no encontradas que se representan como valores NaN, datasample extrae una muestra de la entrada completa, incluidos los valores NaN. Por ejemplo, y = datasample([NaN 6 14],2) puede devolver y = NaN 14.

Cuando la muestra se toma con sustitución (predeterminado), y puede contener observaciones repetidas de data. Establezca el argumento de par nombre-valor Replace en false para extraer muestras sin sustitución.

Los índices, devueltos como vector que indica qué elementos datasample elige de data para crear y. Por ejemplo:

  • Si data es un vector, entonces y = data(idx).

  • Si data es una matriz y dim = 1, entonces y = data(idx,:).

  • Si data es una matriz y dim = 2, entonces y = data(:,idx).

Sugerencias

  • Para realizar un muestreo de enteros aleatorios con sustitución a partir de un rango, utilice randi.

  • Para realizar un muestreo de enteros sin sustitución, utilice randperm o datasample.

  • Para realizar un muestreo aleatorio a partir de datos, con o sin sustitución, utilice datasample.

Algoritmos

datasample utiliza randperm, rand o randi para generar valores aleatorios. Por lo tanto, datasample cambia el estado del generador de números aleatorios global de MATLAB®. Controle el generador de números aleatorios mediante rng.

Para seleccionar muestreos ponderados sin sustitución, datasample utiliza el algoritmo de Wong y Easton [1].

Funcionalidad alternativa

Puede utilizar randi o randperm para generar indicios con los que realizar un muestreo aleatorio con o sin sustitución, respectivamente. Sin embargo, datasample puede ser más conveniente de usar, ya que extrae muestras directamente de los datos. datasample también admite muestreos ponderados.

Referencias

[1] Wong, C. K. and M. C. Easton. "An Efficient Method for Weighted Sampling Without Replacement." SIAM Journal of Computing 9(1), pp. 111–113, 1980.

Capacidades ampliadas

Historial de versiones

Introducido en R2011b

Consulte también

| | | | |