Métodos de selección para una muestra aleatoria de matriz o array con conjunto de datos en MATLAB

Mehak Mubarik 30 enero 2023
  1. Extraiga muestras aleatorias utilizando la función randsample en MATLAB
  2. Extraiga muestras aleatorias utilizando la función datasample en MATLAB
  3. Extraiga subconjuntos de muestras aleatorias de una columna de una matriz de conjuntos de datos utilizando datasample en MATLAB
Métodos de selección para una muestra aleatoria de matriz o array con conjunto de datos en MATLAB

Veremos diferentes métodos para seleccionar muestras aleatorias de cualquier conjunto de datos, array o matriz usando diferentes comandos de MATLAB.

Para aclarar sus conceptos y darle una idea completa de cómo obtener muestras aleatorias, explicaremos las funciones como Randn, randsample, datasample dando ejemplos de códigos para extraer muestras aleatorias de su conjunto de datos con reemplazo también como sin reemplazo/sustitución junto con fragmentos que muestran cómo se verá su salida.

Supongamos que tenemos una matriz que contiene nuestro conjunto de datos con 50 000 filas. Queremos seleccionar una muestra aleatoria que contenga 50 entidades de nuestra matriz. Podemos realizar esta tarea utilizando más de un método de muestreo aleatorio. Antes de comenzar a enumerar estos métodos, tenga en cuenta que una muestra/datos/conjunto de datos aleatorios son algunos datos que se eligen aleatoriamente de una matriz de un conjunto de datos. Para eliminar el sesgo y otras posibles repercusiones indeseables, utilizamos un muestreo aleatorio. Pero debemos tener en cuenta que no es tan sencillo como nos parece. Seleccionar una muestra aleatoria de un conjunto de datos es más complicado que seleccionar 10 entidades de un conjunto de datos que consta de 500 entidades. Además, debemos asegurarnos de que la muestra aleatoria sea realmente aleatoria o no.

Continuando con nuestra suposición, podemos usar MATLAB para extraer muestras aleatorias de nuestro conjunto de datos. MATLAB nos proporciona varias funciones para seleccionar muestras/datos aleatorios de un conjunto de datos determinado. Por ejemplo, podemos usar la función randsample en MATLAB para elegir muestras al azar de cualquier array o matriz que contenga datos, con o sin reemplazo/sustitución.

Extraiga muestras aleatorias utilizando la función randsample en MATLAB

Suponiendo que las observaciones N_obs se seleccionan uniformemente al azar con reemplazos de las entradas en el conjunto de datos, usamos la función:

O_put = randsample(ourdata,N_obs)

Donde N_obs representa el número de observaciones. Si ourdata es un vector, nuestra salida O_put también será un vector compuesto por muestras aleatorias N_obs del conjunto de datos.

Usemos esta función para resolver nuestro supuesto problema.

Código:

%Let's assume we have 50,000 entries in a dataset "ourdata".

ourdata=50000;

%We want to obtain 5 random samples from this dataset 

N_obs=5;

%Let's follow the above-explained concept and write our code

O_put = randsample(ourdata,N_obs);

Producción :

O_put =

       46700
       33937
       42457
       32788
        1786

Extraiga muestras aleatorias utilizando la función datasample en MATLAB

Si queremos tener en cuenta las dimensiones al extraer muestras aleatorias, entonces usamos la siguiente función.

y = datasample(ourdata,N_obs,'Replace',false)

Si Replace es true, elegimos la muestra con reemplazo; de lo contrario, elegimos la muestra sin reemplazo. Si Replace es false, restringimos N_obs para que no sea mayor que nuestro número de elementos en el conjunto de datos.

Replace es true por defecto.

true = muestra con reemplazo.

false = muestra sin reemplazo.

Podemos lograr esto escribiendo un código de una sola línea. Teniendo en cuenta las suposiciones anteriores, formulamos nuestro código de la siguiente manera.

%Let's assume we have 50,000 entries in a dataset "ourdata".
%We want to obtain 5 random samples from this dataset 
%Let's follow the above-explained concept and write our code using function
%datasample
%Let's Draw five unique values from the integers 1:50000 using 1 line code.

O_put = datasample(1:50000,5,'Replace',false);

Producción :

O_put =

       24489       22279       32315       35467       37732

Extraiga subconjuntos de muestras aleatorias de una columna de una matriz de conjuntos de datos utilizando datasample en MATLAB

Para ello, utilizaremos la función randn de MATLAB. Crea matrices de valores aleatorios con distribución normal.

I_put=randn(A) produce una matriz A-by-A que contiene elementos generados aleatoriamente.

Si A no es escalar (un vector), MATLAB mostrará un mensaje de error.

Ahora, para obtener nuestras muestras aleatorias, usaremos la función datasample, dando subconjuntos de columnas aleatorias de nuestra matriz de datos dada.

Código:

I_put = randn(10,100000);
O_put = datasample(I_put,5,2,'Replace',false)

Producción :

O_put =

-0.5995   -0.7377   -1.1902   -0.6021   -1.0812
-0.0572   -0.7831    0.4746    0.7105   -0.8038
 0.8401    1.0824   -0.3507    0.4069   -2.0817
-1.1358   -0.9041   -0.1702    0.5950    0.3954
-1.0887   -0.7766   -1.6901   -0.5047    1.1286
-0.0187   -0.3354   -0.7458    1.8554    0.8492
 0.3251   -0.4219    0.2440   -0.4750    0.7628
 1.4713   -1.9788   -1.6672    0.0035   -0.4316
 0.6880    1.4387   -1.3525   -0.6950    0.6411
-0.2777   -0.4776   -0.9841    1.2752    0.2645
Mehak Mubarik avatar Mehak Mubarik avatar

Mehak is an electrical engineer, a technical content writer, a team collaborator and a digital marketing enthusiast. She loves sketching and playing table tennis. Nature is what attracts her the most.

LinkedIn

Artículo relacionado - MATLAB Random