Cómo seleccionar una muestra de cuotas de un conjunto de datosHola a todos
Estoy trabajando en una investigación que implica trabajar sobre una muestra representativa. Ya he recolectado datos, pero necesito seleccionar un subconjunto que cumpla con los criterios de representatividad que son 4: La muestra debe cumplir con las siguientes cuotas:
-
sobre género: 50% hombres y 50% mujeres.
-
por edad: 1/3 de 18 a 30 años, 1/3 de 31 a 50 años y 1/3 mayores de 51 años.
-
sobre el nivel de ingresos del hogar: 1/3 de bajo, 1/3 de medio y 1/3 de alto.
1/5 de la población de estudio por cada una de las cinco regiones de la ciudad (Norte, Sur, Centro, Este y Oeste)
¿Cómo puedo crear esta muestra?
Estoy usando JMP pro 17
Acceso a datosCombinación y limpieza de datosRe: Cómo seleccionar una muestra de cuota de un conjunto de datosSuena como un ejercicio de libro de texto: ¿hay un capítulo con la solución?
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosNo
En realidad, estaba discutiendo este tema con un colega para iniciar el análisis de datos de un proyecto con esta técnica de muestreo por cuotas.Re: Cómo seleccionar una muestra de cuota de un conjunto de datosEste es un problema complejo. ¿Qué tamaño tiene la tabla de datos de la que está extrayendo los datos? ¿Qué tamaño de muestra está extrayendo? Tiene 90 combinaciones de sus 4 columnas. ¿Se le ocurrió a usted y a su colega una idea sobre cómo abordar el problema?
Re: Cómo seleccionar una muestra de cuota de un conjunto de datos¿Y no desea seleccionar los datos de muestra por la proporción real de la distribución, sino por la fracción artificial?
¿Qué tal una mujer, mayor de 51 años, de altos ingresos, del norte?
¿Debería ser 1/2 * 1/3 * 1/3 * 1/5? (*)
Esto es muy fácil de calcular, pero quizás demasiado estricto y no intencionado.
Pensemos simplemente en el caso en el que no hay ninguna mujer, mayor de 51 años, con ingresos altos y del norte en la distribución original.
Por otro lado: si sólo se deben cumplir 1/2, 1/3, 1/3 y 1/5, se podrían inventar casos extremos con 0 datos de muestra para mujeres, > 51 años, ingresos altos, norte.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosEsto no es elegante y ni siquiera estoy seguro de que funcione, pero podría funcionar. Puedes crear columnas 0,1 para cada uno de tus criterios y luego combinarlas en una única columna 0,1 donde 1 significa que todas las columnas de criterios individuales fueron =1. Eso dará el subconjunto deseado. Y, si quieres una selección aleatoria de dichas filas, simplemente usa una columna de validación estratificada por esa columna 0,1. Como dije, no es elegante, pero podría funcionar.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosTabla de datos - caso ideal:
New Table( "quota_samples",
Add Rows( 100000 ),
Compress File When Saved( 1 ),
New Column( "gender",
Character,
Formula( Match( Floor( Random Uniform() * 2 ), 0, "M", "F" ) ),
Compact(),
Set Selected
),
New Column( "income",
Character,
Formula(
Match( Floor( Random Uniform() * 3 ), 0, "low", 1, "medium", "high" )
),
Compact()
),
New Column( "region",
Character,
Formula(
Match( Floor( Random Uniform() * 5 ),
0, "N",
1, "S",
2, "W",
3, "E",
"C"
)
)
),
New Column( "age",
Character,
Formula(
Match( Floor( Random Uniform() * 3 ), 0, "young", 1, "medium", "old" )
)
)
)
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosPara una tabla ideal (si las probabilidades de su conjunto de datos se ajustan a las fracciones que desea), puede elegir muestras aleatorias (muestras aleatorias por variante o una cantidad específica de muestras por variante) o una combinación de los tres...
Siempre obtendrás los subgrupos con la fracción solicitada (1/2, 1/3, 1/3 y 1/5)

// random sampling : full data set
if(not(current data table() << has column ("cum_prob")),New Column( "cum_prob",
Formula(
Col Rank( random uniform()) / (
Col Number( 1 ))
)
));
// random sampling : per variant
if(not(current data table() << has column ("cum_prob_indiv")),New Column( "cum_prob_indiv",
Formula(
tmp = random uniform(); // tmp =1; // **)
Col Rank( tmp, :gender, :income, :region, :age ) / (
Col Number( tmp, :gender, :income, :region, :age ))
)
));
// force ratios: 1/2, 1/3, 1/3, 1/5
if(not(current data table() << has column ("rank_indiv")),
New Column( "rank_indiv",
Formula( Col Rank( random uniform(), :gender, :income, :region, :age ) )
));
Graph Builder(
Size( 518, 448 ),
Show Control Panel( 0 ),
Graph Spacing( 4 ),
Variables( X( :gender ), X( :income ), X( :region ), X( :age ) ),
Elements( Position( 1, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Elements( Position( 2, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Elements( Position( 3, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Elements( Position( 4, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Local Data Filter(<BR /> Title( "how many samples do you want ? " ),
Add Filter(
columns( :cum_prob, :cum_prob_indiv, :rank_indiv )
)
)
);
**) en lugar de usar CDF con uniform() aleatorio , se puede aleatorizar el orden de filas y usar CDF de "1".
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosLa última opción también funciona para tablas menos sistemáticas como la que se muestra a continuación.
La única limitación es que si hay pocas muestras para una variante específica, existe un límite claro en la cantidad de muestras que se pueden seleccionar.
Sigue la regla simple:
Si para una de las variantes (A), solo hay N muestras, tómelas y escoja la misma cantidad de muestras aleatorias de las otras variantes.
En realidad, para la variante "A", esto NO es un muestreo.
Entonces, tal vez elija solo M << N muestras, aleatorias de todas las variantes.
Puedes tomar la misma lógica (JSL): simplemente ajusta N a un valor más bajo.
variants = {};
For Each( {gender}, {"F", "M"},
For Each( {age}, {"young", "medium", "old"},
For Each( {income}, {"low", "medium", "high"},
For Each( {region}, {"N", "S", "E", "W", "C"},
Insert Into( variants, Concat Items( {gender, age, income, region} ) )
)
)
)
);
Eval(
Eval Expr(
new table(
"unfair",
add rows( 100000 ),
New Column( "variant",Character,
formula(
variants = As constant(Expr( variants ));
Try(
variants[Floor( Random Normal( 45, 30 ) )],
"F young medium C"
);
)
),
New column ("gender",Character, formula(Word(1,:variant))),
New column ("age",Character, formula(Word(2,:variant))),
New column ("income",Character, formula(Word(3,:variant))),
New column ("region",Character, formula(Word(4,:variant))),
)
)
);
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosPasé mucho tiempo pensando en esta pregunta y no encontré una buena respuesta. Generé una tabla de datos de muestra similar a la de @hogi . A continuación, se muestra una modificación del JSL de @hogi con el código que utilicé. Básicamente, creo que es más fácil de leer y, en el caso de Age, representa mejor la distribución como lo indica @Samira .
New Table( "Samp",
Add Rows( 100000 ),
Compress File When Saved( 1 ),
New Column( "gender",
Character,
Set Each Value( Match( Random Integer( 1, 2 ), 1, "Male", "Female" ) ),
Compact()
),
New Column( "income",
Character,
Set Each Value(
Match( Random Integer( 1, 3 ), 1, "Low", 2, "Medium", "High" )
),
Compact()
),
New Column( "region",
Character,
Set Each Value(
Match( Random Integer( 1, 5 ),
1, "North",
2, "South",
3, "West",
4, "East",
"Ccentre"
)
)
),
New Column( "age",
Character,
Set Each Value(
temp = Random Integer( 18, 80 );
If(
temp <= 30, "Young",
temp <= 50, "Middle Age",
"Old"
);
)
)
)
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosGracias por tu respuesta
La idea es realizar la investigación sobre una muestra representativa de la población que vive en toda la ciudad.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosMuchas gracias por tus esfuerzos.
Su sugerencia me dio una buena idea para explorar mi conjunto de datos de manera efectiva utilizando primero el filtro de datos locales en el generador de gráficos. Para mis datos, parece que con algunas combinaciones (como hombres de mediana edad que viven en la región central con ingresos de ingresos medios), la muestra es 0
La idea de crear una muestra representativa de esta manera parece no ser práctica en la actualidad. La técnica de muestreo que se debería haber utilizado desde el principio es una de las técnicas de muestreo probabilístico. Puede ser un muestreo aleatorio estratificado, utilizando solo las cinco regiones como estratos. Luego se toma una muestra aleatoria de cada estrato.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosMuchas gracias por su tiempo y esfuerzo.
La idea de crear una muestra representativa de esta manera parece no ser práctica en la actualidad. La técnica de muestreo que se debería haber utilizado desde el principio es una de las técnicas de muestreo probabilístico. Puede ser un muestreo aleatorio estratificado, utilizando solo las cinco regiones como estratos. Luego se toma una muestra aleatoria de cada estrato.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosGracias por tu respuesta
Creo que tienes razón,
La idea de crear una muestra representativa de esta manera parece no ser práctica en la actualidad. La técnica de muestreo que se debería haber utilizado desde el principio es una de las técnicas de muestreo probabilístico. Puede ser un muestreo aleatorio estratificado, utilizando solo las cinco regiones como estratos. Luego se toma una muestra aleatoria de cada estrato.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosEso suena como un enfoque razonable.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosEntonces, lo que pediste en la publicación original es:
muestreo aleatorio estratificado desproporcionado , ¿verdad?
Y los estratos son los 90 subgrupos de género x edad x ingreso x región.
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosDespués de revisar cuidadosamente diferentes técnicas de muestreo en libros de texto, descubrí que mi idea original no encajaba con ninguna de ellas. Para obtener una muestra representativa, se debe elegir una de las técnicas de muestreo probabilístico (que ofrecen a cada encuestado de la población de estudio una probabilidad o posibilidad igual de ser incluido en la muestra). Estas técnicas incluyen 4 tipos:
- –Muestreo aleatorio simple
- –Muestreo sistemático
- –Muestreo por conglomerados
- –Muestreo estratificado
Por eso creo que se podría haber utilizado un muestreo estratificado para obtener la muestra del estudio desde el principio ( utilizando solo las 5 regiones como estratos. Luego , se recolecta una muestra aleatoria de cada estrato). Las técnicas de muestreo estratificado, por conglomerados y por cuotas requieren clasificar la población en grupos mutuamente excluyentes , lo que no es la situación en mi pregunta. Por eso creo que mi pregunta original no es correcta en primer lugar.
:
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosHm, cuando comparamos este caso con el DOE...
En un DOE bien diseñado ni siquiera se elige una (sola) muestra de cada uno de los 90 subconjuntos.
[1 muestra de cada uno de los 90 subconjuntos: "factorial completo" -> demasiado "caro"]
Entonces, ¿quizás, junto con cierta simplificación del modelo, también sea aceptable utilizar un conjunto de datos con entradas faltantes en algunos puntos de intersección? Y un paso más allá, quizás eliminando intencionalmente (algunos puntos de datos de) algunos puntos de intersección, ¿se puede obtener algo útil entre los datos de entrada estratificados y un DOE equilibrado?
¿ @Victor_G podría tener alguna sugerencia?
Re: Cómo seleccionar una muestra de cuota de un conjunto de datos
Re: Cómo seleccionar una muestra de cuota de un conjunto de datosPara el enfoque "muestreo aleatorio - por variante" de
https://community.jmp.com/t5/Discussions/How-to-Select-a-quota-sample-from-a-data-set/mp/821078/highlight/true#M100011
Creé un fragmento de JSL para estratificar datos arbitrarios: simplemente seleccione las columnas y haga clic en Aceptar.
librecall se puede descargar aquí: Biblioteca de funciones de recuperación
Names Default To Here( 1 );
verbose=0;
//Include( ".\libRecall_v2.jsl" );
objects = {"si^myCols", "s^Ncolumns", "s^Nfolds"};
values = {{}, {1}, {5}};
Try( // issue with projects
librecall:genArrays( objects, values, "Stratify", verbose )
);
dt = Current Data Table();
nw = New Window( "K Fold Creator",
<<TYPE></TYPE>Re: Cómo seleccionar una muestra de cuota de un conjunto de datosHola @hogi y @Samira ,
Acabo de leer rápidamente la publicación y las respuestas y todavía no tengo 100% claro su objetivo, ya que un conjunto de datos "representativo" puede tener diferentes implicaciones:
¿Quieres comprender y modelar mejor una respuesta/fenómeno basado en datos demográficos (edad, género, ubicación, etc.), o quieres una muestra "representativa" para hacer alguna inferencia/generalización sobre la población?
- En el primer caso, debido a que desea vincular la respuesta/fenómeno a atributos específicos, es mejor tener un conjunto de datos equilibrado, es decir, tener niveles equilibrados de edad, género, ubicación, etc. para tener un modelado e interpretación más fácil de los resultados.
Al utilizar un enfoque DoE, ya sea construyendo su diseño personalizado "desde cero" y encontrando a la persona correcta correspondiente a los diferentes atributos, o construyendo su diseño D-Optimal gracias a un enfoque de conjunto de candidatos con datos demográficos recopilados, lo ayudaría a investigar y analizar los diferentes factores demográficos de la manera más independiente e individual posible.
- En el segundo caso, dado que se desea generalizar los resultados de la muestra a la población, es necesario contar con una muestra representativa (tan "sesgada" como la población) de la población. Por lo tanto, tal vez no se tenga una proporción de 50/50 hombres/mujeres, ya que la población podría estar sesgada a 40/60, por ejemplo, por lo que es necesario respetar esta especificidad demográfica.
Puede resultar útil utilizar un enfoque estratificado de los datos demográficos que ha recopilado en sus cinco regiones. Es posible que tenga que considerar dos aspectos: la creación de muestras de sus regiones en función de su población (asegúrese de que la proporción de su muestra en relación con la población de la región sea la misma, de modo que una región densamente poblada tenga más personas en el conjunto de datos de la muestra) y en función de los datos demográficos (género, edad, etc.).
En ambos casos, recomendaría recopilar la mayor cantidad de datos posible sobre las poblaciones de sus cinco regiones, para comprender e informar mejor su método de creación de muestras.
Como nota al margen, también puedes encontrar literatura sobre la segmentación de datos demográficos. No estoy seguro de que la segmentación por edad propuesta aquí sea realmente útil debido a los diferentes rangos de edad: 18-30 (12 años), 31-50 (19 años), 51+ (¿20+ años?). Además, ¿cómo defines el nivel de ingresos del hogar bajo/medio y alto? ¿Basado en análisis o en umbrales/criterios predefinidos?
Algunos ejemplos sobre segmentación demográfica: https://xperiencify.com/que-es-la-segmentacion-demográfica/
Espero que esta respuesta pueda proporcionar algunas ideas.