Wstęp



W poniższym raporcie poruszony zostaje problem “Employee Attrition” - dobrowolnego odpływu pracowników, który następuje w skutek indywidualnych decyzji, trudnych do przewidzenia z perspektywy pracodawcy.

Badania Antal wskazują, że średnio organizacje notują wskaźnik rotacji dobrowolnej poziomie 10,8 procent1.

Celem tego projektu jest zbadanie istotności czynników mających wpływ na podjęcie przez pracownika decyzji o rezygnacji z pracy. Analiza opiera się o próbkę danych dla fikcyjnego przedsiębiorstwa, które zostały przygotowane przez IBM w ramach opracowania “HR Analytics Employee Attrition & Performance”. Dane zostały pobrane z portalu kaggle.com2.


Pytania badawcze:


  1. Które zmienne są najbardziej istotne statystycznie w przypadku rezygnacji z pracy?

  2. Czy można przygotować profil pracownika o najwyższym ryzyku rezygnacji?

  3. Czy istnieją grupy zawodowe, które statystycznie są bardziej zagrożone ryzykiem odejścia pracowników niż inne?


Data wrangling - przetwarzanie danych


Zbiór danych składa się z 1470 obserwacji o pracownikach i 35 zmiennych, zarówno numerycznych, jak i kategorycznych.

Prace nad zbiorem rozpoczynamy od sprawdzenia podstawowych właściwości zmiennych (klasa i struktura danych, NULLe, duplikaty).

class(full_data)
## [1] "data.frame"
any(is.na(full_data))
## [1] FALSE
sum(duplicated(full_data))
## [1] 0

Ze względu na import z pliku .csv należy zmienić nazwę kolumny z d.ż na Age.

colnames(full_data)[1] <- "Age"

Po wstępnym zapoznaniu z danymi, konieczny jest dokładniejszy opis poszczególnych zmiennych:

Nazwa kolumny (zmienna) Opis
AGE - wiek Wartość numeryczna
ATTRITION - rezygnacja Pracownik, który zrezygnował TAK, NIE
BUSINESS TRAVEL - podróże służbowe Brak podróży, Częste podróże, Rzadkie podróże
DAILY RATE - stawka dzienna Wartość numeryczna, przypuszczalnie w $
DEPARTMENT - dział HR, Badania i rozwój, Sprzedaż
DISTANCE FROM HOME - odległość z pracy do domu Wartość numeryczna, przypuszczalnie w milach
EDUCATION - poziom edukacji 1 Gimnazjalne i poniżej 2 Średnie 3 Inżynier/ Licencjat
4 Magister 5 Doktorat
EDUCATION FIELD - obszar edukacji HR, Nauki społeczne, Marketing, Medyczne, Inne, Techniczne
EMPLOYEE COUNT - liczba pracowników Wartość numeryczna zawsze = 1
EMPLOYEE NUMBER - numer pracownika Wartość numeryczna, kolejna
ENVIROMENT SATISFACTION - satysfakcja ze środowiska pracy 1 Niska 2 Umiarkowana 3 Wysoka 4 Bardzo wysoka
GENDER - płeć Kobieta, Mężczyzna
HOURLY RATE - stawka godzinowa Wartość numeryczna
JOB INVOLVEMENT - zaangażowanie pracownika 1 Niskie 2 Umiarkowane 3 Wysokie 4 Bardzo wysokie
JOB LEVEL - poziom stanowiska Wartość numeryczna, przypuszczalnie im wyższa, tym wyższy poziom
JOB ROLE - pozycja pracy Przedstawiciel handlowy, Przedstawiciel medyczny, HR, Laborant, Manager, Dyrektor Produkcji, Kierownik Sprzedaży, Naukowiec prowadzący badania, Dyrektor badań
JOB SATISFACTION - satysfakcja z pracy 1 Niska 2 Średnia 3 Wysoka 4 Bardzo wysoka
MARITAL STATUS - stan cywilny Rozwiedziony/a, Panna/Kawaler, Mężatka/Żonaty
MONTHLY INCOME - przychód miesięczny Wartość numeryczna
MONTHY RATE - stawka miesięczna Wartość numeryczna
NUMCOMPANIES WORKED - poprzednie miejsca pracy Wartość numeryczna
OVER 18 - pełnoletność TAK, NIE
OVERTIME - nadgodziny TAK, NIE
PERCENT SALARY HIKE - podwyżka w % Wartość numeryczna
PERFORMANCE RATING - wyniki pracy 1 Niski 2 Dobry 3 Świetny 4 Rewelacja
RELATIONS SATISFACTION - satysfakcja z relacji 1 Niska 2 Średnia 3 Wysoka 4 Bardzo wysoka
STANDARD HOURS - standardowe godziny pracy Wartość numeryczna
STOCK OPTIONS LEVEL - możliwości inwestycyjne 0 - brak 1 - niskie 2 - średnie 3 - wysokie
TOTAL WORKING YEARS - całkowity staż pracy Wartość numeryczna
TRAINING TIMES LAST YEAR - liczba szkoleń w poprzednim roku Wartość numeryczna
WORK LIFE BALANCE 1 Słaby 2 Umiarkowany 3 Silny 4 Doskonały
YEARS AT COMPANY - lata stażu w organizacji Wartość numeryczna
YEARS IN CURRENT ROLE - lata stażu na obecnym stanowisku Wartość numeryczna
YEARS SINCE LAST PROMOTION - lata od ostatniego awansu Wartość numeryczna
YEARS WITH CURRENT MANAGER - lata spędzone z obecnym szefem Wartość numeryczna

Powyższe zapoznanie się z danymi, pozwala nam zaobserwować iż:


Preprocessing danych i ich oczyszczanie


  1. Usuwanie zbędnych kolumn
hr <- full_data %>%
  select(-Over18, -EmployeeCount, -EmployeeNumber, -StandardHours)
attach(hr)
  1. Zmiana danych kategorycznych na numeryczne
hr$Attrition[hr$Attrition=="Yes"]=1
hr$Attrition[hr$Attrition=="No"]=0
hr$Attrition=as.numeric(hr$Attrition)

hr$OverTime[hr$OverTime=="Yes"]=1
hr$OverTime[hr$OverTime=="No"]=0
hr$OverTime=as.numeric(hr$OverTime)

hr$Gender[hr$Gender=="Male"]=1
hr$Gender[hr$Gender=="Female"]=0
hr$Gender=as.numeric(hr$Gender)
  1. Zmiana danych kategorycznych na factory
hr[,c(3,5,8,12,13,14,16,22,23,24)]=lapply(hr[,c(3,5,8,12,13,14,16,22,23,24)],as.factor)
  1. Pogrupowanie wieku pracowników
hr <- hr %>%
mutate(age_group=cut(Age, breaks=c(-Inf, 18, 30, 40, 50, 60, Inf), 
       labels=c(">20","21-30","31-40", "41-50", "51-60", "60+")))
full_data <- full_data %>%
mutate(age_group=cut(Age, breaks=c(-Inf, 18, 30, 40, 50, 60, Inf), 
       labels=c(">20","21-30","31-40", "41-50", "51-60", "60+")))
  1. Zamiana stopni wykształcenia na ich poziom
full_data$Education[full_data$Education=="1"]="Podstawowe"
full_data$Education[full_data$Education=="2"]="Ponadpostawowe i średnie"
full_data$Education[full_data$Education=="3"]="Licencjat/Inżynier"
full_data$Education[full_data$Education=="4"]="Magister"
full_data$Education[full_data$Education=="5"]="Doktorat i wyżej"

Wizualizacja danych i wstępna analiza


Po weryfikacji i przygotowaniu danych możemy poddać je wizualizacji i przystąpić do analizy wyjaśniającej. Badając przyczyny odejścia pracowników niezbędnym wskaźnikiem jest stosunek pracowników, którzy odeszli, do tych, którzy pozostali. Dla obecnego zbioru jest to 86% do 16%, poniżej widoczna jest tabela ze szczegółowymi informacjami tylko o odchodzących.

full_data %>%
count(Attrition) %>%
mutate(freq = n / sum(n))
##   Attrition    n      freq
## 1        No 1233 0.8387755
## 2       Yes  237 0.1612245
  1. Wizualizacje ze względu na dane demograficzne
attrition_total <- c(0.16, 0.84)
names <- c("Rezygnacje", "Pracownicy")
pie(attrition_total, labels = names, col = c("#BEAED4", "#7FC97F"), init.angle = 90, clockwise=TRUE)

age_box <- ggplot(data = full_data, aes(x = Attrition, y = Age)) +
geom_boxplot(width = 0.3, show.legend = FALSE) +
geom_jitter(aes(color = Attrition), alpha = 0.5, show.legend = FALSE, position = position_jitter(width = 0.2, seed = 0)) +
scale_color_manual(values = c("#7FC97F","#BEAED4")) +
theme_minimal() +
labs(x = "Rezygnacje",
y = "Wiek") + ggtitle("Rezygnacje pracowników wg wieku") + theme_classic()

age_box

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=age_group, fill=Attrition), 
    position = "fill") + ggtitle("Odejścia pracowników wg grup wiekowych") + 
    labs(x = "Grupa wiekowa", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

age_group_box <- ggplot(data = full_data, aes(x = age_group, y = Attrition)) +
geom_boxplot(aes(color = age_group), width = 0.3, show.legend = FALSE) +
geom_jitter(aes(color = age_group), alpha = 0.5, show.legend = FALSE, position = position_jitter(width = 0.2, seed = 0)) +
scale_fill_brewer(palette="Accent") +
theme_minimal() +
labs(x = "Grupowa wiekowa",
y = "Rezygnacje") + ggtitle("Odejścia pracowników wg grup wiekowych") + theme_classic()

age_group_box

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=Gender,fill=Attrition), 
    position = "fill") + ggtitle("Odejścia pracowników wg płci") + 
    labs(x = "Płeć", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

options(repr.plot.width=15, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=Education, fill=Attrition), 
    position = "fill") + ggtitle("Odejścia pracowników wg poziomu wykształcenia")     + labs(x = "Poziom wykształcenia", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

options(repr.plot.width=15, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=EducationField, fill=Attrition), 
    position = "fill") + ggtitle("Odejścia pracowników wg dziedziny wykształcenia")     + labs(x = "Dziedzina wykształcenia", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") +  theme_classic()

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=MaritalStatus,fill=Attrition), 
    position = "fill") + ggtitle("Odejścia pracowników wg stanu cywilnego") + 
    labs(x = "Stan cywilny", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

marital_status_box <- ggplot(data = full_data, aes(x = MaritalStatus, y = Attrition)) +
geom_boxplot(aes(color = Attrition), width = 0.3, show.legend = FALSE) +
geom_jitter(aes(color = Attrition), alpha = 0.5, show.legend = FALSE, position = position_jitter(width = 0.2, seed = 0)) +
scale_color_manual(values = c("#7FC97F","#BEAED4","FDC086")) +
theme_minimal() + labs(x = "Stan cywilny", y = "Rezygnacje") + theme_classic()

marital_status_box

  1. Wizualizacje ze względu na charakter/pozycję pracy
options(repr.plot.width=15, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=JobRole, fill=Attrition), 
    position = "fill") + ggtitle("Odejścia pracowników wg stanowiska") + 
    labs(x = "Stanowisko", y = "% rezygnacji") + 
    scale_fill_brewer(palette="Accent") +  theme_classic() +  scale_x_discrete(guide = guide_axis(angle = 90))

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=Department, fill=Attrition), position = "fill")+
    ggtitle("Odejścia pracowników wg departamentów") + 
    labs(x = "Departament", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=OverTime,fill=Attrition), 
             position = "fill")+
    ggtitle("Odejścia pracowników wg nadgodzin") + 
    labs(x = "Nadgodziny", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=BusinessTravel,fill=Attrition), 
             position = "fill")+
    ggtitle("Odejścia pracowników wg podróży służbowych") + 
    labs(x = "Częstotliwość podróży służbowych", y = "% rezygnacji")  + scale_fill_brewer(palette="Accent") +  theme_classic()

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=WorkLifeBalance, fill=Attrition), 
             position = "fill")+
    ggtitle("Rezygnacje pracowników wg work life balance") + 
    labs(x = "Work Life Balance", y = "% rezygnacji") + scale_fill_brewer(palette="Accent") + theme_classic()

options(repr.plot.width=10, repr.plot.height = 10) 
  ggplot(data=full_data)+
    geom_bar(aes(x=WorkLifeBalance, fill=Attrition), 
    position = "fill") + ggtitle("Rezygnacje wg stanowisk i work life balance") + 
    labs(x = "Work Life Balance", y = "% rezygnacji") + facet_wrap(vars(JobRole)) + scale_fill_brewer(palette="Accent") + theme_classic()

full_data %>%
select(Attrition, YearsSinceLastPromotion) %>%
group_by(Attrition) %>%
ggplot(aes(x = YearsSinceLastPromotion, fill = Attrition)) + 
geom_density() + ggtitle("Lata od ostatniego awansu") + scale_fill_brewer(palette="Accent") + labs(x = "Lata od ostatniego awansu", y = "Gęstość") + theme_classic()

  1. Wizualizacje danych ze względu na przychody i możliwości inwestycji
ggplot(full_data, aes(MonthlyIncome, fill= Attrition)) + geom_histogram(bins=15) + ggtitle("Rozkład miesięcznych przychodów") + geom_vline(aes(xintercept = mean(MonthlyIncome)), color = "red", linetype = "dashed", size = 1) + geom_vline(aes(xintercept = median(MonthlyIncome)), color = "blue", linetype = "dashed", size = 1) + scale_fill_brewer(palette="Accent") + labs(x="Miesięczny Przychód", y="Liczba pracowników")

ggplot(data=full_data, mapping=aes(x=Attrition, y=MonthlyIncome, color=Attrition)) + geom_violin(trim=FALSE) + scale_color_brewer(palette="Accent") + stat_summary(fun=mean, geom = "point", size=2) + theme_classic() + labs(x="Rezygnacje", y="Miesięczny Przychód")

ggplot(data=full_data, mapping=aes(x=Attrition, y=StockOptionLevel, color=Attrition)) + geom_violin(trim=FALSE) + scale_color_brewer(palette="Accent") + stat_summary(fun=mean, geom = "point", size=2)  + theme_classic() + labs(x="Rezygnacje", y="Możliwości inwestycyjne")

full_data %>%
select(Attrition, PercentSalaryHike) %>%
group_by(Attrition, PercentSalaryHike) %>%
summarise(count = n()) %>%
ggplot(aes(x = PercentSalaryHike, y = count, fill = Attrition)) + 
geom_col(position = "dodge") + scale_fill_brewer(palette="Accent") +
geom_text(aes(label = count), position = position_dodge(width = 1), vjust = -0.5) + theme_classic()

  1. Wizualizacje danych ze względu na lata w firmie/doświadczenie pracy i oceny (tylko osób odchodzących)
doswiadczenie_total <- ggplot(Odchodzacy, aes(TotalWorkingYears)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
doswiadczenie_pracowdawca <- ggplot(Odchodzacy, aes(YearsAtCompany)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
doswiadczenie_stanowisko <- ggplot(Odchodzacy, aes(YearsInCurrentRole)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
lata_z_managerem <- ggplot(Odchodzacy, aes(YearsWithCurrManager)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()

grid.arrange(doswiadczenie_total, doswiadczenie_pracowdawca, doswiadczenie_stanowisko, lata_z_managerem, ncol=2, nrow = 2)

zaangazowanie <- ggplot(Odchodzacy, aes(JobInvolvement)) + geom_bar(col="#BEAED4", fill="#7FC97F")  + theme_classic()
satysfakcja <- ggplot(Odchodzacy, aes(JobSatisfaction)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
srodowisko <- ggplot(Odchodzacy, aes(EnvironmentSatisfaction)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
poziom <- ggplot(Odchodzacy, aes(JobLevel)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
wydajnosc <- ggplot(Odchodzacy, aes(PerformanceRating)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()
relacje <- ggplot(Odchodzacy, aes(RelationshipSatisfaction)) + geom_bar(col="#BEAED4", fill="#7FC97F") + theme_classic()

grid.arrange(zaangazowanie,satysfakcja,srodowisko,poziom, wydajnosc, relacje, ncol=2, nrow = 3)


Podsumowanie


Na podstawie wizualizacji można stwierdzić, że bardziej skłonne do odejścia są osoby, które:

  • są poniżej 30 roku życia,

  • mają wykształcenie podstawowe, techniczne,

  • są singlami,

  • pracują w dziale Sprzedaży,

  • pracują jako Przedstawiciele Handlowi,

  • miejsce pracy mają w odległości większej ok. 10 mil,

  • pracują nadliczbowe godziny,

  • często podróżują,

  • przez ostatnie 5 lat nie otrzymały awansu,

  • work life balance mają na najniższym poziomie,

  • posiadają krótki staż pracy - do 5 lat,

  • otrzymały podwyżkę do 15%,

  • posiadają stanowisko, które sklasyfikowane jest na 1 - najniższym poziomie,

  • są mocno zaangażowane w pracę,

  • mają słabe wyniki w pracy,

  • zarabiają ok. 2500$ miesięcznie (netto).

Dodatkowymi wnioskami, które mogą być przydatne przy tworzeniu modelu statystycznego są:

  • płeć ma niewielkie znaczenie przy odejściach,

  • poziomy satysfakcji nie są zróżnicowane.


Opis statystyczny zmiennych


Opis statystyczny zmiennych zostanie przedstawiony poniżej przy pomocy pakietu Skimr:

full_data %>%
  group_by() %>%
  skim()
Data summary
Name Piped data
Number of rows 1470
Number of columns 36
_______________________
Column type frequency:
character 10
factor 1
numeric 25
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
Attrition 0 1 2 3 0 2 0
BusinessTravel 0 1 10 17 0 3 0
Department 0 1 5 22 0 3 0
Education 0 1 8 24 0 5 0
EducationField 0 1 5 16 0 6 0
Gender 0 1 4 6 0 2 0
JobRole 0 1 7 25 0 9 0
MaritalStatus 0 1 6 8 0 3 0
Over18 0 1 1 1 0 1 0
OverTime 0 1 2 3 0 2 0

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
age_group 0 1 FALSE 5 31-: 619, 21-: 378, 41-: 322, 51-: 143

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Age 0 1 36.92 9.14 18 30.00 36.0 43.00 60 <U+2582><U+2587><U+2587><U+2583><U+2582>
DailyRate 0 1 802.49 403.51 102 465.00 802.0 1157.00 1499 <U+2587><U+2587><U+2587><U+2587><U+2587>
DistanceFromHome 0 1 9.19 8.11 1 2.00 7.0 14.00 29 <U+2587><U+2585><U+2582><U+2582><U+2582>
EmployeeCount 0 1 1.00 0.00 1 1.00 1.0 1.00 1 <U+2581><U+2581><U+2587><U+2581><U+2581>
EmployeeNumber 0 1 1024.87 602.02 1 491.25 1020.5 1555.75 2068 <U+2587><U+2587><U+2587><U+2587><U+2587>
EnvironmentSatisfaction 0 1 2.72 1.09 1 2.00 3.0 4.00 4 <U+2585><U+2585><U+2581><U+2587><U+2587>
HourlyRate 0 1 65.89 20.33 30 48.00 66.0 83.75 100 <U+2587><U+2587><U+2587><U+2587><U+2587>
JobInvolvement 0 1 2.73 0.71 1 2.00 3.0 3.00 4 <U+2581><U+2583><U+2581><U+2587><U+2581>
JobLevel 0 1 2.06 1.11 1 1.00 2.0 3.00 5 <U+2587><U+2587><U+2583><U+2582><U+2581>
JobSatisfaction 0 1 2.73 1.10 1 2.00 3.0 4.00 4 <U+2585><U+2585><U+2581><U+2587><U+2587>
MonthlyIncome 0 1 6502.93 4707.96 1009 2911.00 4919.0 8379.00 19999 <U+2587><U+2585><U+2582><U+2581><U+2582>
MonthlyRate 0 1 14313.10 7117.79 2094 8047.00 14235.5 20461.50 26999 <U+2587><U+2587><U+2587><U+2587><U+2587>
NumCompaniesWorked 0 1 2.69 2.50 0 1.00 2.0 4.00 9 <U+2587><U+2583><U+2582><U+2582><U+2581>
PercentSalaryHike 0 1 15.21 3.66 11 12.00 14.0 18.00 25 <U+2587><U+2585><U+2583><U+2582><U+2581>
PerformanceRating 0 1 3.15 0.36 3 3.00 3.0 3.00 4 <U+2587><U+2581><U+2581><U+2581><U+2582>
RelationshipSatisfaction 0 1 2.71 1.08 1 2.00 3.0 4.00 4 <U+2585><U+2585><U+2581><U+2587><U+2587>
StandardHours 0 1 80.00 0.00 80 80.00 80.0 80.00 80 <U+2581><U+2581><U+2587><U+2581><U+2581>
StockOptionLevel 0 1 0.79 0.85 0 0.00 1.0 1.00 3 <U+2587><U+2587><U+2581><U+2582><U+2581>
TotalWorkingYears 0 1 11.28 7.78 0 6.00 10.0 15.00 40 <U+2587><U+2587><U+2582><U+2581><U+2581>
TrainingTimesLastYear 0 1 2.80 1.29 0 2.00 3.0 3.00 6 <U+2582><U+2587><U+2587><U+2582><U+2583>
WorkLifeBalance 0 1 2.76 0.71 1 2.00 3.0 3.00 4 <U+2581><U+2583><U+2581><U+2587><U+2582>
YearsAtCompany 0 1 7.01 6.13 0 3.00 5.0 9.00 40 <U+2587><U+2582><U+2581><U+2581><U+2581>
YearsInCurrentRole 0 1 4.23 3.62 0 2.00 3.0 7.00 18 <U+2587><U+2583><U+2582><U+2581><U+2581>
YearsSinceLastPromotion 0 1 2.19 3.22 0 0.00 1.0 3.00 15 <U+2587><U+2581><U+2581><U+2581><U+2581>
YearsWithCurrManager 0 1 4.12 3.57 0 2.00 3.0 7.00 17 <U+2587><U+2582><U+2585><U+2581><U+2581>

Dodatkowo poniższą tabelą zbiór zostaje ponownie zweryfikowany pod względem poprawności wartości.

Wysoka wartość odchylenia standardowego i zmienności jest typowa dla zmiennej ciągłej w postaci przychodu.

tabela <- hr %>%
  select(Age, Gender, Attrition, MonthlyIncome, JobSatisfaction)  %>%
  group_by(Attrition, Gender) %>%
  summarise(sr.przychod = mean(MonthlyIncome), 
        sr.wiek = mean(Age), 
        sr.satysfkacja = mean(JobSatisfaction), 
        min.przychod = min(MonthlyIncome), 
        max.przychod = max(MonthlyIncome),
        odchylenie= sd(MonthlyIncome),
        zmiennosc = (odchylenie/sr.przychod)*100)
## `summarise()` has grouped output by 'Attrition'. You can override using the
## `.groups` argument.
tabela %>%
  kbl(caption = "Zmienne statystyczne dla Attrition") %>%
  kable_classic(full_width = F, html_font = "Cambria")
Zmienne statystyczne dla Attrition
Attrition Gender sr.przychod sr.wiek sr.satysfkacja min.przychod max.przychod odchylenie zmiennosc
0 0 7019.429 38.15569 2.728543 1129 19973 4760.456 67.81828
0 1 6704.964 37.15437 2.812842 1051 19999 4856.442 72.43053
1 0 4769.736 32.57471 2.425287 1261 19845 3791.774 79.49651
1 1 4797.160 34.20667 2.493333 1009 19859 3562.252 74.25753

Korelacja i testy statystyczne


Do zbadania zależności pomiędzy rezygnacjami pracowników, a innymi zmiennymi, które są dostępne w próbce danych wykorzystana zostanie korelacja Pearsona i jej wizualizacja przy pomocy heat map.

Poniższe macierze pozwolą ustalić, które zmienne mają pozytywną, neutralną, albo negatywną zależność pomiędzy sobą:

korelacja <- hr %>%
  select(Age, Attrition, DistanceFromHome, Education, EnvironmentSatisfaction,
         Gender, HourlyRate, JobSatisfaction, MonthlyIncome, MonthlyRate,
         NumCompaniesWorked, OverTime, PercentSalaryHike, 
         TotalWorkingYears, TrainingTimesLastYear, WorkLifeBalance, 
         YearsAtCompany:YearsWithCurrManager)

  ggcorrplot(cor(korelacja), hc.order = TRUE, lab = TRUE, lab_size = 2) +
  labs(title = "Korelacja pomiędzy zmiennymi numerycznymi") +
  theme(plot.title = element_text(hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5))

  corrplot(cor(korelacja), method ="number", type = "upper", 
           diag = FALSE, order =("alphabet"))

Oba wykresy korelacji pokazują iż możemy mieć do czynienia z przypadkiem, gdzie niektóre zmienne wprowadzają te same informacje. Przy tworzeniu modelu należy sprawdzić wartość wskaźnika inflacji wariancji i odrzucić niektóre kolumny.

round(cor(hr[,c(1,4,6,7, 9, 10, 15, 17:21, 25:31)]),2)
##                           Age DailyRate DistanceFromHome Education
## Age                      1.00      0.01             0.00      0.21
## DailyRate                0.01      1.00             0.00     -0.02
## DistanceFromHome         0.00      0.00             1.00      0.02
## Education                0.21     -0.02             0.02      1.00
## EnvironmentSatisfaction  0.01      0.02            -0.02     -0.03
## Gender                  -0.04     -0.01             0.00     -0.02
## JobSatisfaction          0.00      0.03             0.00     -0.01
## MonthlyIncome            0.50      0.01            -0.02      0.09
## MonthlyRate              0.03     -0.03             0.03     -0.03
## NumCompaniesWorked       0.30      0.04            -0.03      0.13
## OverTime                 0.03      0.01             0.03     -0.02
## PercentSalaryHike        0.00      0.02             0.04     -0.01
## TotalWorkingYears        0.68      0.01             0.00      0.15
## TrainingTimesLastYear   -0.02      0.00            -0.04     -0.03
## WorkLifeBalance         -0.02     -0.04            -0.03      0.01
## YearsAtCompany           0.31     -0.03             0.01      0.07
## YearsInCurrentRole       0.21      0.01             0.02      0.06
## YearsSinceLastPromotion  0.22     -0.03             0.01      0.05
## YearsWithCurrManager     0.20     -0.03             0.01      0.07
##                         EnvironmentSatisfaction Gender JobSatisfaction
## Age                                        0.01  -0.04            0.00
## DailyRate                                  0.02  -0.01            0.03
## DistanceFromHome                          -0.02   0.00            0.00
## Education                                 -0.03  -0.02           -0.01
## EnvironmentSatisfaction                    1.00   0.00           -0.01
## Gender                                     0.00   1.00            0.03
## JobSatisfaction                           -0.01   0.03            1.00
## MonthlyIncome                             -0.01  -0.03           -0.01
## MonthlyRate                                0.04  -0.04            0.00
## NumCompaniesWorked                         0.01  -0.04           -0.06
## OverTime                                   0.07  -0.04            0.02
## PercentSalaryHike                         -0.03   0.00            0.02
## TotalWorkingYears                          0.00  -0.05           -0.02
## TrainingTimesLastYear                     -0.02  -0.04           -0.01
## WorkLifeBalance                            0.03   0.00           -0.02
## YearsAtCompany                             0.00  -0.03            0.00
## YearsInCurrentRole                         0.02  -0.04            0.00
## YearsSinceLastPromotion                    0.02  -0.03           -0.02
## YearsWithCurrManager                       0.00  -0.03           -0.03
##                         MonthlyIncome MonthlyRate NumCompaniesWorked OverTime
## Age                              0.50        0.03               0.30     0.03
## DailyRate                        0.01       -0.03               0.04     0.01
## DistanceFromHome                -0.02        0.03              -0.03     0.03
## Education                        0.09       -0.03               0.13    -0.02
## EnvironmentSatisfaction         -0.01        0.04               0.01     0.07
## Gender                          -0.03       -0.04              -0.04    -0.04
## JobSatisfaction                 -0.01        0.00              -0.06     0.02
## MonthlyIncome                    1.00        0.03               0.15     0.01
## MonthlyRate                      0.03        1.00               0.02     0.02
## NumCompaniesWorked               0.15        0.02               1.00    -0.02
## OverTime                         0.01        0.02              -0.02     1.00
## PercentSalaryHike               -0.03       -0.01              -0.01    -0.01
## TotalWorkingYears                0.77        0.03               0.24     0.01
## TrainingTimesLastYear           -0.02        0.00              -0.07    -0.08
## WorkLifeBalance                  0.03        0.01              -0.01    -0.03
## YearsAtCompany                   0.51       -0.02              -0.12    -0.01
## YearsInCurrentRole               0.36       -0.01              -0.09    -0.03
## YearsSinceLastPromotion          0.34        0.00              -0.04    -0.01
## YearsWithCurrManager             0.34       -0.04              -0.11    -0.04
##                         PercentSalaryHike TotalWorkingYears
## Age                                  0.00              0.68
## DailyRate                            0.02              0.01
## DistanceFromHome                     0.04              0.00
## Education                           -0.01              0.15
## EnvironmentSatisfaction             -0.03              0.00
## Gender                               0.00             -0.05
## JobSatisfaction                      0.02             -0.02
## MonthlyIncome                       -0.03              0.77
## MonthlyRate                         -0.01              0.03
## NumCompaniesWorked                  -0.01              0.24
## OverTime                            -0.01              0.01
## PercentSalaryHike                    1.00             -0.02
## TotalWorkingYears                   -0.02              1.00
## TrainingTimesLastYear               -0.01             -0.04
## WorkLifeBalance                      0.00              0.00
## YearsAtCompany                      -0.04              0.63
## YearsInCurrentRole                   0.00              0.46
## YearsSinceLastPromotion             -0.02              0.40
## YearsWithCurrManager                -0.01              0.46
##                         TrainingTimesLastYear WorkLifeBalance YearsAtCompany
## Age                                     -0.02           -0.02           0.31
## DailyRate                                0.00           -0.04          -0.03
## DistanceFromHome                        -0.04           -0.03           0.01
## Education                               -0.03            0.01           0.07
## EnvironmentSatisfaction                 -0.02            0.03           0.00
## Gender                                  -0.04            0.00          -0.03
## JobSatisfaction                         -0.01           -0.02           0.00
## MonthlyIncome                           -0.02            0.03           0.51
## MonthlyRate                              0.00            0.01          -0.02
## NumCompaniesWorked                      -0.07           -0.01          -0.12
## OverTime                                -0.08           -0.03          -0.01
## PercentSalaryHike                       -0.01            0.00          -0.04
## TotalWorkingYears                       -0.04            0.00           0.63
## TrainingTimesLastYear                    1.00            0.03           0.00
## WorkLifeBalance                          0.03            1.00           0.01
## YearsAtCompany                           0.00            0.01           1.00
## YearsInCurrentRole                      -0.01            0.05           0.76
## YearsSinceLastPromotion                  0.00            0.01           0.62
## YearsWithCurrManager                     0.00            0.00           0.77
##                         YearsInCurrentRole YearsSinceLastPromotion
## Age                                   0.21                    0.22
## DailyRate                             0.01                   -0.03
## DistanceFromHome                      0.02                    0.01
## Education                             0.06                    0.05
## EnvironmentSatisfaction               0.02                    0.02
## Gender                               -0.04                   -0.03
## JobSatisfaction                       0.00                   -0.02
## MonthlyIncome                         0.36                    0.34
## MonthlyRate                          -0.01                    0.00
## NumCompaniesWorked                   -0.09                   -0.04
## OverTime                             -0.03                   -0.01
## PercentSalaryHike                     0.00                   -0.02
## TotalWorkingYears                     0.46                    0.40
## TrainingTimesLastYear                -0.01                    0.00
## WorkLifeBalance                       0.05                    0.01
## YearsAtCompany                        0.76                    0.62
## YearsInCurrentRole                    1.00                    0.55
## YearsSinceLastPromotion               0.55                    1.00
## YearsWithCurrManager                  0.71                    0.51
##                         YearsWithCurrManager
## Age                                     0.20
## DailyRate                              -0.03
## DistanceFromHome                        0.01
## Education                               0.07
## EnvironmentSatisfaction                 0.00
## Gender                                 -0.03
## JobSatisfaction                        -0.03
## MonthlyIncome                           0.34
## MonthlyRate                            -0.04
## NumCompaniesWorked                     -0.11
## OverTime                               -0.04
## PercentSalaryHike                      -0.01
## TotalWorkingYears                       0.46
## TrainingTimesLastYear                   0.00
## WorkLifeBalance                         0.00
## YearsAtCompany                          0.77
## YearsInCurrentRole                      0.71
## YearsSinceLastPromotion                 0.51
## YearsWithCurrManager                    1.00

Najsilniejszą korelację dodatnią możemy zaobserwować pomiędzy Rezygnacjami, a:

Nawiązując do wcześniej wykreślonych wykresów pt.”Odejścia wg nadgodzin” i “Odległość od miejsca zamieszkania” możemy zaobserwować, że więcej jest odejść u osób, które pracują w nadliczbowym wymiarze godzin, a także u tych, które mieszkają w odległości większej niż 10 mil od miejsca pracy.

Powstałe hipotezy badawcze:

  1. Nie ma znaczącej różnicy pomiędzy rezygnacjami osób, które pracują i nie pracują w godzinach nadliczbowych
  2. Nie ma znaczącej różnicy pomiędzy rezygnacjami osób, które pracują bliżej, lub dalej od swojego miejsca zamieszkania
ggpiestats(
  data=full_data,
  x=Attrition,
  y=OverTime,
  palette = "Accent"
) + ggtitle("Wpływ nadliczbowych godzin na rezygnacje pracowników")

Pomimo niskiego współczynnika V Cramera wynoszącego 0.24, co świadczy o słabym związku między badanymi cechami można powedzieć, że zmienna pokazująca ilość godzin nadliczbowych (OverTime) ma statystycznie isotne znaczenie dla rezygnacji ze względu na p-value bliskie zeru.

Do kolejnego testu został najpierw sporządzony histogram, aby sprawdzić rozkład normalny badanej zmiennej tj. Odległość od miejsca zamieszkania (Distance from home).

Ze względu na fakt, że zmienna ma rozkład asymetryczny, prawostronny, dodatni zostaje wybrany “nie parametryczny” typ testu.

ggbetweenstats(data = full_data, x = Attrition, y=DistanceFromHome, palette="Accent", type = "nonparametric") + ggtitle("Odległość od miejsca zamieszkania, a rezygnacje")

Ponieważ wartości p-values są bardzo niskie, a przedziały ufności nie zawierają zera, możemy odrzucić powyższe hipotezy z wysoką pewnością i stwierdzić, że istnieje statystycznie istotna różnica w rezygnacjach dla każdej ze zmiennych.

Pracownicy pracujący w godzinach nadliczbowych i osoby dojeżdżające do pracy są bardziej narażeni na ryzyko odejścia z pracy.

W celu odpowiedzi na 3. pytanie badawcze zadane na początku pracy został przeprowadzony jeszcze jeden test.

  1. Czy istnieją grupy zawodowe, które statystycznie są bardziej zagrożone ryzykiem odejścia pracowników niż inne?
ggbarstats(data=full_data, x = JobRole, y=Attrition, palette="Accent")
## Warning: Number of labels is greater than default palette color count.
##  Try using another color `palette` (and/or `package`).
## 

Odpowiedź: Tak istnieją grupy zawodowe, które są narażone na odejścia bardziej niż inne, ze względu na p-value bliskie zeru.


Model


Model statystyczny, który będzie użyty jest modelem logitowym ponieważ zmienna Attrition jest binarna.

Budowanie modelu zostaje rozpoczęte od podziału próbki danych na dwa zbiory - testowy i treningowy. Sam model powstanie w oparciu o dane treningowe, następnie jego dokładność będzie sprawdzona przy pomocy zbioru testowego.

set.seed(1000)
ranuni = sample(x=c("Training","Testing"), size=nrow(hr), replace=T, 
                prob=c(0.7,0.3))
DaneTreningowe = hr[ranuni=="Training",]
DaneTestowe = hr[ranuni=="Testing",]
nrow(DaneTreningowe)
## [1] 1025
nrow(DaneTestowe)
## [1] 445

Dokonany podział pozwolił na utworzenie zbioru treningowego zawierającego 70%, czyli 1025 obserwacji oraz zbioru testowego zawierającego 30%, czyli 445 obserwacji.

Kolejnym krokiem jest utworzenie pełnego modelu zawierającego wszystkie zmienne ze zbioru treningowego. Zmienne najbardziej istotne dla rezygnacji pracowników są odpowiednio oznaczone trzema, dwoma lub jedną gwiazdką.

#pełny model, co jest istotne statycznie, a co nie 
model_pelny <- glm(Attrition ~ ., family = "binomial", data = DaneTreningowe)
options(scipen = 999)
summary(model_pelny)
## 
## Call:
## glm(formula = Attrition ~ ., family = "binomial", data = DaneTreningowe)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.7990  -0.4222  -0.1638  -0.0281   3.4438  
## 
## Coefficients:
##                                        Estimate     Std. Error z value
## (Intercept)                        -8.296410287 1907.825802987  -0.004
## Age                                -0.048375168    0.044591341  -1.085
## BusinessTravelTravel_Frequently     2.727642375    0.617336588   4.418
## BusinessTravelTravel_Rarely         1.321679489    0.576068577   2.294
## DailyRate                          -0.000042536    0.000294588  -0.144
## DepartmentResearch & Development   15.522464568 1907.824456951   0.008
## DepartmentSales                    15.147350489 1907.824423048   0.008
## DistanceFromHome                    0.055082298    0.014690333   3.750
## Education                           0.013165729    0.117422021   0.112
## EducationFieldLife Sciences        -1.060554664    1.129453042  -0.939
## EducationFieldMarketing             0.192525402    1.193516320   0.161
## EducationFieldMedical              -1.118730447    1.129529827  -0.990
## EducationFieldOther                -0.976379465    1.242992844  -0.786
## EducationFieldTechnical Degree      0.087784750    1.155877040   0.076
## EnvironmentSatisfaction            -0.476403009    0.116088592  -4.104
## Gender                              0.566340769    0.250719545   2.259
## HourlyRate                          0.007096374    0.005968464   1.189
## JobInvolvement2                    -2.121524854    0.490421090  -4.326
## JobInvolvement3                    -2.146670103    0.459926300  -4.667
## JobInvolvement4                    -3.125421020    0.646281993  -4.836
## JobLevel2                          -1.321935806    0.609418753  -2.169
## JobLevel3                           1.465585976    0.957066484   1.531
## JobLevel4                           0.114100414    1.654856699   0.069
## JobLevel5                           1.163673941    2.266012639   0.514
## JobRoleHuman Resources             16.021839657 1907.824678306   0.008
## JobRoleLaboratory Technician        0.568150464    0.787212271   0.722
## JobRoleManager                      1.450091382    1.207630846   1.201
## JobRoleManufacturing Director       0.814796489    0.701190146   1.162
## JobRoleResearch Director          -16.669325517  616.799157330  -0.027
## JobRoleResearch Scientist          -0.374014845    0.805335739  -0.464
## JobRoleSales Executive              1.727132635    1.494339962   1.156
## JobRoleSales Representative         0.820338895    1.590819163   0.516
## JobSatisfaction                    -0.357732072    0.109153032  -3.277
## MaritalStatusMarried                0.372484168    0.374649827   0.994
## MaritalStatusSingle                 0.580175790    0.523899945   1.107
## MonthlyIncome                      -0.000301166    0.000124725  -2.415
## MonthlyRate                         0.000005225    0.000016518   0.316
## NumCompaniesWorked                  0.252915158    0.055081465   4.592
## OverTime                            2.100002878    0.263263364   7.977
## PercentSalaryHike                  -0.054277761    0.052215528  -1.039
## PerformanceRating4                  0.144276762    0.543877233   0.265
## RelationshipSatisfaction2          -1.200015709    0.381640548  -3.144
## RelationshipSatisfaction3          -1.521080628    0.340357113  -4.469
## RelationshipSatisfaction4          -1.368788521    0.336098553  -4.073
## StockOptionLevel1                  -1.180701002    0.403993002  -2.923
## StockOptionLevel2                  -1.494962708    0.563331679  -2.654
## StockOptionLevel3                  -0.529709448    0.612249316  -0.865
## TotalWorkingYears                  -0.112050732    0.041238925  -2.717
## TrainingTimesLastYear              -0.242621487    0.098121384  -2.473
## WorkLifeBalance                    -0.367712093    0.168325323  -2.185
## YearsAtCompany                      0.230400229    0.064305941   3.583
## YearsInCurrentRole                 -0.234830687    0.069367359  -3.385
## YearsSinceLastPromotion             0.131387837    0.057374379   2.290
## YearsWithCurrManager               -0.162885256    0.067554103  -2.411
## age_group21-30                     -1.105436636    1.205382432  -0.917
## age_group31-40                     -1.180189960    1.346808170  -0.876
## age_group41-50                     -1.031963266    1.619573402  -0.637
## age_group51-60                      0.271986566    1.972916644   0.138
##                                            Pr(>|z|)    
## (Intercept)                                0.996530    
## Age                                        0.277986    
## BusinessTravelTravel_Frequently  0.0000099432484991 ***
## BusinessTravelTravel_Rarely                0.021773 *  
## DailyRate                                  0.885191    
## DepartmentResearch & Development           0.993508    
## DepartmentSales                            0.993665    
## DistanceFromHome                           0.000177 ***
## Education                                  0.910726    
## EducationFieldLife Sciences                0.347732    
## EducationFieldMarketing                    0.871850    
## EducationFieldMedical                      0.321960    
## EducationFieldOther                        0.432156    
## EducationFieldTechnical Degree             0.939462    
## EnvironmentSatisfaction          0.0000406439350228 ***
## Gender                                     0.023892 *  
## HourlyRate                                 0.234448    
## JobInvolvement2                  0.0000151893098800 ***
## JobInvolvement3                  0.0000030500256293 ***
## JobInvolvement4                  0.0000013247657768 ***
## JobLevel2                                  0.030069 *  
## JobLevel3                                  0.125688    
## JobLevel4                                  0.945030    
## JobLevel5                                  0.607578    
## JobRoleHuman Resources                     0.993299    
## JobRoleLaboratory Technician               0.470464    
## JobRoleManager                             0.229839    
## JobRoleManufacturing Director              0.245228    
## JobRoleResearch Director                   0.978439    
## JobRoleResearch Scientist                  0.642346    
## JobRoleSales Executive                     0.247770    
## JobRoleSales Representative                0.606084    
## JobSatisfaction                            0.001048 ** 
## MaritalStatusMarried                       0.320116    
## MaritalStatusSingle                        0.268114    
## MonthlyIncome                              0.015751 *  
## MonthlyRate                                0.751747    
## NumCompaniesWorked               0.0000043974197194 ***
## OverTime                         0.0000000000000015 ***
## PercentSalaryHike                          0.298575    
## PerformanceRating4                         0.790798    
## RelationshipSatisfaction2                  0.001664 ** 
## RelationshipSatisfaction3        0.0000078559486329 ***
## RelationshipSatisfaction4        0.0000464950586343 ***
## StockOptionLevel1                          0.003471 ** 
## StockOptionLevel2                          0.007959 ** 
## StockOptionLevel3                          0.386937    
## TotalWorkingYears                          0.006585 ** 
## TrainingTimesLastYear                      0.013411 *  
## WorkLifeBalance                            0.028923 *  
## YearsAtCompany                             0.000340 ***
## YearsInCurrentRole                         0.000711 ***
## YearsSinceLastPromotion                    0.022021 *  
## YearsWithCurrManager                       0.015901 *  
## age_group21-30                             0.359099    
## age_group31-40                             0.380874    
## age_group41-50                             0.524006    
## age_group51-60                             0.890351    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 891.31  on 1024  degrees of freedom
## Residual deviance: 502.84  on  967  degrees of freedom
## AIC: 618.84
## 
## Number of Fisher Scoring iterations: 17

Następnym krokiem jest utworzenie modelu pustego.

#Model pusty
model_pusty <- glm(Attrition ~ 1, family = "binomial", data = DaneTreningowe)
summary(model_pusty)
## 
## Call:
## glm(formula = Attrition ~ 1, family = "binomial", data = DaneTreningowe)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.5846  -0.5846  -0.5846  -0.5846   1.9241  
## 
## Coefficients:
##             Estimate Std. Error z value            Pr(>|z|)    
## (Intercept) -1.68017    0.08584  -19.57 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 891.31  on 1024  degrees of freedom
## Residual deviance: 891.31  on 1024  degrees of freedom
## AIC: 893.31
## 
## Number of Fisher Scoring iterations: 3

W ostatnim etapie utworzony zostaje “model najlepszy”, który w celu selekcji istotnych statystycznie zmiennych czynników kształtujących rezygnacje pracowników stosuje metodę regresji krokowej w obu kierunkach.

Ta metoda pozwala ignorować współczynnik inflacji wariancji VIF, którego wartość poniżej 4 oznacza brak współliniowości predyktorów, do 10 możliwie występowanie współliniowości, a powyżej 10 należy założyć ich silną współliniowość. W takim przypadku dokonuje się korekty analizowanego modelu, np. poprzez usunięcie jednego z predyktorów z wysokim VIF bądź zastosowanie regresji krokowej.

vif(model_pelny)
##                                       GVIF Df GVIF^(1/(2*Df))
## Age                              12.453642  1        3.528972
## BusinessTravel                    1.418164  2        1.091269
## DailyRate                         1.146695  1        1.070838
## Department                424029835.654062  2      143.499076
## DistanceFromHome                  1.192022  1        1.091798
## Education                         1.218051  1        1.103654
## EducationField                    4.232573  5        1.155209
## EnvironmentSatisfaction           1.201195  1        1.095990
## Gender                            1.121152  1        1.058845
## HourlyRate                        1.117451  1        1.057095
## JobInvolvement                    1.528533  3        1.073279
## JobLevel                         89.573074  4        1.753970
## JobRole                  7260472225.418738  8        4.133427
## JobSatisfaction                   1.128849  1        1.062473
## MaritalStatus                     3.335819  2        1.351452
## MonthlyIncome                    14.356541  1        3.789003
## MonthlyRate                       1.118571  1        1.057625
## NumCompaniesWorked                1.525405  1        1.235073
## OverTime                          1.310240  1        1.144657
## PercentSalaryHike                 2.448428  1        1.564745
## PerformanceRating                 2.413287  1        1.553476
## RelationshipSatisfaction          1.570348  3        1.078117
## StockOptionLevel                  3.506559  3        1.232576
## TotalWorkingYears                 5.519458  1        2.349353
## TrainingTimesLastYear             1.114429  1        1.055665
## WorkLifeBalance                   1.136626  1        1.066127
## YearsAtCompany                   10.201678  1        3.194007
## YearsInCurrentRole                3.196341  1        1.787831
## YearsSinceLastPromotion           2.230490  1        1.493482
## YearsWithCurrManager              3.625819  1        1.904158
## age_group                        18.748383  4        1.442515

Metoda działania regresji krokowej, polega na włączaniu lub usuwaniu zmiennej z modelu w oparciu o wartość AIC, krok po kroku. Im niższy wskaźnik, tym model regresji logistycznej prowadzi do lepszego dopasowania.

model_najlepszy <- step(model_pusty, scope=list(lower=model_pusty, upper = model_pelny), direction = "both")
## Start:  AIC=893.31
## Attrition ~ 1
## 
##                            Df Deviance    AIC
## + JobRole                   8   827.38 845.38
## + OverTime                  1   841.67 845.67
## + TotalWorkingYears         1   845.79 849.79
## + JobLevel                  4   840.93 850.93
## + StockOptionLevel          3   849.11 857.11
## + MonthlyIncome             1   856.75 860.75
## + YearsInCurrentRole        1   859.38 863.38
## + Age                       1   862.33 866.33
## + YearsWithCurrManager      1   866.00 870.00
## + MaritalStatus             2   865.70 871.70
## + age_group                 4   861.85 871.85
## + BusinessTravel            2   866.60 872.60
## + YearsAtCompany            1   869.35 873.35
## + JobInvolvement            3   873.42 881.42
## + EnvironmentSatisfaction   1   877.68 881.68
## + TrainingTimesLastYear     1   883.18 887.18
## + Department                2   881.48 887.48
## + EducationField            5   876.11 888.11
## + RelationshipSatisfaction  3   881.01 889.01
## + JobSatisfaction           1   885.18 889.18
## + DistanceFromHome          1   886.60 890.60
## + WorkLifeBalance           1   886.71 890.71
## + Education                 1   888.46 892.46
## + PercentSalaryHike         1   888.65 892.65
## <none>                          891.31 893.31
## + YearsSinceLastPromotion   1   889.42 893.42
## + NumCompaniesWorked        1   889.79 893.79
## + PerformanceRating         1   890.73 894.73
## + DailyRate                 1   891.13 895.13
## + HourlyRate                1   891.16 895.16
## + MonthlyRate               1   891.20 895.20
## + Gender                    1   891.21 895.21
## 
## Step:  AIC=845.38
## Attrition ~ JobRole
## 
##                            Df Deviance    AIC
## + OverTime                  1   771.61 791.61
## + StockOptionLevel          3   787.35 811.35
## + BusinessTravel            2   803.63 825.63
## + MaritalStatus             2   806.17 828.17
## + JobLevel                  4   802.41 828.41
## + YearsInCurrentRole        1   812.24 832.24
## + JobInvolvement            3   809.26 833.26
## + EnvironmentSatisfaction   1   813.94 833.94
## + YearsWithCurrManager      1   816.69 836.69
## + TotalWorkingYears         1   817.69 837.69
## + TrainingTimesLastYear     1   818.36 838.36
## + Age                       1   819.68 839.68
## + JobSatisfaction           1   821.00 841.00
## + age_group                 4   815.23 841.23
## + WorkLifeBalance           1   822.12 842.12
## + YearsAtCompany            1   822.25 842.25
## + DistanceFromHome          1   822.30 842.30
## + NumCompaniesWorked        1   822.49 842.49
## + RelationshipSatisfaction  3   819.22 843.22
## + PercentSalaryHike         1   824.75 844.75
## <none>                          827.38 845.38
## + Education                 1   826.22 846.22
## + MonthlyIncome             1   826.60 846.60
## + EducationField            5   818.72 846.72
## + PerformanceRating         1   826.81 846.81
## + DailyRate                 1   827.09 847.09
## + MonthlyRate               1   827.15 847.15
## + YearsSinceLastPromotion   1   827.26 847.26
## + Gender                    1   827.32 847.32
## + HourlyRate                1   827.34 847.34
## + Department                2   826.49 848.49
## - JobRole                   8   891.31 893.31
## 
## Step:  AIC=791.61
## Attrition ~ JobRole + OverTime
## 
##                            Df Deviance    AIC
## + StockOptionLevel          3   731.28 757.28
## + MaritalStatus             2   745.65 769.65
## + JobLevel                  4   744.73 772.73
## + BusinessTravel            2   749.82 773.82
## + EnvironmentSatisfaction   1   753.33 775.33
## + YearsInCurrentRole        1   756.97 778.97
## + JobInvolvement            3   753.91 779.91
## + TotalWorkingYears         1   760.10 782.10
## + Age                       1   761.25 783.25
## + YearsWithCurrManager      1   762.56 784.56
## + age_group                 4   756.56 784.56
## + TrainingTimesLastYear     1   763.96 785.96
## + RelationshipSatisfaction  3   759.97 785.97
## + JobSatisfaction           1   764.07 786.07
## + DistanceFromHome          1   766.32 788.32
## + NumCompaniesWorked        1   766.47 788.47
## + YearsAtCompany            1   767.01 789.01
## + WorkLifeBalance           1   767.09 789.09
## + PercentSalaryHike         1   768.91 790.91
## <none>                          771.61 791.61
## + DailyRate                 1   770.14 792.14
## + MonthlyIncome             1   770.27 792.27
## + Education                 1   770.60 792.60
## + PerformanceRating         1   770.89 792.89
## + Gender                    1   770.98 792.98
## + YearsSinceLastPromotion   1   771.47 793.47
## + MonthlyRate               1   771.51 793.51
## + HourlyRate                1   771.54 793.54
## + EducationField            5   763.62 793.62
## + Department                2   770.78 794.78
## - OverTime                  1   827.38 845.38
## - JobRole                   8   841.67 845.67
## 
## Step:  AIC=757.28
## Attrition ~ JobRole + OverTime + StockOptionLevel
## 
##                            Df Deviance    AIC
## + JobLevel                  4   706.03 740.03
## + BusinessTravel            2   711.30 741.30
## + EnvironmentSatisfaction   1   713.74 741.74
## + JobInvolvement            3   713.11 745.11
## + YearsInCurrentRole        1   718.78 746.78
## + RelationshipSatisfaction  3   718.05 750.05
## + TotalWorkingYears         1   722.17 750.17
## + TrainingTimesLastYear     1   723.11 751.11
## + Age                       1   723.41 751.41
## + YearsWithCurrManager      1   723.57 751.57
## + JobSatisfaction           1   723.87 751.87
## + DistanceFromHome          1   723.96 751.96
## + age_group                 4   718.92 752.92
## + NumCompaniesWorked        1   725.25 753.25
## + WorkLifeBalance           1   726.62 754.62
## + EducationField            5   718.96 754.96
## + YearsAtCompany            1   727.75 755.75
## <none>                          731.28 757.28
## + PercentSalaryHike         1   729.39 757.39
## + DailyRate                 1   729.57 757.57
## + MonthlyIncome             1   730.41 758.41
## + Gender                    1   730.72 758.72
## + PerformanceRating         1   730.78 758.78
## + Education                 1   730.80 758.80
## + YearsSinceLastPromotion   1   730.88 758.88
## + HourlyRate                1   731.27 759.27
## + MonthlyRate               1   731.28 759.28
## + Department                2   730.42 760.42
## + MaritalStatus             2   730.61 760.61
## - StockOptionLevel          3   771.61 791.61
## - JobRole                   8   800.05 810.05
## - OverTime                  1   787.35 811.35
## 
## Step:  AIC=740.03
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel
## 
##                            Df Deviance    AIC
## + BusinessTravel            2   683.92 721.92
## + EnvironmentSatisfaction   1   686.70 722.70
## + JobInvolvement            3   684.90 724.90
## + RelationshipSatisfaction  3   690.42 730.42
## + YearsInCurrentRole        1   694.72 730.72
## + NumCompaniesWorked        1   697.13 733.13
## + TrainingTimesLastYear     1   697.24 733.24
## + DistanceFromHome          1   697.62 733.62
## + TotalWorkingYears         1   697.77 733.77
## + YearsWithCurrManager      1   698.78 734.78
## + JobSatisfaction           1   698.93 734.93
## + Age                       1   700.52 736.52
## + MonthlyIncome             1   700.93 736.93
## + WorkLifeBalance           1   700.93 736.93
## + EducationField            5   694.72 738.72
## + age_group                 4   696.94 738.94
## + YearsAtCompany            1   703.31 739.31
## <none>                          706.03 740.03
## + DailyRate                 1   704.30 740.30
## + PercentSalaryHike         1   704.39 740.39
## + PerformanceRating         1   705.66 741.66
## + Gender                    1   705.71 741.71
## + YearsSinceLastPromotion   1   705.82 741.82
## + Education                 1   705.82 741.82
## + MonthlyRate               1   705.82 741.82
## + HourlyRate                1   706.02 742.02
## + MaritalStatus             2   704.94 742.94
## + Department                2   705.34 743.34
## - JobLevel                  4   731.28 757.28
## - JobRole                   8   752.11 770.11
## - StockOptionLevel          3   744.73 772.73
## - OverTime                  1   763.99 795.99
## 
## Step:  AIC=721.92
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel
## 
##                            Df Deviance    AIC
## + JobInvolvement            3   660.41 704.41
## + EnvironmentSatisfaction   1   664.94 704.94
## + YearsInCurrentRole        1   671.05 711.05
## + RelationshipSatisfaction  3   668.83 712.83
## + TotalWorkingYears         1   673.94 713.94
## + TrainingTimesLastYear     1   674.53 714.53
## + NumCompaniesWorked        1   674.75 714.75
## + DistanceFromHome          1   675.32 715.32
## + YearsWithCurrManager      1   675.39 715.39
## + JobSatisfaction           1   675.57 715.57
## + Age                       1   677.22 717.22
## + WorkLifeBalance           1   677.66 717.66
## + MonthlyIncome             1   678.45 718.45
## + age_group                 4   672.69 718.69
## + EducationField            5   671.97 719.97
## + YearsAtCompany            1   680.53 720.53
## <none>                          683.92 721.92
## + PercentSalaryHike         1   682.75 722.75
## + DailyRate                 1   682.87 722.87
## + Gender                    1   683.43 723.43
## + PerformanceRating         1   683.62 723.62
## + Education                 1   683.67 723.67
## + YearsSinceLastPromotion   1   683.78 723.78
## + MonthlyRate               1   683.79 723.79
## + HourlyRate                1   683.91 723.91
## + MaritalStatus             2   682.94 724.94
## + Department                2   683.33 725.33
## - BusinessTravel            2   706.03 740.03
## - JobLevel                  4   711.30 741.30
## - StockOptionLevel          3   721.06 753.06
## - JobRole                   8   732.02 754.02
## - OverTime                  1   739.09 775.09
## 
## Step:  AIC=704.41
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement
## 
##                            Df Deviance    AIC
## + EnvironmentSatisfaction   1   642.42 688.42
## + YearsInCurrentRole        1   647.61 693.61
## + RelationshipSatisfaction  3   645.20 695.20
## + JobSatisfaction           1   649.26 695.26
## + DistanceFromHome          1   649.97 695.97
## + TotalWorkingYears         1   650.68 696.68
## + NumCompaniesWorked        1   650.95 696.95
## + TrainingTimesLastYear     1   650.97 696.97
## + YearsWithCurrManager      1   652.99 698.99
## + MonthlyIncome             1   653.32 699.32
## + Age                       1   654.27 700.27
## + age_group                 4   649.01 701.01
## + WorkLifeBalance           1   655.04 701.04
## + EducationField            5   647.64 701.64
## + YearsAtCompany            1   657.40 703.40
## <none>                          660.41 704.41
## + PercentSalaryHike         1   659.10 705.10
## + DailyRate                 1   659.35 705.35
## + Gender                    1   659.77 705.77
## + PerformanceRating         1   659.93 705.93
## + Education                 1   660.16 706.16
## + HourlyRate                1   660.17 706.17
## + MonthlyRate               1   660.32 706.32
## + YearsSinceLastPromotion   1   660.37 706.37
## + MaritalStatus             2   658.88 706.88
## + Department                2   660.02 708.02
## - JobInvolvement            3   683.92 721.92
## - BusinessTravel            2   684.90 724.90
## - JobLevel                  4   690.59 726.59
## - JobRole                   8   706.78 734.78
## - StockOptionLevel          3   697.92 735.92
## - OverTime                  1   715.54 757.54
## 
## Step:  AIC=688.42
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction
## 
##                            Df Deviance    AIC
## + DistanceFromHome          1   630.88 678.88
## + JobSatisfaction           1   631.14 679.14
## + TotalWorkingYears         1   631.28 679.28
## + YearsInCurrentRole        1   631.29 679.29
## + RelationshipSatisfaction  3   628.37 680.37
## + MonthlyIncome             1   633.15 681.15
## + TrainingTimesLastYear     1   633.75 681.75
## + NumCompaniesWorked        1   635.17 683.17
## + Age                       1   635.22 683.22
## + YearsWithCurrManager      1   635.34 683.34
## + age_group                 4   629.75 683.75
## + EducationField            5   629.98 685.98
## + WorkLifeBalance           1   638.01 686.01
## + YearsAtCompany            1   639.92 687.92
## <none>                          642.42 688.42
## + PercentSalaryHike         1   640.86 688.86
## + Gender                    1   641.46 689.46
## + DailyRate                 1   641.55 689.55
## + PerformanceRating         1   641.76 689.76
## + Education                 1   641.96 689.96
## + MonthlyRate               1   642.20 690.20
## + HourlyRate                1   642.27 690.27
## + YearsSinceLastPromotion   1   642.29 690.29
## + MaritalStatus             2   641.29 691.29
## + Department                2   642.08 692.08
## - EnvironmentSatisfaction   1   660.41 704.41
## - JobInvolvement            3   664.94 704.94
## - BusinessTravel            2   666.26 708.26
## - JobLevel                  4   674.62 712.62
## - StockOptionLevel          3   680.07 720.07
## - JobRole                   8   691.40 721.40
## - OverTime                  1   702.82 746.82
## 
## Step:  AIC=678.88
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome
## 
##                            Df Deviance    AIC
## + RelationshipSatisfaction  3   615.84 669.84
## + JobSatisfaction           1   620.30 670.30
## + TotalWorkingYears         1   620.72 670.72
## + YearsInCurrentRole        1   620.89 670.89
## + NumCompaniesWorked        1   621.95 671.95
## + MonthlyIncome             1   622.05 672.05
## + TrainingTimesLastYear     1   622.80 672.80
## + age_group                 4   618.58 674.58
## + YearsWithCurrManager      1   624.62 674.62
## + Age                       1   625.07 675.07
## + EducationField            5   617.79 675.79
## + WorkLifeBalance           1   625.98 675.98
## + YearsAtCompany            1   628.76 678.76
## <none>                          630.88 678.88
## + PercentSalaryHike         1   629.20 679.20
## + Gender                    1   629.67 679.67
## + DailyRate                 1   630.12 680.12
## + PerformanceRating         1   630.18 680.18
## + Education                 1   630.49 680.49
## + YearsSinceLastPromotion   1   630.69 680.69
## + HourlyRate                1   630.69 680.69
## + MonthlyRate               1   630.71 680.71
## + MaritalStatus             2   630.12 682.12
## + Department                2   630.56 682.56
## - DistanceFromHome          1   642.42 688.42
## - EnvironmentSatisfaction   1   649.97 695.97
## - JobInvolvement            3   655.40 697.40
## - BusinessTravel            2   655.73 699.73
## - JobLevel                  4   665.56 705.56
## - StockOptionLevel          3   670.57 712.57
## - JobRole                   8   681.73 713.73
## - OverTime                  1   692.45 738.45
## 
## Step:  AIC=669.84
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction
## 
##                            Df Deviance    AIC
## + JobSatisfaction           1   604.38 660.38
## + NumCompaniesWorked        1   604.59 660.59
## + YearsInCurrentRole        1   604.72 660.72
## + TotalWorkingYears         1   605.78 661.78
## + MonthlyIncome             1   607.69 663.69
## + TrainingTimesLastYear     1   608.05 664.05
## + YearsWithCurrManager      1   609.19 665.19
## + EducationField            5   601.33 665.33
## + age_group                 4   603.34 665.34
## + WorkLifeBalance           1   610.67 666.67
## + Age                       1   610.87 666.87
## + PercentSalaryHike         1   613.60 669.60
## + YearsAtCompany            1   613.64 669.64
## <none>                          615.84 669.84
## + Gender                    1   613.87 669.87
## + PerformanceRating         1   615.02 671.02
## + DailyRate                 1   615.33 671.33
## + HourlyRate                1   615.50 671.50
## + MonthlyRate               1   615.53 671.53
## + Education                 1   615.60 671.60
## + YearsSinceLastPromotion   1   615.67 671.67
## + MaritalStatus             2   614.98 672.98
## + Department                2   615.52 673.52
## - RelationshipSatisfaction  3   630.88 678.88
## - DistanceFromHome          1   628.37 680.37
## - EnvironmentSatisfaction   1   633.62 685.62
## - JobInvolvement            3   640.02 688.02
## - BusinessTravel            2   640.10 690.10
## - JobLevel                  4   654.48 700.48
## - StockOptionLevel          3   655.40 703.40
## - JobRole                   8   666.92 704.92
## - OverTime                  1   682.42 734.42
## 
## Step:  AIC=660.38
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction
## 
##                            Df Deviance    AIC
## + YearsInCurrentRole        1   592.34 650.34
## + NumCompaniesWorked        1   592.84 650.84
## + TotalWorkingYears         1   593.70 651.70
## + MonthlyIncome             1   596.21 654.21
## + YearsWithCurrManager      1   597.19 655.19
## + TrainingTimesLastYear     1   597.24 655.24
## + age_group                 4   591.57 655.57
## + WorkLifeBalance           1   598.88 656.88
## + EducationField            5   591.53 657.53
## + Age                       1   599.78 657.78
## + PercentSalaryHike         1   601.73 659.73
## + YearsAtCompany            1   601.76 659.76
## + Gender                    1   602.27 660.27
## <none>                          604.38 660.38
## + PerformanceRating         1   603.08 661.08
## + MonthlyRate               1   604.04 662.04
## + Education                 1   604.08 662.08
## + DailyRate                 1   604.10 662.10
## + YearsSinceLastPromotion   1   604.23 662.23
## + HourlyRate                1   604.23 662.23
## + MaritalStatus             2   603.12 663.12
## + Department                2   604.06 664.06
## - JobSatisfaction           1   615.84 669.84
## - DistanceFromHome          1   615.93 669.93
## - RelationshipSatisfaction  3   620.30 670.30
## - EnvironmentSatisfaction   1   622.38 676.38
## - JobInvolvement            3   631.21 681.21
## - BusinessTravel            2   631.54 683.54
## - JobLevel                  4   642.24 690.24
## - StockOptionLevel          3   643.51 693.51
## - JobRole                   8   655.63 695.63
## - OverTime                  1   671.67 725.67
## 
## Step:  AIC=650.34
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole
## 
##                            Df Deviance    AIC
## + TrainingTimesLastYear     1   584.42 644.42
## + NumCompaniesWorked        1   584.47 644.47
## + MonthlyIncome             1   585.92 645.92
## + TotalWorkingYears         1   587.04 647.04
## + YearsSinceLastPromotion   1   587.12 647.12
## + WorkLifeBalance           1   587.32 647.32
## + EducationField            5   579.33 647.33
## + Age                       1   588.19 648.19
## + age_group                 4   582.22 648.22
## + PercentSalaryHike         1   589.37 649.37
## + YearsAtCompany            1   589.72 649.72
## + Gender                    1   589.96 649.96
## <none>                          592.34 650.34
## + PerformanceRating         1   591.15 651.15
## + DailyRate                 1   592.04 652.04
## + HourlyRate                1   592.14 652.14
## + MonthlyRate               1   592.17 652.17
## + YearsWithCurrManager      1   592.22 652.22
## + Education                 1   592.24 652.24
## + MaritalStatus             2   591.13 653.13
## + Department                2   591.93 653.93
## - DistanceFromHome          1   602.77 658.77
## - YearsInCurrentRole        1   604.38 660.38
## - JobSatisfaction           1   604.72 660.72
## - RelationshipSatisfaction  3   609.38 661.38
## - EnvironmentSatisfaction   1   608.37 664.37
## - JobInvolvement            3   618.18 670.18
## - BusinessTravel            2   620.54 674.54
## - JobLevel                  4   627.22 677.22
## - StockOptionLevel          3   630.15 682.15
## - JobRole                   8   643.26 685.26
## - OverTime                  1   660.45 716.45
## 
## Step:  AIC=644.42
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear
## 
##                            Df Deviance    AIC
## + MonthlyIncome             1   577.65 639.65
## + NumCompaniesWorked        1   578.00 640.00
## + YearsSinceLastPromotion   1   578.70 640.70
## + EducationField            5   571.28 641.28
## + TotalWorkingYears         1   579.33 641.33
## + WorkLifeBalance           1   579.47 641.47
## + age_group                 4   574.58 642.58
## + Age                       1   580.72 642.72
## + YearsAtCompany            1   581.14 643.14
## + PercentSalaryHike         1   581.50 643.50
## <none>                          584.42 644.42
## + Gender                    1   582.44 644.44
## + PerformanceRating         1   583.29 645.29
## + DailyRate                 1   584.18 646.18
## + HourlyRate                1   584.20 646.20
## + MonthlyRate               1   584.28 646.28
## + YearsWithCurrManager      1   584.35 646.35
## + Education                 1   584.39 646.39
## + MaritalStatus             2   583.28 647.28
## + Department                2   584.03 648.03
## - TrainingTimesLastYear     1   592.34 650.34
## - DistanceFromHome          1   594.19 652.19
## - JobSatisfaction           1   596.14 654.14
## - RelationshipSatisfaction  3   601.13 655.13
## - YearsInCurrentRole        1   597.24 655.24
## - EnvironmentSatisfaction   1   599.53 657.53
## - JobInvolvement            3   609.79 663.79
## - BusinessTravel            2   613.19 669.19
## - JobLevel                  4   618.19 670.19
## - StockOptionLevel          3   621.67 675.67
## - JobRole                   8   634.90 678.90
## - OverTime                  1   651.04 709.04
## 
## Step:  AIC=639.65
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome
## 
##                            Df Deviance    AIC
## + NumCompaniesWorked        1   569.37 633.37
## + YearsSinceLastPromotion   1   571.58 635.58
## + EducationField            5   563.63 635.63
## + WorkLifeBalance           1   573.38 637.38
## + YearsAtCompany            1   574.34 638.34
## + TotalWorkingYears         1   574.59 638.59
## + Age                       1   574.74 638.74
## + PercentSalaryHike         1   574.85 638.85
## + age_group                 4   569.10 639.10
## <none>                          577.65 639.65
## + Gender                    1   575.67 639.67
## + PerformanceRating         1   576.33 640.33
## + HourlyRate                1   577.32 641.32
## + DailyRate                 1   577.44 641.44
## + YearsWithCurrManager      1   577.51 641.51
## + MonthlyRate               1   577.51 641.51
## + Education                 1   577.59 641.59
## + MaritalStatus             2   576.35 642.35
## + Department                2   577.22 643.22
## - MonthlyIncome             1   584.42 644.42
## - TrainingTimesLastYear     1   585.92 645.92
## - DistanceFromHome          1   587.51 647.51
## - YearsInCurrentRole        1   588.64 648.64
## - JobSatisfaction           1   589.33 649.33
## - RelationshipSatisfaction  3   593.42 649.42
## - EnvironmentSatisfaction   1   594.53 654.53
## - JobInvolvement            3   604.23 660.23
## - BusinessTravel            2   607.00 665.00
## - JobRole                   8   622.63 668.63
## - StockOptionLevel          3   614.82 670.82
## - JobLevel                  4   617.38 671.38
## - OverTime                  1   647.23 707.23
## 
## Step:  AIC=633.37
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked
## 
##                            Df Deviance    AIC
## + TotalWorkingYears         1   561.10 627.10
## + Age                       1   562.03 628.03
## + EducationField            5   555.22 629.22
## + YearsSinceLastPromotion   1   563.32 629.32
## + age_group                 4   558.40 630.40
## + YearsAtCompany            1   564.43 630.43
## + WorkLifeBalance           1   565.13 631.13
## + PercentSalaryHike         1   566.63 632.63
## + Gender                    1   567.16 633.16
## <none>                          569.37 633.37
## + PerformanceRating         1   568.04 634.04
## + HourlyRate                1   568.95 634.95
## + DailyRate                 1   568.99 634.99
## + MonthlyRate               1   569.09 635.09
## + Education                 1   569.21 635.21
## + YearsWithCurrManager      1   569.34 635.34
## + MaritalStatus             2   567.74 635.74
## + Department                2   568.96 636.96
## - TrainingTimesLastYear     1   575.96 637.96
## - YearsInCurrentRole        1   576.58 638.58
## - NumCompaniesWorked        1   577.65 639.65
## - MonthlyIncome             1   578.00 640.00
## - DistanceFromHome          1   581.17 643.17
## - JobSatisfaction           1   581.39 643.39
## - RelationshipSatisfaction  3   587.00 645.00
## - EnvironmentSatisfaction   1   585.03 647.03
## - JobInvolvement            3   596.20 654.20
## - BusinessTravel            2   598.63 658.63
## - JobRole                   8   614.88 662.88
## - StockOptionLevel          3   606.98 664.98
## - JobLevel                  4   613.02 669.02
## - OverTime                  1   638.72 700.72
## 
## Step:  AIC=627.1
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears
## 
##                            Df Deviance    AIC
## + YearsAtCompany            1   550.43 618.43
## + YearsSinceLastPromotion   1   553.95 621.95
## + EducationField            5   546.93 622.93
## + WorkLifeBalance           1   556.45 624.45
## + Age                       1   558.43 626.43
## + Gender                    1   558.58 626.58
## + PercentSalaryHike         1   558.58 626.58
## + age_group                 4   552.60 626.60
## <none>                          561.10 627.10
## - YearsInCurrentRole        1   563.22 627.22
## + PerformanceRating         1   559.89 627.89
## + HourlyRate                1   560.64 628.64
## + DailyRate                 1   560.87 628.87
## + MonthlyRate               1   560.93 628.93
## + YearsWithCurrManager      1   560.96 628.96
## + Education                 1   561.03 629.03
## + MaritalStatus             2   559.94 629.94
## - MonthlyIncome             1   566.62 630.62
## + Department                2   560.75 630.75
## - TrainingTimesLastYear     1   566.86 630.86
## - TotalWorkingYears         1   569.37 633.37
## - DistanceFromHome          1   573.22 637.22
## - JobSatisfaction           1   573.34 637.34
## - NumCompaniesWorked        1   574.59 638.59
## - RelationshipSatisfaction  3   579.12 639.12
## - EnvironmentSatisfaction   1   578.13 642.13
## - JobRole                   8   596.18 646.18
## - JobInvolvement            3   588.40 648.40
## - BusinessTravel            2   591.66 653.66
## - StockOptionLevel          3   597.26 657.26
## - JobLevel                  4   601.79 659.79
## - OverTime                  1   631.82 695.82
## 
## Step:  AIC=618.43
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany
## 
##                            Df Deviance    AIC
## + EducationField            5   534.35 612.35
## + WorkLifeBalance           1   546.31 616.31
## + YearsWithCurrManager      1   546.97 616.97
## + YearsSinceLastPromotion   1   547.17 617.17
## + Gender                    1   547.49 617.49
## + PercentSalaryHike         1   548.28 618.28
## + Age                       1   548.39 618.39
## <none>                          550.43 618.43
## + age_group                 4   542.76 618.76
## + PerformanceRating         1   549.44 619.44
## + HourlyRate                1   549.89 619.89
## + MonthlyRate               1   550.20 620.20
## + Education                 1   550.30 620.30
## + DailyRate                 1   550.31 620.31
## + MaritalStatus             2   549.41 621.41
## - MonthlyIncome             1   555.52 621.52
## + Department                2   549.80 621.80
## - TrainingTimesLastYear     1   556.89 622.89
## - YearsAtCompany            1   561.10 627.10
## - YearsInCurrentRole        1   561.48 627.48
## - JobSatisfaction           1   561.77 627.77
## - DistanceFromHome          1   562.66 628.66
## - TotalWorkingYears         1   564.43 630.43
## - RelationshipSatisfaction  3   569.90 631.90
## - EnvironmentSatisfaction   1   566.95 632.95
## - NumCompaniesWorked        1   569.23 635.23
## - JobRole                   8   585.19 637.19
## - JobInvolvement            3   579.54 641.54
## - BusinessTravel            2   580.79 644.79
## - StockOptionLevel          3   588.02 650.02
## - JobLevel                  4   591.39 651.39
## - OverTime                  1   620.83 686.83
## 
## Step:  AIC=612.35
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany + 
##     EducationField
## 
##                            Df Deviance    AIC
## + WorkLifeBalance           1   529.95 609.95
## + YearsWithCurrManager      1   530.54 610.54
## + Gender                    1   530.59 610.59
## + YearsSinceLastPromotion   1   530.68 610.68
## + PercentSalaryHike         1   532.06 612.06
## <none>                          534.35 612.35
## + Age                       1   532.71 612.71
## + PerformanceRating         1   533.28 613.28
## + age_group                 4   527.55 613.55
## + HourlyRate                1   533.80 613.80
## + MonthlyRate               1   533.88 613.88
## + Education                 1   533.91 613.91
## + DailyRate                 1   534.33 614.33
## + MaritalStatus             2   533.42 615.42
## + Department                2   533.92 615.92
## - MonthlyIncome             1   539.97 615.97
## - TrainingTimesLastYear     1   541.19 617.19
## - EducationField            5   550.43 618.43
## - JobRole                   8   556.97 618.97
## - JobSatisfaction           1   543.74 619.74
## - DistanceFromHome          1   546.78 622.78
## - YearsAtCompany            1   546.93 622.93
## - YearsInCurrentRole        1   546.96 622.96
## - TotalWorkingYears         1   549.06 625.06
## - EnvironmentSatisfaction   1   550.66 626.66
## - RelationshipSatisfaction  3   555.74 627.74
## - NumCompaniesWorked        1   553.90 629.90
## - JobInvolvement            3   564.28 636.28
## - BusinessTravel            2   565.23 639.23
## - JobLevel                  4   574.80 644.80
## - StockOptionLevel          3   576.23 648.23
## - OverTime                  1   604.91 680.91
## 
## Step:  AIC=609.95
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany + 
##     EducationField + WorkLifeBalance
## 
##                            Df Deviance    AIC
## + YearsWithCurrManager      1   525.76 607.76
## + Gender                    1   525.76 607.76
## + YearsSinceLastPromotion   1   526.45 608.45
## + PercentSalaryHike         1   527.37 609.37
## <none>                          529.95 609.95
## + Age                       1   528.15 610.15
## + PerformanceRating         1   528.67 610.67
## + HourlyRate                1   529.52 611.52
## + MonthlyRate               1   529.54 611.54
## + age_group                 4   523.61 611.61
## + Education                 1   529.67 611.67
## + DailyRate                 1   529.87 611.87
## - WorkLifeBalance           1   534.35 612.35
## - MonthlyIncome             1   534.93 612.93
## + MaritalStatus             2   529.14 613.14
## + Department                2   529.60 613.60
## - TrainingTimesLastYear     1   536.83 614.83
## - EducationField            5   546.31 616.31
## - JobRole                   8   552.81 616.81
## - JobSatisfaction           1   539.98 617.98
## - YearsAtCompany            1   542.10 620.10
## - YearsInCurrentRole        1   542.30 620.30
## - DistanceFromHome          1   542.98 620.98
## - TotalWorkingYears         1   544.97 622.97
## - EnvironmentSatisfaction   1   545.42 623.42
## - RelationshipSatisfaction  3   551.62 625.62
## - NumCompaniesWorked        1   549.69 627.69
## - JobInvolvement            3   559.66 633.66
## - BusinessTravel            2   562.13 638.13
## - JobLevel                  4   569.81 641.81
## - StockOptionLevel          3   571.83 645.83
## - OverTime                  1   600.25 678.25
## 
## Step:  AIC=607.76
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany + 
##     EducationField + WorkLifeBalance + YearsWithCurrManager
## 
##                            Df Deviance    AIC
## + YearsSinceLastPromotion   1   521.50 605.50
## + Gender                    1   521.55 605.55
## + PercentSalaryHike         1   523.45 607.45
## + Age                       1   523.63 607.63
## <none>                          525.76 607.76
## + PerformanceRating         1   524.67 608.67
## + age_group                 4   519.14 609.14
## + HourlyRate                1   525.43 609.43
## + MonthlyRate               1   525.44 609.44
## + DailyRate                 1   525.55 609.55
## + Education                 1   525.57 609.57
## - YearsWithCurrManager      1   529.95 609.95
## - WorkLifeBalance           1   530.54 610.54
## + MaritalStatus             2   524.85 610.85
## + Department                2   524.97 610.97
## - MonthlyIncome             1   531.39 611.39
## - TrainingTimesLastYear     1   532.97 612.97
## - EducationField            5   542.58 614.58
## - JobSatisfaction           1   535.50 615.50
## - YearsInCurrentRole        1   536.20 616.20
## - JobRole                   8   550.53 616.53
## - DistanceFromHome          1   538.47 618.47
## - TotalWorkingYears         1   540.89 620.89
## - YearsAtCompany            1   541.91 621.91
## - EnvironmentSatisfaction   1   542.02 622.02
## - RelationshipSatisfaction  3   548.18 624.18
## - NumCompaniesWorked        1   545.85 625.85
## - JobInvolvement            3   554.36 630.36
## - BusinessTravel            2   558.34 636.34
## - JobLevel                  4   567.62 641.62
## - StockOptionLevel          3   568.51 644.51
## - OverTime                  1   595.64 675.64
## 
## Step:  AIC=605.5
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany + 
##     EducationField + WorkLifeBalance + YearsWithCurrManager + 
##     YearsSinceLastPromotion
## 
##                            Df Deviance    AIC
## + Gender                    1   516.90 602.90
## + Age                       1   519.21 605.21
## + PercentSalaryHike         1   519.49 605.49
## <none>                          521.50 605.50
## + age_group                 4   514.15 606.15
## + PerformanceRating         1   520.50 606.50
## + HourlyRate                1   520.85 606.85
## + MonthlyRate               1   521.28 607.28
## + Education                 1   521.30 607.30
## + DailyRate                 1   521.42 607.42
## - YearsSinceLastPromotion   1   525.76 607.76
## - WorkLifeBalance           1   526.21 608.21
## + MaritalStatus             2   520.26 608.26
## - YearsWithCurrManager      1   526.45 608.45
## + Department                2   520.84 608.84
## - MonthlyIncome             1   527.61 609.61
## - TrainingTimesLastYear     1   528.89 610.89
## - EducationField            5   538.84 612.84
## - JobRole                   8   545.03 613.03
## - JobSatisfaction           1   531.47 613.47
## - YearsInCurrentRole        1   533.79 615.79
## - YearsAtCompany            1   534.33 616.33
## - DistanceFromHome          1   534.44 616.44
## - TotalWorkingYears         1   535.91 617.91
## - EnvironmentSatisfaction   1   538.39 620.39
## - RelationshipSatisfaction  3   543.62 621.62
## - NumCompaniesWorked        1   540.68 622.68
## - JobInvolvement            3   548.90 626.90
## - BusinessTravel            2   553.61 633.61
## - JobLevel                  4   561.76 637.76
## - StockOptionLevel          3   565.04 643.04
## - OverTime                  1   590.42 672.42
## 
## Step:  AIC=602.9
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany + 
##     EducationField + WorkLifeBalance + YearsWithCurrManager + 
##     YearsSinceLastPromotion + Gender
## 
##                            Df Deviance    AIC
## + Age                       1   514.35 602.35
## <none>                          516.90 602.90
## + PercentSalaryHike         1   515.00 603.00
## + age_group                 4   509.28 603.28
## + PerformanceRating         1   515.93 603.93
## + HourlyRate                1   516.09 604.09
## + MonthlyRate               1   516.62 604.62
## + Education                 1   516.77 604.77
## + DailyRate                 1   516.81 604.81
## - Gender                    1   521.50 605.50
## - YearsSinceLastPromotion   1   521.55 605.55
## + MaritalStatus             2   515.68 605.68
## - YearsWithCurrManager      1   521.89 605.89
## - WorkLifeBalance           1   522.04 606.04
## + Department                2   516.15 606.15
## - MonthlyIncome             1   523.43 607.43
## - TrainingTimesLastYear     1   523.70 607.70
## - JobRole                   8   540.50 610.50
## - EducationField            5   535.00 611.00
## - JobSatisfaction           1   527.10 611.10
## - YearsInCurrentRole        1   529.90 613.90
## - YearsAtCompany            1   530.50 614.50
## - DistanceFromHome          1   530.52 614.52
## - TotalWorkingYears         1   532.48 616.48
## - EnvironmentSatisfaction   1   534.27 618.27
## - RelationshipSatisfaction  3   540.63 620.63
## - NumCompaniesWorked        1   537.39 621.39
## - JobInvolvement            3   545.73 625.73
## - BusinessTravel            2   550.46 632.46
## - JobLevel                  4   558.07 636.07
## - StockOptionLevel          3   561.03 641.03
## - OverTime                  1   588.75 672.75
## 
## Step:  AIC=602.35
## Attrition ~ JobRole + OverTime + StockOptionLevel + JobLevel + 
##     BusinessTravel + JobInvolvement + EnvironmentSatisfaction + 
##     DistanceFromHome + RelationshipSatisfaction + JobSatisfaction + 
##     YearsInCurrentRole + TrainingTimesLastYear + MonthlyIncome + 
##     NumCompaniesWorked + TotalWorkingYears + YearsAtCompany + 
##     EducationField + WorkLifeBalance + YearsWithCurrManager + 
##     YearsSinceLastPromotion + Gender + Age
## 
##                            Df Deviance    AIC
## <none>                          514.35 602.35
## + PercentSalaryHike         1   512.76 602.76
## - Age                       1   516.90 602.90
## + HourlyRate                1   513.35 603.35
## + PerformanceRating         1   513.51 603.51
## + age_group                 4   508.09 604.09
## + MonthlyRate               1   514.10 604.10
## + DailyRate                 1   514.27 604.27
## + Education                 1   514.34 604.34
## + MaritalStatus             2   513.02 605.02
## - YearsSinceLastPromotion   1   519.18 605.18
## - Gender                    1   519.21 605.21
## + Department                2   513.63 605.63
## - YearsWithCurrManager      1   519.69 605.69
## - WorkLifeBalance           1   519.84 605.84
## - TrainingTimesLastYear     1   520.43 606.43
## - MonthlyIncome             1   521.14 607.14
## - TotalWorkingYears         1   522.95 608.95
## - JobRole                   8   537.25 609.25
## - JobSatisfaction           1   524.09 610.09
## - EducationField            5   532.26 610.26
## - DistanceFromHome          1   526.98 612.98
## - YearsAtCompany            1   527.60 613.60
## - YearsInCurrentRole        1   527.61 613.61
## - EnvironmentSatisfaction   1   531.49 617.49
## - RelationshipSatisfaction  3   537.79 619.79
## - NumCompaniesWorked        1   536.61 622.61
## - JobInvolvement            3   542.89 624.89
## - BusinessTravel            2   548.12 632.12
## - JobLevel                  4   554.86 634.86
## - StockOptionLevel          3   557.87 639.87
## - OverTime                  1   587.26 673.26

Tym sposobem zostaje wyłoniona lista zmiennych o najniższym wskaźniku AIC: Percent Salary Hike, Hourly Rate, Performance Rating, Age Group, Monthly Rate, Daily Rate, Education, Marital Status, Department.

W kolejnym kroku modele: pusty, pełny i najlepszy są porównane do siebie przy pomocy pakietu stargazer.

stargazer(model_pelny, model_pusty, model_najlepszy, type = "text")
## 
## ===============================================================
##                                       Dependent variable:      
##                                 -------------------------------
##                                            Attrition           
##                                     (1)        (2)       (3)   
## ---------------------------------------------------------------
## Age                               -0.048               -0.027  
##                                   (0.045)              (0.017) 
##                                                                
## BusinessTravelTravel_Frequently  2.728***             2.600*** 
##                                   (0.617)              (0.586) 
##                                                                
## BusinessTravelTravel_Rarely       1.322**              1.234** 
##                                   (0.576)              (0.545) 
##                                                                
## DailyRate                        -0.00004                      
##                                  (0.0003)                      
##                                                                
## DepartmentResearch              Development  15.522            
##                                 (1,907.824)                    
##                                                                
## DepartmentSales                   15.147                       
##                                 (1,907.824)                    
##                                                                
## DistanceFromHome                 0.055***             0.051*** 
##                                   (0.015)              (0.014) 
##                                                                
## Education                          0.013                       
##                                   (0.117)                      
##                                                                
## EducationFieldLife Sciences       -1.061               -1.070  
##                                   (1.129)              (1.115) 
##                                                                
## EducationFieldMarketing            0.193                0.140  
##                                   (1.194)              (1.179) 
##                                                                
## EducationFieldMedical             -1.119               -1.181  
##                                   (1.130)              (1.114) 
##                                                                
## EducationFieldOther               -0.976               -1.133  
##                                   (1.243)              (1.225) 
##                                                                
## EducationFieldTechnical Degree     0.088                0.035  
##                                   (1.156)              (1.139) 
##                                                                
## EnvironmentSatisfaction          -0.476***            -0.455***
##                                   (0.116)              (0.112) 
##                                                                
## Gender                            0.566**              0.532** 
##                                   (0.251)              (0.245) 
##                                                                
## HourlyRate                         0.007                       
##                                   (0.006)                      
##                                                                
## JobInvolvement2                  -2.122***            -1.983***
##                                   (0.490)              (0.477) 
##                                                                
## JobInvolvement3                  -2.147***            -2.041***
##                                   (0.460)              (0.448) 
##                                                                
## JobInvolvement4                  -3.125***            -2.991***
##                                   (0.646)              (0.631) 
##                                                                
## JobLevel2                        -1.322**             -1.353** 
##                                   (0.609)              (0.604) 
##                                                                
## JobLevel3                          1.466                1.528  
##                                   (0.957)              (0.937) 
##                                                                
## JobLevel4                          0.114                0.393  
##                                   (1.655)              (1.621) 
##                                                                
## JobLevel5                          1.164                1.339  
##                                   (2.266)              (2.203) 
##                                                                
## JobRoleHuman Resources            16.022                0.260  
##                                 (1,907.825)            (0.960) 
##                                                                
## JobRoleLaboratory Technician       0.568                0.565  
##                                   (0.787)              (0.768) 
##                                                                
## JobRoleManager                     1.450                1.411  
##                                   (1.208)              (1.107) 
##                                                                
## JobRoleManufacturing Director      0.815                0.866  
##                                   (0.701)              (0.685) 
##                                                                
## JobRoleResearch Director          -16.669              -16.506 
##                                  (616.799)            (622.961)
##                                                                
## JobRoleResearch Scientist         -0.374               -0.374  
##                                   (0.805)              (0.789) 
##                                                                
## JobRoleSales Executive             1.727               1.326** 
##                                   (1.494)              (0.614) 
##                                                                
## JobRoleSales Representative        0.820                0.466  
##                                   (1.591)              (0.834) 
##                                                                
## JobSatisfaction                  -0.358***            -0.329***
##                                   (0.109)              (0.106) 
##                                                                
## MaritalStatusMarried               0.372                       
##                                   (0.375)                      
##                                                                
## MaritalStatusSingle                0.580                       
##                                   (0.524)                      
##                                                                
## MonthlyIncome                    -0.0003**            -0.0003**
##                                  (0.0001)             (0.0001) 
##                                                                
## MonthlyRate                       0.00001                      
##                                  (0.00002)                     
##                                                                
## NumCompaniesWorked               0.253***             0.254*** 
##                                   (0.055)              (0.054) 
##                                                                
## OverTime                         2.100***             2.044*** 
##                                   (0.263)              (0.254) 
##                                                                
## PercentSalaryHike                 -0.054                       
##                                   (0.052)                      
##                                                                
## PerformanceRating4                 0.144                       
##                                   (0.544)                      
##                                                                
## RelationshipSatisfaction2        -1.200***            -1.125***
##                                   (0.382)              (0.366) 
##                                                                
## RelationshipSatisfaction3        -1.521***            -1.463***
##                                   (0.340)              (0.332) 
##                                                                
## RelationshipSatisfaction4        -1.369***            -1.282***
##                                   (0.336)              (0.328) 
##                                                                
## StockOptionLevel1                -1.181***            -1.498***
##                                   (0.404)              (0.270) 
##                                                                
## StockOptionLevel2                -1.495***            -1.840***
##                                   (0.563)              (0.469) 
##                                                                
## StockOptionLevel3                 -0.530               -0.894* 
##                                   (0.612)              (0.498) 
##                                                                
## TotalWorkingYears                -0.112***            -0.115***
##                                   (0.041)              (0.042) 
##                                                                
## TrainingTimesLastYear            -0.243**             -0.233** 
##                                   (0.098)              (0.096) 
##                                                                
## WorkLifeBalance                  -0.368**             -0.385** 
##                                   (0.168)              (0.165) 
##                                                                
## YearsAtCompany                   0.230***             0.231*** 
##                                   (0.064)              (0.065) 
##                                                                
## YearsInCurrentRole               -0.235***            -0.244***
##                                   (0.069)              (0.068) 
##                                                                
## YearsSinceLastPromotion           0.131**              0.121** 
##                                   (0.057)              (0.055) 
##                                                                
## YearsWithCurrManager             -0.163**             -0.155** 
##                                   (0.068)              (0.066) 
##                                                                
## age_group21-30                    -1.105                       
##                                   (1.205)                      
##                                                                
## age_group31-40                    -1.180                       
##                                   (1.347)                      
##                                                                
## age_group41-50                    -1.032                       
##                                   (1.620)                      
##                                                                
## age_group51-60                     0.272                       
##                                   (1.973)                      
##                                                                
## Constant                          -8.296    -1.680*** 5.821*** 
##                                 (1,907.826)  (0.086)   (1.718) 
##                                                                
## ---------------------------------------------------------------
## Observations                       1,025      1,025     1,025  
## Log Likelihood                   -251.420   -445.654  -257.173 
## Akaike Inf. Crit.                 618.840    893.308   602.347 
## ===============================================================
## Note:                               *p<0.1; **p<0.05; ***p<0.01

Porównanie modeli potwierdza, że model najlepszy jest modelem o najniższym wskaźniku Akaike. Od modelu pełnego różni się wyłączeniem cech statystycznie nieistotnych, a także wykazaniem istotności przy JobRoleSales Executive, ze względu na niższą wartość p-value. Model ten zostanie zobrazowany na poniższych wykresach, aby móc ocenić jego dalsze właściwości.

summ(model_najlepszy, digits=3)
Observations 1025
Dependent variable Attrition
Type Generalized linear model
Family binomial
Link logit
χ2(43) 376.962
Pseudo-R2 (Cragg-Uhler) 0.530
Pseudo-R2 (McFadden) 0.423
AIC 602.347
BIC 819.374
Est. S.E. z val. p
(Intercept) 5.821 1.718 3.389 0.001
JobRoleHuman Resources 0.260 0.960 0.271 0.787
JobRoleLaboratory Technician 0.565 0.768 0.735 0.462
JobRoleManager 1.411 1.107 1.274 0.203
JobRoleManufacturing Director 0.866 0.685 1.264 0.206
JobRoleResearch Director -16.506 622.961 -0.026 0.979
JobRoleResearch Scientist -0.374 0.789 -0.475 0.635
JobRoleSales Executive 1.326 0.614 2.159 0.031
JobRoleSales Representative 0.466 0.834 0.559 0.576
OverTime 2.044 0.254 8.052 0.000
StockOptionLevel1 -1.498 0.270 -5.540 0.000
StockOptionLevel2 -1.840 0.469 -3.924 0.000
StockOptionLevel3 -0.894 0.498 -1.795 0.073
JobLevel2 -1.353 0.604 -2.238 0.025
JobLevel3 1.528 0.937 1.630 0.103
JobLevel4 0.393 1.621 0.242 0.809
JobLevel5 1.339 2.203 0.608 0.543
BusinessTravelTravel_Frequently 2.600 0.586 4.436 0.000
BusinessTravelTravel_Rarely 1.234 0.545 2.264 0.024
JobInvolvement2 -1.983 0.477 -4.159 0.000
JobInvolvement3 -2.041 0.448 -4.553 0.000
JobInvolvement4 -2.991 0.631 -4.742 0.000
EnvironmentSatisfaction -0.455 0.112 -4.055 0.000
DistanceFromHome 0.051 0.014 3.570 0.000
RelationshipSatisfaction2 -1.125 0.366 -3.077 0.002
RelationshipSatisfaction3 -1.463 0.332 -4.405 0.000
RelationshipSatisfaction4 -1.282 0.328 -3.911 0.000
JobSatisfaction -0.329 0.106 -3.094 0.002
YearsInCurrentRole -0.244 0.068 -3.609 0.000
TrainingTimesLastYear -0.233 0.096 -2.422 0.015
MonthlyIncome -0.000 0.000 -2.545 0.011
NumCompaniesWorked 0.254 0.054 4.692 0.000
TotalWorkingYears -0.115 0.042 -2.735 0.006
YearsAtCompany 0.231 0.065 3.567 0.000
EducationFieldLife Sciences -1.070 1.115 -0.959 0.337
EducationFieldMarketing 0.140 1.179 0.119 0.905
EducationFieldMedical -1.181 1.114 -1.060 0.289
EducationFieldOther -1.133 1.225 -0.925 0.355
EducationFieldTechnical Degree 0.035 1.139 0.031 0.976
WorkLifeBalance -0.385 0.165 -2.336 0.020
YearsWithCurrManager -0.155 0.066 -2.345 0.019
YearsSinceLastPromotion 0.121 0.055 2.194 0.028
Gender 0.532 0.245 2.169 0.030
Age -0.027 0.017 -1.578 0.114
Standard errors: MLE

Z odczytu powyższych wykresów można wysnuć wniosek, że model mógłby być nieco lepiej dopasowany. W celu poprawy rezultatów można byłoby zastosować szereg zabiegów m.in. odrzucić zmiennie nie istotne statystycznie, zlogarytmować zmienne, których rozkład nieznacznie odbiega od normalnego, lub zoptymalizować dopasowanie grup zmiennych.


Interpretacja wyników - wnioskowanie


Po utworzeniu modelu na danych treningowych możliwe jest sporządzenie testu na danych testowych
i dokonanie predykcji wyników. Do tego zadania zostanie wykorzystana krzywa ROC (Receiver Operating Characteristic). Jest to jedna z technik oceny jakości klasyfikatora i poszukiwania optymalnego punktu odcięcia jest krzywa ROC.

Krzywa ROC to sposób wizualizacji jakości klasyfikacji, pokazujący zależności wskaźników TPR (True Positive Rate) oraz FPR (False Positive Rate). Im bardziej “wypukły wykres”, tym lepszy klasyfikator.

Definiujemy dwie główne miary dla krzywej ROC - specyficzność (specificity) oraz czułość (sensivity). Czułość mierzy zdolność modelu do wykrycia danej cechy, podczas gdy specyficzność mierzy słabość modelu. Dodatkowo wyznacza się cztery podstawowe klasy obserwacji:

TP - True positive - liczba poprawnie sklasyfikowanych rezygnacji - osoby rozpoznane jako te, które zrezygnowały i które rzeczywiście zrezygnowały (prediction 1: reference 1)

TN - True negative - liczba poprawnie sklasyfikowanych osób które zostały - które są pracownikami i jako takie zostały rozpoznane (prediction 0: reference 0)

FP - false positive - liczba błędnie sklasyfikowanych osób - osoby zakwalifikowane jako te co odeszły, chociaż nadal pracują (prediction 1: reference 0)

FN - false negative - osoby sklasyfikowane jako nadal pracujące , a które w rzeczywistości zrezygnowały (prediction 0: reference 1)

Dobry model minimalizuje liczbę błędów, czyli wartości FN i FP.

Mamy także inne miary jakości reguł predykcyjnych takie jak wartość predykcjna dodatniego wyniku (PPV - Pos Pred Value) oraz wartość predykcyjna ujemnego wyniku (NPV - Neg Pred Value) i częstotliwość występowania wyróżnionego zdarzenia (Prevalence = TP+FN\(TP+TN+FN+FP)). Znając te wartości można zdefiniować skuteczność reguły decyzyjnej czyli Accuracy.

  1. Dane treningowe
predykcja <- predict(model_najlepszy, DaneTreningowe, type = "response")
pred <- ifelse(predykcja > 0.3, 1, 0)
confusionMatrix(factor(pred), factor(DaneTreningowe$Attrition), positive= "1")
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 795  44
##          1  69 117
##                                          
##                Accuracy : 0.8898         
##                  95% CI : (0.869, 0.9083)
##     No Information Rate : 0.8429         
##     P-Value [Acc > NIR] : 0.0000104      
##                                          
##                   Kappa : 0.6084         
##                                          
##  Mcnemar's Test P-Value : 0.02396        
##                                          
##             Sensitivity : 0.7267         
##             Specificity : 0.9201         
##          Pos Pred Value : 0.6290         
##          Neg Pred Value : 0.9476         
##              Prevalence : 0.1571         
##          Detection Rate : 0.1141         
##    Detection Prevalence : 0.1815         
##       Balanced Accuracy : 0.8234         
##                                          
##        'Positive' Class : 1              
## 
predykcja <- predict(model_najlepszy, DaneTreningowe, type ="response")
pred <- ifelse(predykcja > 0.3, 1, 0)
r <- roc(DaneTreningowe$Attrition, predykcja)
plot.roc(r)

#odnalezienie najlepszych progów
coords(r, x = "best")
## # A tibble: 1 x 3
##   threshold specificity sensitivity
##       <dbl>       <dbl>       <dbl>
## 1     0.180       0.843       0.826
coords(r, x = c(0.1, 0.2, 0.5))
## # A tibble: 3 x 3
##   threshold specificity sensitivity
##       <dbl>       <dbl>       <dbl>
## 1       0.1       0.731       0.870
## 2       0.2       0.858       0.789
## 3       0.5       0.970       0.553
  1. Dane testowe
predykcja <- predict(model_najlepszy, DaneTestowe, type = "response")
pred <- ifelse(predykcja > 0.3, 1, 0)
confusionMatrix(factor(pred), factor(DaneTestowe$Attrition), positive= "1")
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 326  28
##          1  43  48
##                                           
##                Accuracy : 0.8404          
##                  95% CI : (0.8031, 0.8732)
##     No Information Rate : 0.8292          
##     P-Value [Acc > NIR] : 0.28864         
##                                           
##                   Kappa : 0.4776          
##                                           
##  Mcnemar's Test P-Value : 0.09661         
##                                           
##             Sensitivity : 0.6316          
##             Specificity : 0.8835          
##          Pos Pred Value : 0.5275          
##          Neg Pred Value : 0.9209          
##              Prevalence : 0.1708          
##          Detection Rate : 0.1079          
##    Detection Prevalence : 0.2045          
##       Balanced Accuracy : 0.7575          
##                                           
##        'Positive' Class : 1               
## 
predykcja <- predict(model_najlepszy, DaneTestowe, type ="response")
pred <- ifelse(predykcja > 0.3, 1, 0)
r <- roc(DaneTestowe$Attrition, predykcja)
plot.roc(r)

predykcja = ifelse(test = predykcja>0.5,yes=1,no=0)
table(DaneTestowe$Attrition,predykcja)
##    predykcja
##       0   1
##   0 350  19
##   1  48  28

Accuracy osiągnięta na Danych Testowych wynosi około 84%, a czułość (sensivity) i swoistość (specificity) wynoszą odpowiednio 0,63 i 0,88. Model charakteryzuje się dość wysoką specyficznością, a co za tym idzie, jest w stanie dokładnie przewidzieć przypadki pozytywne, czyli takie, w których pracownik odejdzie z organizacji.

Mając 445 danych testowych poprawnie zostało przewidzianych 85%, co jest wynikiem zadowalającym.\[(350+28)/445\*100\]

Można wywnioskować, że model regresji logitowej jest modelem dobrze dopasowanym.


Podsumowanie


Powyższy raport udowadnia iż przy zastosowaniu regresji logitowej w R i dobrego zbioru danych możliwa jest predykcja rezygnacji pracowników. Tego typu analiza może pomóc przedsiębiorstwom w podejmowaniu decyzji, które pozwolą utrzymać pracowników i podwyższą wskaźniki retencji.

Wizualizacja danych na początku niniejszego raportu pozwoliła zaobserwować pewne prawidłowości, które w kolejnych etapach analizy zostały potwierdzone m.in. przy tworzeniu modelu, jak i sprawdzaniu istotności statystycznej zmiennych.

Na przykładzie omawianego zbioru danych możemy wyłonić zmienne, które mają najwiekszy wpływ na podjęcie decyzji o odejściu z miejsca pracy. Są to: Business Travel, Distance from Home, Environment Satisfaction, Job Involvment, Job Satisfaction, Num Companies Worked, Overtime , Relationship Satisfaction, Total Working Years, Years at Company, Years in Current Role. Równocześnie wyłonione zostały zmienne o niskiej istotności: Age group, Performance Rating, Percent Salary Hike, Monthly Rate, Marital Status, Hourly Rate, Education i Departament.

Pomimo osiągnięcia na zbiorze testowym 85% poprawnych predykcji, można wywnioskować, że model mógłby być nieco lepiej dopasowany. W celu poprawy rezultatów można byłoby zastosować szereg zabiegów m.in. odrzucić zmiennie nieistotne statystycznie, zlogarytmować zmienne, których rozkład nieznacznie odbiega od normalnego, lub zoptymalizować dopasowanie grup zmiennych. Innym rozwiązaniem byłoby utworzenie modeli takich jak drzewo decyzyjne, las losowy czy algorytm XGBoost.




  1. Attrition - odpływ pracowników z organizacji - edycja 2 (antal.pl)↩︎

  2. https://www.kaggle.com/pavansubhasht/ibm-hr-analytics-attrition-dataset


    ↩︎