Analiza danych_HR

1 Wprowadzenie

Cel projektu: Celem niniejszego projektu jest analiza zbioru danych HR pod kątem identyfikacji przyczyn rotacji pracowników. Jest to kluczowe zagadnienie biznesowe, ponieważ koszty związane z rekrutacją i onboardingiem (wraz z utraconą produktywnością) szacuje się na 50–200% rocznego wynagrodzenia odchodzącego pracownika.

Zakres analizy: W projekcie zwróciliśmy szczególną uwagę na znalezienie zależności między odejściem pracownika a zmiennymi takimi jak: nadgodziny, wynagrodzenie, wiek czy środowisko pracy. Analiza ma na celu wskazanie obszarów, które wymagają działań prewencyjnych.

Struktura raportu: Raport składa się z: wprowadzenia, data cleansing oraz data wrangling, wizualizacji danych, wnioskowania oraz podsumowania i wniosków końcowych.

Dane: Zbiór danych zawiera 1470 wierszy oraz 35 kolumn.

1.1 Pytania badawcze

  • Czy nadgodziny i niskie zadowolenie ze środowiska zwiększają ryzyko odejścia pracownika?

  • Czy pracownicy z niższym miesięcznym wynagrodzeniem lub rzadkimi awansami odchodzą częściej?

  • Jaka jest charakterystyka (wiek, staż pracy) pracownika, który najczęściej decyduje się na odejście?

  • Które działy oraz stanowiska są najbardziej narażone na odejścia pracowników?

1.2 Opis danych

Analizowany zbiór danych zawiera informacje dotyczące pracowników firmy.

Zmienne w zbiorze danych można podzielić na następujące kategorie:

  • Zmienna Objaśniana: Attrition: Zmienna kategoryczna wskazująca na to, czy pracownik odszedł z firmy.

  • Zmienne Demograficzne i Osobiste: Age: Wiek pracownika (Lata) Gender: Płeć pracownika. MaritalStatus: Stan cywilny (Single, Married, Divorced). Education: Poziom wykształcenia (1-5). EducationField: Dziedzina wykształcenia (np. Life Sciences, Medical). DistanceFromHome: Odległość od domu.

  • Zmienne Związane z Pracą oraz Rolą: Department: Dział, w którym pracuje dana osoba (Sales, R&D, HR). JobRole: Konkretne stanowisko, które zajmuję dana osoba (np. Sales Executive, Laboratory Technician). JobLevel: Poziom stanowiska w strukturze firmy. BusinessTravel: Częstotliwość podróży służbowych (Rarely, Frequently, Non-Travel). OverTime: Czy pracownik pracuje w godzinach ponadwymiarowych (Yes/No).

  • Wynagrodzenie i Benefity: MonthlyIncome: Miesięczne wynagrodzenie. DailyRate, HourlyRate, MonthlyRate: Stawki płacowe w różnych ujęciach czasowych. PercentSalaryHike: Procentowa podwyżka wynagrodzenia. StockOptionLevel: Poziom opcji na akcje pracownicze.

  • Satysfakcja i Oceny: EnvironmentSatisfaction: Zadowolenie ze środowiska pracy. JobSatisfaction: Zadowolenie z wykonywanej pracy. WorkLifeBalance: Ocena równowagi między życiem zawodowym a prywatnym. RelationshipSatisfaction: Satysfakcja z relacji ze współpracownikami. PerformanceRating: Ocena wydajności pracownika.

  • Historia Zatrudnienia: TotalWorkingYears: Całkowity staż pracy (lata). YearsAtCompany: Liczba lat przepracowanych w obecnej firmie. YearsInCurrentRole: Czas na obecnym stanowisku (lata). YearsSinceLastPromotion: Czas, który upłynął od ostatniego awansu (lata). YearsWithCurrManager: Czas pracy z obecnym menedżerem (lata).

2 Porządkowanie i czyszczenie danych

2.1 Braki danych

W danych znajduje sie (91.43 %) kompletnych wartości.

Kompletność zmiennych: W tym kroku sprawdziliśmy to, jaka część kolumn w zbiorze jest całkowicie wolna od brakujących informacji. Obliczenia wykazały, że 91.43% zmiennych jest w pełni kompletnych. Oznacza to, że problem braków danych dotyczy jedynie ok. 8.6% kolumn.

Ogólny poziom braków: Sprawdziliśmy globalny odsetek brakujących komórek w całym arkuszu danych. Powyższa wizualizacja wskazuje na to, że jedynie 0.8% wszystkich wartości to braki (kolor czarny), podczas gdy 99.2% danych jest dostępnych (kolor szary). Warto zwrócić uwagę na to, że braki nie występują losowo w całym zbiorze, lecz koncentrują się w konkretnych kolumnach (widoczne, czarne pasy na wykresie). Sugeruje nam to, iż zaobserwowane braki mają charakter systematyczny dla wybranych cech, a nie są wynikiem przypadkowych błędów zapisu dla całego zbioru.

2.2 Wizualizacje połączeń w brakach danych

W tej sekcji zastosowaliśmy wizualizację współwystępowania braków, aby zrozumieć ich strukturę w kolumnach Age, Attrition i MonthlyIncome. Naszym celem było sprawdzenie tego, czy wykryte przez nas braku układają się we wzorce.

Analiza powyższego wykresu wskazuje na to, iż braki w kolumnach Age, Attrition i MonthlyIncome współwystępują w mniej niż 3% przypadków. Oznacza to brak ukrytych zależności między nimi i sugeruje ich losowy charakter.

Uzupełniając naszą analizę, wygenerowaliśmy wykres macierzowy, którego celem jest zweryfikowanie, czy braki danych grupują się w specyficznych obszarach zbioru czy są równomiernie rozproszone. Pozwoli nam to wykluczyć błędy techniczne powstałe na etapie wprowadzania danych.

##      BusinessTravel DailyRate Department DistanceFromHome Education
## 1105              1         1          1                1         1
## 128               1         1          1                1         1
## 125               1         1          1                1         1
## 12                1         1          1                1         1
## 78                1         1          1                1         1
## 9                 1         1          1                1         1
## 12                1         1          1                1         1
## 1                 1         1          1                1         1
##                   0         0          0                0         0
##      EducationField EmployeeCount EmployeeNumber EnvironmentSatisfaction Gender
## 1105              1             1              1                       1      1
## 128               1             1              1                       1      1
## 125               1             1              1                       1      1
## 12                1             1              1                       1      1
## 78                1             1              1                       1      1
## 9                 1             1              1                       1      1
## 12                1             1              1                       1      1
## 1                 1             1              1                       1      1
##                   0             0              0                       0      0
##      HourlyRate JobInvolvement JobLevel JobRole JobSatisfaction MaritalStatus
## 1105          1              1        1       1               1             1
## 128           1              1        1       1               1             1
## 125           1              1        1       1               1             1
## 12            1              1        1       1               1             1
## 78            1              1        1       1               1             1
## 9             1              1        1       1               1             1
## 12            1              1        1       1               1             1
## 1             1              1        1       1               1             1
##               0              0        0       0               0             0
##      MonthlyRate NumCompaniesWorked Over18 OverTime PercentSalaryHike
## 1105           1                  1      1        1                 1
## 128            1                  1      1        1                 1
## 125            1                  1      1        1                 1
## 12             1                  1      1        1                 1
## 78             1                  1      1        1                 1
## 9              1                  1      1        1                 1
## 12             1                  1      1        1                 1
## 1              1                  1      1        1                 1
##                0                  0      0        0                 0
##      PerformanceRating RelationshipSatisfaction StandardHours StockOptionLevel
## 1105                 1                        1             1                1
## 128                  1                        1             1                1
## 125                  1                        1             1                1
## 12                   1                        1             1                1
## 78                   1                        1             1                1
## 9                    1                        1             1                1
## 12                   1                        1             1                1
## 1                    1                        1             1                1
##                      0                        0             0                0
##      TotalWorkingYears TrainingTimesLastYear WorkLifeBalance YearsAtCompany
## 1105                 1                     1               1              1
## 128                  1                     1               1              1
## 125                  1                     1               1              1
## 12                   1                     1               1              1
## 78                   1                     1               1              1
## 9                    1                     1               1              1
## 12                   1                     1               1              1
## 1                    1                     1               1              1
##                      0                     0               0              0
##      YearsInCurrentRole YearsSinceLastPromotion YearsWithCurrManager Age
## 1105                  1                       1                    1   1
## 128                   1                       1                    1   1
## 125                   1                       1                    1   1
## 12                    1                       1                    1   1
## 78                    1                       1                    1   0
## 9                     1                       1                    1   0
## 12                    1                       1                    1   0
## 1                     1                       1                    1   0
##                       0                       0                    0 100
##      Attrition MonthlyIncome    
## 1105         1             1   0
## 128          1             0   1
## 125          0             1   1
## 12           0             0   2
## 78           1             1   1
## 9            1             0   2
## 12           0             1   2
## 1            0             0   3
##            150           150 400

Wykres ukazuje równomierne rozproszenie brakujących wartości w kolumnach Age, Attrition i MonthlyIncome. Brak widocznych, zwartych bloków czy klastrów pustych danych ostatecznie potwierdza, że mamy do czynienia z losowymi brakami, a nie systemowym błędem.

Aby zweryfikować nasze wnioski z poprzednich wykresów, stworzyliśmy heatmap korelacji braków. Sprawdza ona, czy istnienie braku w jednej zmiennej zwiększa statystyczne prawdopodobieństwo wystąpienia braku w innej.

Współczynniki korelacji między brakami są bliskie zeru. Oznacza to brak istotnych statystycznie powiązań. Potwierdza to ostatecznie, że mechanizm powstawania braków jest losowy i nie wymaga stosowania zaawansowanych modeli do ich modelowania.

2.3 Inputacja metodą Hot-Deck

Zastosowano metodę imputacji Hot-Deck. Jest to technika, w której brakujące wartości są uzupełniane danymi od losowo wybranego “podobnego” rekordu (sąsiada) w zbiorze danych. Metoda ta jest lepsza od uzupełniania średnią, ponieważ pozwala zachować naturalny rozkład zmiennych i ich wariancję.

2.4 Analiza wartości odstających

2.4.1 Sprawdzamy kluczowe zmienne numeryczne pod kątem “outlierów”

Wykresy pudełkowe wskazują na obecność wartości odstających (kropek) w zmiennych MonthlyIncome oraz TotalWorkingYears. Jest to zjawisko naturalne w strukturze korporacyjnej – wartości te reprezentują kadrę zarządzającą (Managerów i Dyrektorów) z wieloletnim stażem i wyższymi zarobkami. Nie są to błędy danych, dlatego nie zostaną usunięte z dalszej analizy.

3 Walidacja danych

W celu sprawdzenia spójności logicznej danych, poniżej zdefiniowaliśmy reguły, które zostały zestawione z rzeczywistym zbiorem danych za pomocą funkcji confront().

Reguły walidacji danych:

  • Staż w firmie (YearsAtCompany) musi być mniejszy lub równy całkowitemu stażowi pracy (TotalWorkingYears).
  • Czas na obecnym stanowisku (YearsInCurrentRole) musi być mniejszy lub równy stażowi w firmie (YearsAtCompany).
  • Czas pracy z obecnym menedżerem (YearsWithCurrManager) musi być mniejszy lub równy stażowi w firmie (YearsAtCompany).
  • Lata od ostatniego awansu (YearsSinceLastPromotion) muszą być mniejsze lub równe stażowi w firmie (YearsAtCompany).

Całkowity staż pracy (TotalWorkingYears): Sprawdziliśmy spójność między stażem w obecnej firmie a całkowitym doświadczeniem zawodowym. W tym celu zweryfikowaliśmy, czy YearsAtCompany jest mniejsze lub równe TotalWorkingYears. Nie znaleziono żadnych przypadków naruszenia tej reguły, co oznacza, że u każdego pracownika staż w obecnym przedsiębiorstwie mieści się w ramach jego całkowitej kariery.

Staż na obecnym stanowisku (YearsInCurrentRole): Sprawdziliśmy, czy czas spędzony na obecnym stanowisku nie przekracza całkowitego czasu zatrudnienia w firmie. Przetestowaliśmy warunek, w którym YearsInCurrentRole powinno być mniejsze lub równe YearsAtCompany. Wszystkie obserwacje spełniają to kryterium, co potwierdza logiczną poprawność danych dotyczących ścieżki kariery wewnątrz organizacji.

Czas pracy z obecnym menedżerem (YearsWithCurrManager): Sprawdziliśmy, czy okres współpracy z obecnym przełożonym jest możliwy w świetle stażu pracownika w firmie. Zbadaliśmy zgodność z regułą YearsWithCurrManager <= YearsAtCompany. Nie odnotowano żadnych błędów, co wskazuje, że relacje podległości są poprawnie osadzone w czasie trwania zatrudnienia.

Czas od ostatniego awansu (YearsSinceLastPromotion): Sprawdziliśmy, czy liczba lat, która upłynęła od ostatniego awansu, nie jest większa niż całkowity staż w firmie. Weryfikowano rekordy pod kątem warunku YearsSinceLastPromotion <= YearsAtCompany. Nie znaleziono sprzeczności, co oznacza, że historia awansów jest logicznie spójna z datą rozpoczęcia pracy w firmie.

4 Wizualizacja danych

Wykres słupkowy przedstawiony powyżej pokazuje zestawienie średniego miesięcznego wynagrodzenia w podziale na trzy główne działy firmy: Human Resources, Research & Development oraz Sales.

Z danych wynika, że najlepiej opłacaną jednostką organizacyjną jest dział HR z przeciętną pensją na poziomie 7 060. Na drugim miejscu plasuje się Sprzedaż (6 952). Najniższe średnie wynagrodzenie, wynoszące 6 258, zaobserwowano w dziale Badawczo-Rozwojowym (R&D).

Powyższy wykres przedstawia szczegółową strukturę miesięcznych dochodów w podziale na działy (Department) oraz poziom stanowiska (JobLevel w skali 1–5).

  • Zmienność danych (Rozstęp): W działach Research & Development oraz Sales warto zwrócić szczególną uwagę na znaczną rozpiętość wynagrodzeń na średnich oraz wyższych poziomach stanowisk (szczególnie poziomy 3 i 4), co pokazuję wysokość “pudełek”. Wskazuje to na fakt, iż na tych stanowiskach widełki płacowe są bardzo elastyczne.

  • Wartości odstające (Outliers): Wykres ujawnia obecność licznych wartości odstających (oznaczonych czarnymi * punktami), szczególnie w dziale Research & Development na niższych poziomach stanowisk. Może to wskazywać na występowanie specyficznych ról specjalistycznych, które są wyceniane wyżej niż standardowe wynagrodzenie dla danego poziomu stanowiska.

  • Ciekawy przypadek działu HR: Szczególną uwagę należy zwrócić na dział HR, który wykazuje węższy rozkład danych na większości poziomów w porównaniu do działów Sales oraz R&D. Może to nam sugerować mniejszą liczebności próby w tym dziale lub bardziej ustandaryzowaną siatkę płac.

Wykres przedstawiony powyżej pozwala nam zweryfikować hipotezę, czy praca w godzinach nadliczbowych (OverTime) bezpośrednio przekłada się na niezadowolenie pracowników, a także czy płeć ma w tym kontekście znaczenie. Wykres podzieliliśmy na dwie sekcje: osoby nie wykonujące pracy w godzinach nadliczbowowych oraz te, które je wykonują.

Wnioski:

  • Destrukcyjny wpływ nadgodzin na satysfakcję z pracy: Porównując oba panele, wyraźnie widać, że w grupie osób pracujących w godzinach nadliczbowych (OverTime: Yes) dominuje niska satysfakcja (Low). W przypadku grupy nie wykonujących pracu w godzinach nadliczbowych rozkład ocen jest bardziej zrównoważony.

  • Krytyczna sytuacja wśród mężczyzn: Mężczyźni pracujący w godzinach nadliczbowych stanowią najliczniejszą grupę o niskiej satysfakcji (najwyższy słupek na całym wykresie, powyżej 20 osób), a jednocześnie najmniej liczną grupę o satysfakcji bardzo wysokiej (zaledwie kilka osób). Wskazuje to na to, że mężczyźni znacznie gorzej znoszą dodatkowe obciążenie pracą lub bardziej obciążeni pracą w godzinach nadliczbowych.

  • Kobiety a nadgodziny: Warto zauważyć, że w grupie kobiet (Female) pracujących w godzinach nadliczbowych, mimo znaczącej ilości niskich ocen, słupek satysfakcji “Very High” jest relatywnie wysoki – wyższy niż u mężczyzn w takiej samej sytuacji. Może to sugerować inne czynniki motywujące lub inną specyfikę stanowisk zajmowanych przez kobiety.

  • Kluczowe wnioski: Wykres jednoznacznie wskazuje na to, że praca w godzinach nadliczbowych jest istotnie powiązana z niższą satysfkacją z pracy. Szczególną grupą ryzyka, u której należy spodziewać się rotacji, są mężczyźni pracujący w godzinach nadliczbowych. To właśnie w tej grupie firma powinna najpilniej zweryfikować work-life balance, jeśli zależy jej na zapobieganiu odejściom z pracy.

5 Statystyki Opisowe

JobLevel Min Max Średnia Odchylenie Mediana Q1 Q3 Skośność Kurtoza
1 1051 19859 3140.04 1836.16 2718 2333.50 3443 5.45 39.34
2 1261 19926 5602.80 2268.47 5325 4449.25 6341 3.08 15.92
3 1051 19246 9600.42 2420.79 9886 8011.00 10785 -0.23 2.30
4 2232 17924 14364.56 3907.77 15982 13356.25 16885 -1.77 2.48
5 3294 19973 18078.90 3821.39 19197 18722.00 19566 -3.08 8.08

Tabela powyżej przedstawia zestawienie kluczowych statystyk opisowych dla zmiennej MonthlyIncome w podziale na JobLevel.

Najistotniejsze wnioski:

  • Progresja wynagrodzeń: Obserwujemy wyraźny, wzrost przeciętnych zarobków wraz z poziomem stanowiska (od ok. 2 796 do 19 192). Najbardziej dynamiczny skok płacowy (niemal dwukrotny) występuje przy awansie z poziomu 1 na 2.

  • Min, max oraz kwartyle: Analiza kwartyli (Q1, Q3) wskazuje na wyraźne rozdzielenie przedziałów płacowych pomiędzy poziomami. Uwagę zwraca poziom 5, gdzie mimo najwyższych wartości (Min: 18 041, Max: 19 973), rozstęp jest najwęższy w zestawieniu. Może to wskazywać na sztywne widełki oraz małą elastyczności płac na najwyższym szczeblu.

  • Skośność: Wraz z awansem następuje inwersja asymetrii - na poziomach niższych (1-3) skośność jest dodatnia - dominują zarobki bliższe minimum, z kolei na wyższych poziomach (4-5) staje się ujemna, oznacza to, że masa rozkładu przesuwa się w stronę wartości maksymalnych).

W celu zidentyfikowania powiązań w zbiorze danych, przeprowadziliśmy powyżej analizę korelacji liniowej (Pearsona) oraz rangowej (Kendalla).

Kluczowymi wnioskami wynikającymi z naszej analizy jest m.in. zidentyfikowanie umiarkowanej, dodatniej korelacji pomiędzy dochodem a całkowitym stażem pracy, co jest silniejszym związkiem niż w przypadku wieku pracownika. Warto również zwrócić uwagę na fakt, iż maksymalne wartości współczynników nie przekraczają progu silnej korelacji.

6 Wnioskowanie Statystyczne

W tej sekcji zweryfikujemy hipotezy badawcze postawione we wstępie, wykorzystując testy statystyczne.

6.1 Testy normalności rozkładu

Przed wyborem odpowiednich testów (parametryczne vs nieparametryczne) sprawdzamy rozkład zmiennej MonthlyIncome.

## [1] "Wartość p dla testu normalności wynagrodzenia: 3.7e-24"
## [1] "Odrzucamy hipotezę o normalności rozkładu. Do analizy zależności zastosujemy testy nieparametryczne (np. U Manna-Whitneya)."

Uzyskana przez nas wartość p-value nakazuje odrzucenie hipotezy zerowej o normalności rozkładu. Ze względu na niespełnienie założenia parametrycznego, do dalszej analizy zmiennej “MonthlyIncome” zastosujemy testy nieparametryczne.

7 Odpowiedź na pytanie badawcze nr 1: Wpływ nadgodzin i środowiska

7.1 Czy nadgodziny (OverTime) zwiększają rotację?

Interpretacja: Wykres oraz test statystyczny wskazują na bardzo silną zależność. W grupie pracowników mających nadgodziny (Yes), odsetek odejść jest trzykrotnie wyższy (~30%) niż w grupie pracującej w normie (~10%). Nadgodziny są kluczowym czynnikiem ryzyka.

7.2 Czy zadowolenie ze środowiska (EnvironmentSatisfaction) ma znaczenie?

Interpretacja: Widoczny jest trend, w którym pracownicy oceniający środowisko jako “Niskie” (Low) odchodzą częściej niż ci z oceną “Bardzo wysoką” (Very High). Niska satysfakcja z biura/atmosfery sprzyja decyzjom o odejściu.

8 Odpowiedź na pytanie badawcze nr 2: Finanse a odejścia

Interpretacja: Test Manna-Whitneya wykazuje istotną różnicę (p < 0.001). Mediana zarobków osób odchodzących (ok. 3200) jest znacznie niższa od mediany osób pozostających w firmie (ok. 5200). Wynagrodzenie jest zatem silnym motywatorem odejść.

9 Odpowiedź na pytanie badawcze nr 3: Profil demograficzny (Wiek)

Interpretacja: Osoby decydujące się na odejście są statystycznie młodsze (mediana wieku ~32 lata) niż pracownicy lojalni (mediana ~36 lat). Firma ma największy problem z utrzymaniem młodych talentów.

10 Odpowiedź na pytanie badawcze nr 4: Analiza Działów (Departments)

Interpretacja: Dział Sprzedaży (Sales) jest najbardziej narażony na rotację – odsetek odejść przekracza tu 20%. Dział Badawczo-Rozwojowy (R&D) cechuje się największą stabilnością kadry.

11 Wnioski końcowe

Celem niniejszej pracy było zidentyfikowanie kluczowych czynników finansowych oraz organizacyjnych wpływających na rotację pracowników – cel ten udało się osiągnąć. Przeprowadzona analiza statystyczna pozwoliła wyodrębnić główne determinanty odejść, którymi okazały się: poziom wynagrodzenia, obciążenie nadgodzinami oraz wiek pracownika.

11.1 Kluczowe wyniki

Czynnik finansowy: Istnieje drastyczna dysproporcja w zarobkach. Mediana wynagrodzenia osób odchodzących jest aż o 40% niższa niż osób lojalnych. Jest to kluczowy czynnik determinujący decyzję o zmianie pracy.

Wypalenie zawodowe: Nadgodziny są krytycznym obciążeniem – ich występowanie trzykrotnie zwiększa ryzyko odejścia.

Profil ryzyka: Najczęściej odchodzą pracownicy młodzi oraz zatrudnieni w Dziale Sprzedaży.