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.
Véanse #523 y #703.