close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Last modified 14 years ago

#701 new enhancement

Muestra aleatoria de un conjunto de variables de un DataSet

Reported by: imendez Owned by: Pedro Gea
Priority: major Milestone: Next
Component: Variables Keywords:
Cc:

Description

Hola, solicito un método que devuelva una muestra aleatoria de los datos de un conjunto de variables de un DataSet.

Creo que debería tener dos parámetros: el conjunto de variables (para no extraer una muestra de todas las variables del DataSet) y la proporción de datos que se desea que contenga la muestra (número entre 0 y 1). Se podría utilizar el conjunto de variables vacío para indicar que se quieren todas las variables.

Os paso un código que puede servir de base para generar la muestra, y que me habéis pasado vosotros mismos. Nótese que la selección aleatoria de los elementos que formarán la muestra debe ser la misma para todas las variables.

Set GetRandomSampleIndex( Real sizePopulation, Real sizeSample )
{
  Matrix permIndex = RandPermutation( 1, sizePopulation );
  Matrix sampleIndex = SubCol( permIndex, Range( 1, sizeSample, 1 ) );
  Set result = MatSet( sampleIndex )[1]
};

// la que hay que usar
Matrix SubSampleByRow( Matrix bigMat, Real perc )
{
  Real size = Rows( bigMat );
  Real sampleSize = Floor( size * perc );
  Matrix SubRow( bigMat, GetRandomSampleIndex( size, sampleSize ) )
};

// un test
Set test1 = {
  Real perc = 0.1;
  Real size = 10000000;
  Matrix BigMatrix = Rand( size, 3, 0, 1 );
  Real t0 = Copy( Time );
  Matrix sample = SubSampleByRow( BigMatrix, perc );
  Real t1 = Copy( Time );
  Set [[ sample, Real performance = t1-t0 ]]
}

Un saludo.

Nota: entiendo que sólo tiene sentido para matrices, no para series.

Change History (1)

comment:1 Changed 14 years ago by Pedro Gea

Véanse #523 y #703.

Note: See TracTickets for help on using tickets.