Zacznij terazZacznij za darmo

ANOVA w blokach pracowników

Kontynuując wcześniejsze analizy dotyczące firmy produkcyjnej – gdzie badano wydajność pracowników w różnych blokach po wprowadzeniu programu motywacyjnego – teraz zagłębiasz się w dane jeszcze bardziej. Firma dysponuje teraz rozbudowanym zbiorem danych w ramce danych productivity, obejmującym 1200 dodatkowych pracowników wraz z ich productivity_score. Załoga została podzielona na trzy bloki według poziomów wydajności. Każdemu pracownikowi losowo przypisano jeden z trzech wariantów motywacyjnych: 'Bonus', 'Profit Sharing' lub 'Work from Home'.

Zanim ocenisz pełny wpływ tych programów motywacyjnych na wydajność, warto upewnić się, że początkowe przypisanie do grup było rzeczywiście losowe i równomierne we wszystkich blokach. Ten krok pozwala potwierdzić, że wszelkie zaobserwowane różnice w wydajności po zastosowaniu programów wynikają z samych bodźców motywacyjnych – a nie z wcześniej istniejących różnic między blokami.

Funkcja f_oneway() z biblioteki scipy.stats została już załadowana.

To ćwiczenie jest częścią kursu

Projektowanie eksperymentów w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Pogrupuj prod_df według kolumny reprezentującej poszczególne bloki w danych.
  • Użyj funkcji lambda, aby zastosować test ANOVA w obrębie każdego bloku – podaj odpowiedni argument funkcji lambda.
  • Dla każdej grupy traktowania w blokach przefiltruj prod_df według wartości kolumny 'Treatment' i wybierz kolumnę 'productivity_score'.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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)
Edytuj i uruchom kod