ANOVA en bloques de empleados
Partiendo de tus análisis anteriores con la empresa manufacturera, en los que se examinó la productividad de los trabajadores en distintos bloques y se introdujo un programa de incentivos, ahora profundizas en los datos. La empresa, equipada con un conjunto de datos más completo en el DataFrame de productividad, que incluye 1.200 empleados más y su productivity_score
, ha estructurado la plantilla en tres bloques en función de los niveles de productividad. A cada empleado se le ha asignado aleatoriamente una de las tres opciones de incentivos: 'Bonus'
, 'Profit Sharing'
, o 'Work from Home'
.
Antes de evaluar el impacto total de estos tratamientos incentivadores sobre la productividad, es crucial verificar que la asignación inicial del tratamiento fue realmente aleatoria y equitativa en los distintos bloques de productividad. Este paso garantiza que cualquier diferencia observada en la productividad después del tratamiento pueda atribuirse con seguridad a los propios programas de incentivos, y no a disparidades preexistentes en los bloques.
Se ha cargado para ti la función f_oneway()
de scipy.stats
.
Este ejercicio forma parte del curso
Diseño experimental en Python
Instrucciones de ejercicio
- Agrupa
prod_df
por la columna adecuada que represente los diferentes bloques de tus datos. - Utiliza una función lambda para aplicar la prueba ANOVA dentro de cada bloque, especificando el argumento de la función
lambda
. - Para cada grupo de tratamiento dentro de los bloques, filtra
prod_df
basándote en los valores de la columna'Treatment'
y selecciona la columna'productivity_score'
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Perform the within blocks ANOVA, first grouping by block
within_block_anova = prod_df.groupby('____').apply(
# Set function
lambda x: ____(
# Filter Treatment values based on outcome
x[x['____'] == '____']['____'],
x[x['____'] == '____']['____'],
x[x['____'] == '____']['____'])
)
print(within_block_anova)