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.

Membangun Model

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 Trees

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.

Linear Regression

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.

Penutup

Tujuan dari tulisan ini adalah :

Tibalah waktunya untuk mengaplikasikan data science dalam pengelolaan sumber daya manusia, dan menjadikan budaya “Data-Driven”.

Selamat menikmati Perjalanan tersebut