Packages
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(car)
## Loading required package: carData
library(plotrix)
library(aod)
## Warning: package 'aod' was built under R version 4.3.2
Data
Data yang digunakan adalah data sekunder yang terdiri dari 7 peubah dan berjumlah 1130 baris.
| Peubah | Keterangan | Tipe Peubah |
| Event | Kejadian Turnover | Numerik (0 dan 1) |
| Age | Usia | Numerik |
| Gender | Jenis Kelamin | Kategorik (Male dan Female) |
| Way | Transportasi | Kategorik (bus. car, foot) |
Dari 7 peubah yang ada, yang digunakan dalam analisis hanya 4 peubah yaitu Event sebagai peubah respon (Y) dan Geder, Way, dan Age sebagai peubah penjelas ataupun dummy.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
data1 <- readxl::read_xlsx("C:\\Users\\Diva\\Documents\\SEMESTER 5\\padk\\p14\\Data tugas 2 sesi UAS.xlsx")
data1$`event (Y)` <- as.factor(data1$`event (Y)`)
data1$gender<- as.factor(data1$gender)
data1$way<- as.factor(data1$way)
data1$age <- as.integer(data1$age)
str(data1)
## tibble [1,129 × 4] (S3: tbl_df/tbl/data.frame)
## $ event (Y): Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
## $ gender : Factor w/ 2 levels "f","m": 2 2 1 1 2 1 1 1 1 1 ...
## $ age : int [1:1129] 35 33 35 35 32 42 42 28 29 30 ...
## $ way : Factor w/ 3 levels "bus","car","foot": 1 1 1 1 1 1 1 1 1 1 ...
head(data1)
## # A tibble: 6 × 4
## `event (Y)` gender age way
## <fct> <fct> <int> <fct>
## 1 1 m 35 bus
## 2 1 m 33 bus
## 3 1 f 35 bus
## 4 1 f 35 bus
## 5 1 m 32 bus
## 6 1 f 42 bus
Dari output di atas, dapat terlihat bahwa secara default R memlih referensi peubah Event adalah 0 (tidak turnonver), referensi peubah way adalah bus, dan referensi peubah Sex adalah “female”.
Eksplorasi Data
Persentase kejadian turnover dan tidak turnover
turnover = table(data1$`event (Y)`)
turnover
##
## 0 1
## 558 571
kat = c("Turnover = ","Tidak Turnover = ")
persentase = round(turnover/sum(turnover)*100)
kat = paste(kat,persentase)
kat = paste(kat,'%',sep ='')
pie3D(turnover,labels=kat,col=c('light blue','blue'), main = "Persentase Kejadian Turnover")
Dari grafik di atas terlihat bahwa persentase tidak terjadinya Turnover lebih banyak daripada persentasae terjadinya Turnover meskipun hanya terdapat sedikit perbedaan.
Density plot
library(ggplot2)
ggplot(data1, aes(x = age, fill = factor(`event (Y)`))) +
geom_density(alpha = 0.5) +
labs(title = "Sebaran Data Peubah Umur",
subtitle = "Density Plot Data Peubah Umur",
x = "Age",
fill = "Kejadian")
Sebaran umur secara eksploratif terlihat menjulur kanan. Terdapat puncak pada density plot yang cukup jelas yaitu pada rentang umur 25-30 tahun, artinya penumpang kebanyakan berumur 25-35 tahun. Terlihat pada area yang diberi lingkaran, yaitu pada usia 35 tahun lebih banyak yang tidak turnover , sedangkan pada usia 25 tahun banyak karyawan yang mengalami turnover. Kemudian pada usia di sekitar 37-an juga kembali lebih banyak yang mengalami turnover daripada yang tidak turnover.
Diagram batang kejadian berdasarkan jenis kelamin
counts = table(data1$`event (Y)`,data1$gender)
barplot(counts, main="Sebaran Kejadian Turnover berdasarkan Jenis Kelamin",
xlab="data", col=c("black","grey"),legend=rownames(counts), beside=TRUE)
Berdasarkan diagram batang di atas, terlihat bahwa perempuan lebih
banyak mengalami turnover, sedangkan laki-laki sebaliknya. Serta dapat
dilihat pada data yang digunakan sebagian besar merupakan karyawan
perempuan.
Analisis Regresi Logistik
Model Regresi Logistik
Model pada kasus ini adalah sebagai berikut:
\[logit[π(x)]=α+β_1c_1+β_2c_2+β_3d+β_4x\]
Dengan α sebagai intersep, β sebagai koefisien tiap peubah, c sebagai peubah way. c1 bernilai 1 untuk car dan bernilai 0 untuk lainnya. c2 bernilai 2 untuk foot, bernilai 0 untuk lainnya. D sebagai peubah sex, bernilai 1 untuk laki-laki dan 0 untuk lainnya. x sebagai peubah Age.
model1<-glm(`event (Y)`~.,data=data1,family=binomial(link="logit"))
summ <- summary(model1)
summ
##
## Call:
## glm(formula = `event (Y)` ~ ., family = binomial(link = "logit"),
## data = data1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.555087 0.275501 2.015 0.04392 *
## genderm -0.094737 0.140592 -0.674 0.50041
## age -0.014941 0.008651 -1.727 0.08416 .
## waycar 0.062777 0.136322 0.461 0.64515
## wayfoot -0.622220 0.206842 -3.008 0.00263 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1565.0 on 1128 degrees of freedom
## Residual deviance: 1551.3 on 1124 degrees of freedom
## AIC: 1561.3
##
## Number of Fisher Scoring iterations: 4
Dari output di atas, dapat terlihat bahwa hanya peubah age dan wayfoot yang berpengaruh terhadap model. Sehingga didapat modelnya yaitu:
\[logit[π(x)]=0,555087-0,014941x+0,062777c1-0,622220c2\]
Pendugaan peluang peubah kategorik
Untuk menduga peluang peubah kategorik, peubah numerik akan dianggap konstan. Dalam hal ini, kita akan menganggap peubah Age konstan di nilai rata-ratanya, yaitu sebesar 29.65345 tahun. Nilai ini didapatkan dengan syntax:
avg_age <- mean(data1$age)
avg_age
## [1] 31.06377
Peluang peubah kategorik didapatkan dengan fungsi berikut:
\[π(x)=exp(logit[π(x)]/(1+exp(logit[π(x)]))\]
dapat dibuat fungsi di r sebagai berikut:
p <- function(logit){
exp(logit)/(1+exp(logit))
}
dengan fungsi logitnya:
p <- function(logit){
exp(logit)/(1+exp(logit))
}
alp <- summ$coefficients[1,1]
b1 <- summ$coefficients[2,1]
b2 <- summ$coefficients[3,1]
b3 <- summ$coefficients[4,1]
b4 <- summ$coefficients[5,1]
logit_x <- function(c1,c2,d){
alp+b1*c1+b2*c2+b3*d+b4*avg_age
}
sehingga, dapat didapatkan peluang masing-masing peubah kategoriknya:
peubah=c("Bus_Pria","Bus_Wanita","Car_Pria","Car_Wanita","Foot_Pria","Foot_Wanita")
logit=c(logit_x(0,0,1),logit_x(0,0,0),logit_x(1,0,1),logit_x(1,0,0),logit_x(0,1,1),logit_x(0,1,0))
peluang=c(p(logit_x(0,0,1)),p(logit_x(0,0,0)),p(logit_x(1,0,1)),p(logit_x(1,0,0)),p(logit_x(0,1,1)),p(logit_x(0,1,0)))
kejadian=ifelse(peluang>0.5,"Turnover","Tidak turnover")
data.frame(peubah, logit, peluang, kejadian)
## peubah logit peluang kejadian
## 1 Bus_Pria -18.71062 7.483061e-09 Tidak turnover
## 2 Bus_Wanita -18.77340 7.027735e-09 Tidak turnover
## 3 Car_Pria -18.80536 6.806683e-09 Tidak turnover
## 4 Car_Wanita -18.86814 6.392514e-09 Tidak turnover
## 5 Foot_Pria -18.72557 7.372086e-09 Tidak turnover
## 6 Foot_Wanita -18.78834 6.923514e-09 Tidak turnover
| Peubah | Logit | Peluang | Turnover |
| Bus_pria | -18,71062 | 7,483016e-09 | Tidak turnover |
| Bus_wanita | -18,77340 | 7,027735e-09 | Tidak turnover |
| Car_pria | -18,80536 | 6,806683e-09 | Tidak turnover |
| Car_wanita | -18,86814 | 6,392514e-09 | Tidak turnover |
| Foot_pria | -18,72557 | 7,372086e-09 | Tidak turnover |
| Foot_wanita | -18,78834 | 6,923514e-09 | Tidak turnover |
Dari tabel di atas, dapat terlihat bahwa pada umur 31 tahunan, perempuan dan laki-laki memiliki peluang untuk tidak turnover semua.
Perhitungan Odds Rasio
Data Kategorik
Untuk dapat mengetahui perbandingan antara peubah kategorik lain dengan peubah kategorik referensi, kita perlu menghitung nilai eksponensial dari masing-masing parameter peubah dummy-nya. Misalnya untuk membandingkan dugaan terjadinya turnover pada laki-laki dibanding perempuan, kita dapat mengeksponensialkan nilai b1 yang merupakan koefisien bagi peubah dummy sex. Cara tadi diulang pada setiap peubah dummy sehingga didapatkan nilai tabel sebagai berikut :
Male vs Female
data.frame(Gender="Laki-laki",Odds_Rasio=exp(b1))
## Gender Odds_Rasio
## 1 Laki-laki 0.9096122
| Gender | Odds ratio |
|---|---|
| Laki-laki | 0,9096122 |
Interpretasi : untuk nilai peubah lainnya tetap, dugaan odds bagi seorang laki-laki untuk turnover adalah 0,9096122 kali dibanding perempuan.
Way
data.frame(Way=c("Car", "Foot"),Odds_Rasio=c(exp(b3),exp(b4)))
## Way Odds_Rasio
## 1 Car 1.0647897
## 2 Foot 0.5367517
| Way | Odds rasio |
|---|---|
| Car | 1,0647897 |
| Foot | 0,5367517 |
Interpretasi Car:Untuk nilai peubah lainnya tetap, dugaan oddsbagi karyawan dengan transportasi car untuk turnover adalah 1,0647897 kali dibanding karyawan yang menggunakan transportasi bus.
Interpretasi Foot: Untuk nilai peubah lainnya tetap, dugaan odds bagi karyawan yang berjalan kaki untuk turnover adalah 0.5367517 kali dibanding karyawan yang menggunakan transportasi bus.
Data Numerik
Age : x vs x+1
Untuk dapat membandingkan nilai odds rasio data numerik, dalam hal ini Age, kita dapat membandingkan dua nilai Age dengan beda satu. Fungsi yang digunakan adalah sebagai berikut:
\[exp(β_4 )=OR=Odds(X=x+1)/(Odds(X=x)\]
data.frame("Age"=c("x+1"), Odds_Rasio=exp(b2))
## Age Odds_Rasio
## 1 x+1 0.98517
| Age | Odds rasio |
| X+1 | 0,98517 |
Interpretasi : Peluang terjadinya turnover karyawan akan menurun secara multiplikatif sebesar 0,15% untuk setiap kenaikan 1 tahun usia karyawan.
Uji Simultan - Likelihood Ratio
Hipotesis : \[H_0 ∶ β_1=β_2=β_3=β_4=0\] \[H_1 ∶ minimal ada satu β_i≠0\]
lrtest(model1)
## Likelihood ratio test
##
## Model 1: `event (Y)` ~ gender + age + way
## Model 2: `event (Y)` ~ 1
## #Df LogLik Df Chisq Pr(>Chisq)
## 1 5 -775.66
## 2 1 -782.49 -4 13.653 0.008487 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
| Resid. Df | Resid. Dev | Df | Deviance | Pr(>Chi) |
| 5 | -775,66 | NA | NA | NA |
| 1 | -782,49 | -4 | 13.653 | 0,008487 |
Berdasarkan hasil uji di atas, p-value < α(0,05) sehingga tolak H0. Dapat disimpulkan bahwa secara bersama-sama peubah way, age, dan gender berpengaruh signifikan terhadap terjadinya kejadian turnover pada taraf nyata 5%.
Uji Parsial
Pengujian bagi parameter βi menggunakan uji Wald dengan hipotesis sebagai berikut: \[H_0 ∶ β_i=0\] \[H_1 ∶ β_i≠0\]
wald.test(Sigma =vcov(model1), b = coef(model1),Terms = 2)
## Wald test:
## ----------
##
## Chi-squared test:
## X2 = 0.45, df = 1, P(> X2) = 0.5
wald.test(Sigma =vcov(model1), b = coef(model1),Terms = 3)
## Wald test:
## ----------
##
## Chi-squared test:
## X2 = 3.0, df = 1, P(> X2) = 0.084
wald.test(Sigma =vcov(model1), b = coef(model1),Terms = 4:5)
## Wald test:
## ----------
##
## Chi-squared test:
## X2 = 10.3, df = 2, P(> X2) = 0.0058
| df | Chisq | P-chisq | |
| Gender | 1 | 0,45 | 0,5 |
| Age | 1 | 3,0 | 0,084 |
| Way | 2 | 10,3 | 0,0058 |
Dari output di atas, diperoleh p-value pada koefisien way lebih kecil dari α(0,05), didapat keputusan tolak H0. Dengan demikian dapat disimpulkan bahwa hanya penduga koefisien way yang berpengaruh signifikan terhadap perolehan nilai model.
Kesimpulan
Dari hasil analisis yang telah dilakukan, perempuan lebih berpotensi mengalami turnover daripada laki-laki. Jika dilihat berdasarkan peubah way, kesempatan turnover karyawan yang berangkat menggunakan mobil lebih tinggi daripada yang menggunakan bus, dan kemungkinan karyawan yang berjalan kaki untuk turnover lebih rendah daripada karyawan yang menggunakan bus.