Memanggil data dan melakukan Pembersihan Data
## EmployeeNumber Surname GivenName Gender
## Min. : 1 Johnson : 106 James : 182 F:4120
## 1st Qu.:2085 Smith : 86 John : 161 M:4216
## Median :4168 Jones : 71 Robert : 136
## Mean :4168 Williams: 71 Mary : 124
## 3rd Qu.:6252 Brown : 62 William: 121
## Max. :8336 Moore : 47 Michael: 107
## (Other) :7893 (Other):7505
## City JobTitle DepartmentName
## Vancouver :1780 Cashier :1703 Customer Service:1737
## Victoria : 690 Dairy Person :1514 Dairy :1515
## New Westminster: 540 Meat Cutter :1480 Meats :1514
## Burnaby : 339 Baker :1404 Bakery :1449
## Surrey : 275 Produce Clerk:1129 Produce :1163
## Richmond : 228 Shelf Stocker: 712 Processed Foods : 746
## (Other) :4484 (Other) : 394 (Other) : 212
## StoreLocation Division Age
## Vancouver :1836 Executive : 11 Min. : 3.505
## Victoria : 853 FinanceAndAccounting: 73 1st Qu.:35.299
## Nanaimo : 610 HumanResources : 76 Median :42.115
## New Westminster: 525 InfoTech : 10 Mean :42.007
## Kelowna : 418 Legal : 3 3rd Qu.:48.667
## Kamloops : 360 Stores :8163 Max. :77.938
## (Other) :3734
## LengthService AbsentHours BusinessUnit AbsenceRate
## Min. : 0.0121 Min. : 0.00 HeadOffice: 173 Min. : 0.0000
## 1st Qu.: 3.5759 1st Qu.: 19.13 Stores :8163 1st Qu.: 0.9196
## Median : 4.6002 Median : 56.01 Median : 2.6926
## Mean : 4.7829 Mean : 61.28 Mean : 2.9463
## 3rd Qu.: 5.6239 3rd Qu.: 94.28 3rd Qu.: 4.5329
## Max. :43.7352 Max. :272.53 Max. :13.1024
##
Terdapat data dimana ada usia yang kita gunakan untuk memprediksi data ini disepkati lebih dari 18 tahun dan di bawah 65 tahun.
Apakah mungkin kita memprediksi tingkat absensi
Tingkat Absensi adalah data numerik yang berupa kontinum, Kita harus memilih model algoritma apa yang akan kita pilih dalam melakukan prediksi. Untuk memprediksi data yang bersifat continum disarankan digunakan : regresion trees dan linier regression.
Regression Tree membolehkan dua jenis data sebagai prediktor yakni data kategorik dan numerik. Kita akan mencoba prediktor berikut ini
Jenis kelamin
bagian atau departemen
lokasi toko
divisi
usia
masa kerja
unit bisnis
Tingkat Absensi adalah merupakan variabel yang akan kita prediksi
## Rattle: A free graphical interface for data mining with R.
## Version 4.1.0 Copyright (c) 2006-2015 Togaware Pty Ltd.
## Type 'rattle()' to shake, rattle, and roll your data.
## 'data.frame': 8165 obs. of 14 variables:
## $ EmployeeNumber: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Surname : Factor w/ 4051 levels "Aaron","Abadie",..: 1556 1618 941 3415 946 1917 503 2152 3451 222 ...
## $ GivenName : Factor w/ 1625 levels "Aaron","Abel",..: 1141 1453 265 688 450 514 1260 625 760 1305 ...
## $ Gender : Factor w/ 2 levels "F","M": 1 2 2 1 2 2 2 2 2 2 ...
## $ City : Factor w/ 243 levels "Abbotsford","Agassiz",..: 29 52 180 227 144 180 223 192 144 223 ...
## $ JobTitle : Factor w/ 47 levels "Accounting Clerk",..: 5 5 5 5 5 5 1 5 5 1 ...
## $ DepartmentName: Factor w/ 21 levels "Accounting","Accounts Payable",..: 5 5 5 5 5 5 1 5 5 1 ...
## $ StoreLocation : Factor w/ 40 levels "Abbotsford","Aldergrove",..: 5 18 29 37 21 29 35 38 21 35 ...
## $ Division : Factor w/ 6 levels "Executive","FinanceAndAccounting",..: 6 6 6 6 6 6 2 6 6 2 ...
## $ Age : num 32 40.3 48.8 44.6 35.7 ...
## $ LengthService : num 6.02 5.53 4.39 3.08 3.62 ...
## $ AbsentHours : num 36.6 30.2 83.8 70 0 ...
## $ BusinessUnit : Factor w/ 2 levels "HeadOffice","Stores": 2 2 2 2 2 2 1 2 2 1 ...
## $ AbsenceRate : num 1.76 1.45 4.03 3.37 0 ...
dari regression decision tree terlihat faktor terbesar yang menentukan tingkat absensi adalah jenis kelamin dan usia diantara >43 dan <52 tahun dengan jenis kelamin pria mempunyaitingkat absensi yang rendah pada data kelompok ini, semua data informasi kategori lainnya diluar jenis kelamin tidak mterlihat berpengaruh dalam prediksi ini.
Sekarang kita lihat dengan menggunakan model Linier regression, model ini hanya menerima data yang non categorical atau continous saja. oleh karenanya data kategori biasanya dilakukan tranformasi yang tidak dijelaskan dalam kontek ini.
Dalam linier regresi kita hanya membatasi pada data kontinus dan numerik
Usia
Masa Kerja
Yang kita gunakan untuk memprediksi tingkat Absensi
##
## Call:
## lm(formula = AbsenceRate ~ Age + LengthService, data = MFGEmployees)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.3578 -0.8468 -0.0230 0.8523 5.1030
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.190213 0.068959 -75.27 <2e-16 ***
## Age 0.202593 0.001510 134.16 <2e-16 ***
## LengthService -0.085309 0.005652 -15.09 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.264 on 8162 degrees of freedom
## Multiple R-squared: 0.6887, Adjusted R-squared: 0.6886
## F-statistic: 9027 on 2 and 8162 DF, p-value: < 2.2e-16
Pada hasil ditunjukkan R kuadrat dari variabel prediktor sebesar 68% variansi tingkat absensi ditentukan oleh usia dan masa kerja.
kedua variabel ternyata sangat signifikan Pr(>|t|) of <2e-16. Hasil ini menunjukkan bahwa kedua variabel memang dapat dijadikan prediktor yang baik bagi tingkat absensi
Mari Kita Lihat Grafiknya:
##.Evaluasi dan Kritik terhadap Model
Kita sudah membangun model dengan menggunakan semua data pada 2015. Kita tidak tahu apakah model prediksi kita itu cukup sahih untuk mempredik kedepan….oleh karenanya kita akan membagi data 2015 menjadi 10 bagian secara acak, dimana 9 bagian sebagai training data dan 1 bagian menjadi testing data, semua data akan diterasi sebanyak 9 kali dan diuji berturut-turut.
Pertama adalah Model Linear Regression
## Loading required package: lattice
## Linear Regression
##
## 6124 samples
## 2 predictors
##
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 10 times)
## Summary of sample sizes: 5512, 5512, 5512, 5510, 5512, 5512, ...
## Resampling results:
##
## RMSE Rsquared
## 1.269351 0.688034
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
##
Dilihat dari R kuadrat yang nilai 0.688 ini berarti dengan sampling acak yang berbeda dari data dengan 10 cross validation akan menghasilkan hasil yang kurang lebih sama.
Kita uji decision tree
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info =
## trainInfo, : There were missing values in resampled performance measures.
## CART
##
## 6124 samples
## 2 predictors
##
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 10 times)
## Summary of sample sizes: 5512, 5512, 5512, 5510, 5512, 5512, ...
## Resampling results across tuning parameters:
##
## cp RMSE Rsquared
## 0.05970271 1.426833 0.6051728
## 0.08836732 1.555256 0.5308926
## 0.49450975 1.982064 0.4764278
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was cp = 0.05970271.
Kita lihat dengan decision tree setelah dilakukan 10 iterasi cross validasi tidak menunjukkan hasil sebagus yang pertama disini R kuadrat hanya mendekati 0.60
Pada kesempatan kedua kita akan gunakan data kategori dan numerik bersamaan
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info =
## trainInfo, : There were missing values in resampled performance measures.
## CART
##
## 6124 samples
## 7 predictors
##
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 10 times)
## Summary of sample sizes: 5512, 5512, 5512, 5510, 5512, 5512, ...
## Resampling results across tuning parameters:
##
## cp RMSE Rsquared
## 0.05970271 1.426833 0.6051728
## 0.08836732 1.555256 0.5308926
## 0.49450975 1.982064 0.4764278
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was cp = 0.05970271.
Ketika diuji 10 iterasi cross validation, R kuadrat berubah sedikit anngkanya tidak bergerak dari 0.60
Sejauh ini kita simpulkan model algoritma Linier regression lebih baik untuk memprediksi tingkat absensi
##.Mendeploy Model
Setelah kita menguji model dan memilih model algoritma yang tepat, kita akan coba melakukan prediksi
Apakah kita memprediksi Tingkat Absensi tahun depan 2016?
Mari kita prediksi tingkat absensi tahun 2016 dengan menggunakan model 2015
Kita asumsikan terlebih dahulu bahwa tidak ada yang berhenti dan tidak ada seorangpun yang masuk ke perusahaan, maka kita bisa menambahkan nilai 1 pada usia dan masa kerja untuk tahun 2016
untuk dapat menghitung perkiraan 2106 kita perlu tahu perbandingan nilai rerata absensi
## [1] 3.017264
## [1] 2.907265
Angka yang pertama adalah rerata prediksi tingkat absensi 2016, dan baris yang kedua adalah angka tngkat absensi pada tahun 2015.
Jadi seberapa prediksi ini baik atau sahih?
Seperti telah dijelaskan diatas model ini dapat memprediksi sebesar 68% dengan menggunakan model linier regression menggunakan prediktor usia dan masa kerja
Apakah kita bisa menurunkan tingkat absensi?
Dari data-data diatas kita dapatkan adalah menurunkan tingkat usia dan masa kerja yang bertambah akan menurunkan tingkat absensi.
tentunya, gejala absenteism sesuatu yang kompleks, ke depannya harus diperhatikan lagi pengukuran dan data data pendukung lainnya, dan data yang dipergunakan dalam latihan ini hanya untuk ilustrasi saja.
Tujuan dari tulisan ini adalah :
Menunjukkan R statistics dapat digunakan dalam mengerjakan people analytics
Memperlihatkan People Analytics sebagai aplikasi data science untuk People (HR) Management dan Pengambilan Keputusan
Memperlihatkan adanya tools yang Free dan open source untuk memulai perjalanan dan
petualangan dalam people Analytics
Tibalah waktunya untuk mengaplikasikan data science dalam pengelolaan sumber daya manusia, dan menjadikan budaya “Data-Driven”.
Selamat menikmati Perjalanan tersebut