Part 4 (Final): Predicting results, and working with Command Boards using Machine Learning
Analyzing the Employees TurnOver: Part 4 (Final) - Descriptive & Predictive analysis
If you haven't seen Parts 1, 2, or 3, please refer to?Part 1: Introduction,?Part 2: Exploratory Analysis & Part 3: Descriptive & Predictive Analysis
In this last section, we will answer the last point of the Business Analytical division: The Prescriptive Analysis -> What recommendations would you make regarding ways to reduce employee turnover?
3. What recommendations would you make regarding ways to reduce employee turnover?
Overview
As we have found, 'Average Working Hours per Month', 'Review' and 'Satisfaction' are the key variables to pay attention to. Taking into consideration we have developed an equation from these three variables, now we can anticipate some outcomes with decent accuracy. Before giving specific recommendations and creating an action plan, we need to make a general review of the different indicators.
Average Working Hours per Month
In general, in the whole company, the employees tend to do overtime hours. The mean of the employees' average working hours per month is 184 hs. In most countries, the legal working schedule per day is between 8 and 9 hours per day. Monthly, this means between 160 and 180hs. Having this said, the company's mean is already above the legal number (above this number, the company should extra compensate the employee). And, on top of that, the first 25th percentil already pass this quantity of hours. This means that more than 75% of the company works more than what the Law establishes (in a different description, we would have to analyze if the employee chose to do the overtime hours or if they have to. Also, if they are well retributed for these extra hours or not, as this might impact on the employee's satisfaction).
In conclusion: more than 75% of the employees do overtime hours. Employees might feel they are overworking. On top of this, 56% of the people who left the company were doing between 185 and 190 hs. per month. This means between 9:15 and 9:30 hours per day.
Review
The average review of the employees who left the company was 69%. The company is losing good employees. The highest the review is, the more chances the employee will leave the company. And, on top of that, the highest the review, the lower the satisfaction of the employee is. This means that the company is losing good reviewed employees who are not happy in the company. Also, there is a relation between review and tenure, where we see that the employees who got the higher reviews were the employees with fewer years in the company.
In conclusion: It's clear that the company has a Human capital flight (Brain Drain) as the higher the review, the lower the employee's satisfaction is and the higher the employee's chances are to leave the company.
Satisfaction
As we mentioned, satisfaction is one of the three most important factors that directly impact the outcome of whether an employee leaves the company or not.
In conclusion: A good employee but not happy in the company could be an expensive outcome against the company.
Tenure
We see that in the years 3 & 4, and 7 & 8 years in the company, the turnover ratio almost reaches a parity. However, due to statistical significance, we should pay special attention to the years 7 and 8. This might mean that some of the employees who left the company might have been head-hunted.
In conclusion: Pay special attention to the employees around the tenure years 7 and 8. These might be managers or directors and are being head-hunted.
Department
It would be more important to analyze the turnovers both my Relative as Absolute Ratios. In one end, analyzing Absolute Ratios in order to have an overall idea of the companies' direction, and Relative ones, because there might be specific issues in specific departments, which cannot be easily translated in numbers.
In conclusion: getting the department's insights is difficult from a macro-vision perspective. Micromanagement techniques, for example, are difficult to analyze analytically.
General Observations
3.1. Specific Recommendations for the Case
The next step must be creating a Command Board where the Human Resources team could monitor all the variables of the employees, and that way, anticipate the possible outcomes. According to the results of the Outcome Anticipation equation obtained with the most important features, we could position each employee in either of these 4 categories:
Once we have arrived in the 4th quadrant, it might be too late. That is why the Human Resources team should anticipate great periodical maps to see where the employees are. Also, create automatic triggers, so the system tells the Human Resources they should be attention to a specific employee that has reached any flag value (alert value determined by the company).
Please refer to the bottom of the following report to see an example of how the Command Board might work.
领英推荐
Salary raise or Bonus
There is no doubt that the rehiring process is always more expensive than raising the salary or giving a bonus to an employee who is in the 3rd or 4th quadrant. On top of that, we are considering that the average review of the employees who left the company was 69%. This means that the company not only has to replace employees, but they have to replace good employees, which could be even more expensive.
Reallocation
Reallocating the employee to a different department or offering a transfer could be a solution to avoid losing a good employee.
Managers' Rotation
In order to avoid Micromanagement, a rotation among the managers or directors could help to refresh the environment and avoid any bad habits that might have been established.
Command Board
Here, we will show a way potential way to automate a warning system in order to be able to take action before it is too late. We will simulate four scenarios and show potential messages our HR team could be receiving in each case. For this situation, we will use the Outcome Anticipation equation obtained from the Logistic Regression model.
# Create function to compute coefficients
coef = answer.params
def theAlarm(value):
if (value >=0) & (value <0.25):
toReturn='\n The Employee is in the 1st Quadrant. \x1b[6;30;42m' + 'No actions should be taken.' + '\x1b[0m'
return (toReturn)
elif (value >=0.25) & (value <0.50):
toReturn='\n The Employee is in the 2nd Quadrant. \x1b[0;30;46m' + 'Pay attention to the employee.' + '\x1b[0m'
return (toReturn)
elif (value >=0.50) & (value <0.75):
toReturn='\n The Employee is in the 3rd Quadrant. \x1b[0;30;43m' + 'Actions should be taken.' + '\x1b[0m'
return (toReturn)
else:
toReturn='\n The Employee is in the 4th Quadrant. \x1b[0;37;41m' + 'Urgent Actions must be taken!' + '\x1b[0m'
return (toReturn)
def getTurnOver (coef, avg_hrs_month, review, satisfaction) :
y = coef[3] + coef[0]*avg_hrs_month + coef[1]*review + coef[2]*satisfaction
p = np.exp(y) / (1+np.exp(y))
quadrant=theAlarm(p)
print ('The Employee is working: {} Hours in Average per Month, has Review of: {}%, and has a Satisfaction level of: {}%. \nThis Employee has {}% chances of leaving the company. {}'.format(avg_hrs_month,review*100,satisfaction*100,np.round(p*100,1),quadrant))
We will simulate the four different scenarios (4 different employees) we should have to control in the Command Board
Scenario 1
# An Employee with 70% of Satisfaction, 50% of Review, that worked 170 hours in average per month.
averageOverHours=170
review=0.5
satisfaction=0.8
getTurnOver(coef, averageOverHours, review, satisfaction)
Scenario 2
# An Employee with 70% of Satisfaction, 70% of Review, that worked 175 hours in average per month.
averageOverHours=175
review=0.7
satisfaction=0.7
getTurnOver(coef, averageOverHours, review, satisfaction)
Scenario 3
# An Employee with 70% of Satisfaction, 80% of Review, that worked 175 hours in average per month.
averageOverHours=175
review=0.8
satisfaction=0.7
getTurnOver(coef, averageOverHours, review, satisfaction)
Scenario 4
# An Employee with 70% of Satisfaction, 80% of Review, that worked 188 hours in average per month.
averageOverHours=188
review=0.8
satisfaction=0.7
getTurnOver(coef, averageOverHours, review, satisfaction)
Thanks for reading!
---------------------------------------------------------------------------------------------------------------
This case is part of a DataCamp competition:?Employees TurnOver - DataCamp
The full report is available in my GitHub repository?GitHub - vascoarizna
Here you will find not only the full explanation with the graphics and the solution but also the Jupyter Notebook codes in case you want to take anything for you.
Author:?Ignacio Ariznabarreta -?JIAF Consulting