Analisis Regresi Logistik

DIVA NISFU MUSTIKA

2023-12-02

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.