ANOVA внутри блоков сотрудников
Продолжая анализ данных производственной компании, в котором изучалась производительность рабочих в разных блоках в рамках программы стимулирования, вы переходите к более глубокому исследованию. Компания располагает расширенным набором данных в DataFrame productivity, включающим 1200 дополнительных сотрудников и их показатели productivity_score. Персонал разделён на три блока по уровню производительности. Каждому сотруднику случайным образом назначен один из трёх вариантов стимулирования: 'Bonus', 'Profit Sharing' или 'Work from Home'.
Прежде чем оценивать общее влияние этих стимулов на производительность, необходимо убедиться, что исходное распределение по группам действительно было случайным и равномерным в рамках каждого блока. Этот шаг гарантирует, что любые наблюдаемые различия в производительности после введения стимулов можно с уверенностью объяснить самими программами, а не изначальными различиями между блоками.
Функция f_oneway() из scipy.stats уже загружена.
Это упражнение является частью курса
Планирование экспериментов в Python
Инструкции к упражнению
- Сгруппируйте
prod_dfпо столбцу, который соответствует различным блокам в ваших данных. - Используйте функцию
lambda, чтобы применить тест ANOVA внутри каждого блока, указав аргумент функцииlambda. - Для каждой группы лечения внутри блоков отфильтруйте
prod_dfпо значениям столбца'Treatment'и выберите столбец'productivity_score'.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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)