Anda di halaman 1dari 31

Analisis Regresi Logistik

Farit Mochamad Afendi


08128592194; fmafendi@apps.ipb.ac.id

Departemen Statistika
Fakultas MIPA
IPB University

2020
Pengantar Regresi

Fitted Line Plot


 Upaya memahami hubungan pengaruh peubah penjelas 25
Consumption = 2.864 + 0.6082 Income

S 3.90390

terhadap peubah respon lewat persamaan regresi. 20


R-Sq
R-Sq(adj)
54.4%
52.8%

 Regresi linier: mengasumsikan peubah respon berupa

Consumption
15
peubah numerik yang dapat mengambil nilai berapapun.
10

0
5 10 15 20 25
Income

 Pada kenyataannya, peubah respon tidak seperti ini:


o Respon terhadap tawaran promosi (menolak, menerima)
o Merek HP yang dipilih (iphone, Samsung, Oppo, ...)
o Status terhadap COVID-19 (sehat, sakit tanpa gejala, sakit
dengan gejala tanpa bantuan ventilator, sakit dibantu ventilator)
o Banyaknya penderita Covid-19 (peubah cacahan)
o Lama penggunaan lampu
o Pengeluaran untuk membeli mobil (tidak semua orang membeli
mobil)

Dept. Statistika – IPB University 2


Respon Biner

Dept. Statistika – IPB University 3


Respon Biner

NOT
DEFAULT
DEFAULT

Dept. Statistika – IPB University 4


Respon Biner Regresi Linier

Fitted Line Plot


Purchased = - 0.7154 + 0.02849 Age

1.0

0.8
tidak sesuai
dengan perilaku
X
0.6

Purchased
0.4 peubah respon
Respon: 0.2
- Menerima (1)
Y 0.0
- Menolak (0)
-0.2

20 30 40 50 60
Age

Profil:
Y awal
 Jenis kelamin
0 1
 Umur
 Pendapatan X
 Pendidikan Y sebagai
 Domisili peluang
{P(Y = 1)} 0 1
?

Y*  (-,)
- 

Dept. Statistika – IPB University 5


Mengapa Regresi Linier tidak dapat digunakan untuk
Memodelkan Peubah Respon Biner?

● The response (Y) is NOT normally distributed


● The variability of Y is NOT constant
● Variance of Y depends on the expected value of Y
● The model must produce predicted/fitted probabilities that
are between 0 and 1
● Linear models produce fitted responses that vary from -∞ to

Dept. Statistika – IPB University 6


Logit – Ide Dasar
Y awal 0 1   = P(Y = 1)
 Transformasi
o Logit() = Log(/(1- )) = X + 
Y sebagai o Y* = X + 
peluang 0 1  Berbasiskan sebaran logisitik
{P(Y = 1)}  Fungsi hubung F() = Log(/(1- )) disebut fungsi
hubung LOGIT (logistic unit)

Odds Y  Biasanya, untuk keperluan klasifikasi, performa


0 
LOGIT dan PROBIT hampir sama

  = exp(X) / (1+ exp(X))


Y’  (-,)
Log Rasio odds - 

Dept. Statistika – IPB University 7


Logit – Prediksi

 Transformasi
o Logit() = Log(/(1- )) = X + 
o Y* = X + 

Umur Y*  Y

18 -8.044 + -4.64 .010 titik potong


(Y*) 0
0.1889*Umur 0.5
42.5 0.02 .496 0

60 3.29 .964 1

skor di
 = P(Y=1)
sebaran
peluang membeli
logistik

Dept. Statistika – IPB University 8


Rasio Odds
 Umur  40 tahun
An odds ratio indicates how much are o P(beli) = 50/250 = 0.2
likely, with respects to odds, a certain o P( beli) = 200/250 = 0.8
event occurs in one group relative to its o Odds Membeli = P(beli) / P( beli) =
occurrence in another group. 0.2/0.8 = 0.25

 Umur > 40 tahun


o P(beli) = 100/150 = 0.67
Status Pembelian o P( beli) = 50/150 = 0.33
Kategori o Odds Membeli = P(beli) / P( beli) =
Tidak Membeli Total
Umur 0.67/0.33 = 2.0
membeli
 40 tahun 200 50 250  Rasio Odds = Odds1 / Odds2 = 0.25/2.0 =
0.125
> 40 tahun 50 100 150 o Odds umur  40 tahun untuk membeli
Total 250 150 400 hanya seperdelapan dari umur > 40
tahun

Dept. Statistika – IPB University 9


 Interpretasi nilai

● Odds
  akanmeningkatsecarasebesaruntuksetiapkenaikan 1
unit X
● : odds ratio (OR)

Dept. Statistika – IPB University 10


 Interpretasi nilai
Umur Y*  Y

18 -8.044 + -4.64 .010 0


0.1889*Umur (Y*) titik potong 0.5
42.5 0.02 .496 0

60 3.29 .964 1

 Persamaan regresi: -8.044 + 0.1889*Umur


 Setiap perbedaan umur konsumen setahun ada
perbedaan skor di sebaran logistik sebesar 0.1889
 Dapat juga dihitung sebagai rasio odds:
exp(0.1889) = 1.21
 Konsumen yang lebih tua setahun odds-nya untuk
membeli adalah 1.21 konsumen yang lebih muda

Dept. Statistika – IPB University 11


Kualitas Model Regresi Logistik

False Negative (FN) True Positive (TP)


titik potong 0.5, terkait prediksi
kategori respon
- P(Y=1) >= 0.5  membeli
- P(Y=1) >= 0.5  tidak membeli
True Negative (TN) False Positive (FP)

N = FN + TP + TN + FP
Overall correct classification = (TP + TN) / N
prediksi tidak membeli prediksi membeli Sensitivity = TP / (TP + FN)
Specificity = TN / (TN + FP)

Dept. Statistika – IPB University 12


Kualitas Model Regresi Logistik

 Kurva ROC dari suatu model, diperoleh dengan


mencoba seluruh titik potong
 Luas area di bawah kurva ROC (area under curve
AUC) menggambarkan kemampuan klasifikasi
 AUC bernilai antara 0-1: 0 buruk; 1 sempurna

Dept. Statistika – IPB University 13


Kualitas Model Regresi Logistik

• Hendaknya dilakukan lewat validasi: mencobakan model yang diperoleh


pada data lain yang tidak digunakan dalam membangun model tersebut
o Training set: data yang digunakan dalam membangun model
o Testing set: data yang tidak digunakan dalam membangun model

Dept. Statistika – IPB University 14


Ilustrasi – Data Set

library("openxlsx")
setwd("D:/FMA/2020/Online/Logistik")
Mydt <- read.xlsx("Social_Network_Ads.xlsx")

 Suatu studi dilakukan untuk mengkaji keefektifan iklan lewat media sosial. Sebagai respon
adalah status pembelian produk yang diiklankan (Purchased: (1) membeli, (0) tidak membeli).
 Sebagai peubah penjelas adalah beberapa profil konsumen, yaitu:
o Jenis kelamin (Gender: Male-Female)
o Umur (Umur dalam tahun)
o Pendapatan (EstimatedSalary dalam ribu rupiah)

Dept. Statistika – IPB University 15


Ilustrasi – Deskripsi Data
# 1.(Age&Salary)
summary(Mydt[,3:4])
sapply(Mydt[3:4], sd)

# 2.Tabulasi Gender
table(Mydt$Gender)
table(Mydt$Gender)/nrow(Mydt)*100

# 3. Tab Purchased
table(Mydt$Purchased)
table(Mydt$Purchased)/nrow(Mydt)*100

# 4. crosstab Gender, Purchased


table(Mydt$Gender, Mydt$Purchased)

Dept. Statistika – IPB University 16


Ilustrasi – Deskripsi Data
> summary(Mydt[,3:4]) > # 2.Tabulasi Gender
Age EstimatedSalary > table(Mydt$Gender)
Min. :18.00 Min. : 1700
1st Qu.:29.75 1st Qu.: 4800 Female Male
Median :37.00 Median : 7800 204 196
Mean :37.66 Mean : 7754 > table(Mydt$Gender)/nrow(Mydt)*100
3rd Qu.:46.00 3rd Qu.: 9800
Max. :60.00 Max. :16700 Female Male
> sapply(Mydt[3:4], sd) 51 49
Age EstimatedSalary > # 3. Tab Purchased
10.48288 3788.55709 > table(Mydt$Purchased)

0 1
257 143
> table(Mydt$Purchased)/nrow(Mydt)*100

0 1
64.25 35.75

Dept. Statistika – IPB University 17


Ilustrasi – Deskripsi Data

Boxplot (Purchased, Age) Boxplot (Purchased, Estimated Salary)

60

15000

50

Estimated Salary
10000
Age

40

30
5000

20

0 1 0 1
Purchased Purchased

ggplot(Mydt, aes(x=as.factor(Purchased), y=Age)) + ggplot(Mydt, aes(x=as.factor(Purchased), y=EstimatedSalary)) +


geom_boxplot(fill = c("#AFEEEE","#F5DEB3"), outlier.colour = geom_boxplot(fill = c("#E9967A","#8FBC8F"), outlier.colour =
"darkred") + "darkred") +
xlab("Purchased") + xlab("Purchased") +
ylab("Age")+ ylab("Estimated Salary")+
theme_minimal()+ theme_minimal()+
theme(legend.position="none") theme(legend.position="none")

Dept. Statistika – IPB University 18


Ilustrasi – Deskripsi Data
# Summary Age & Salary for each Purchased
library(psych)
describeBy(Mydt[,3:4], Mydt$Purchased)

Descriptive statistics by group


group: 0
vars n mean sd median trimmed mad min max range skew
Age 1 257 32.79 7.99 34 32.71 8.90 18 59 41 0.21
EstimatedSalary 2 257 6731.91 2706.03 6800 6726.09 2816.94 1700 15700 14000 0.18
kurtosis se
Age -0.17 0.5
EstimatedSalary 0.19 168.8
--------------------------------------------------------------------
group: 1
vars n mean sd median trimmed mad min max range
skew
Age 1 143 46.39 8.61 47 46.73 10.38 27 60 33
-0.28
EstimatedSalary 2 143 9591.61 4673.09 10000 9631.30 6819.96 2200 16700 14500
-0.15
kurtosis se
Age -0.76 0.72
EstimatedSalary -1.37 390.78

Dept. Statistika – IPB University 19


Ilustrasi – Deskripsi Data

> table(Mydt$Gender, Mydt$Purchased)

0 1
Female 127 77
Male 130 66

Dept. Statistika – IPB University 20


Ilustrasi – Persiapan Data
● Cek bias peubah respon (Purchased)
0 : tidak membeli 1 : membeli

Proporsi tidak seimbang

● Pembagian data menjadi data training dan data testing

Membentuk data
training dengan
proporsi purchased
class yang seimbang

Dept. Statistika – IPB University 21


Ilustrasi – Membangun Model (Training)

Model

Ukuran
kecocokan
model

Coefficients :
P-value
perubahan log
odds
peubah respon
untuk kenaikan
1 satuan
peubah
penjelas

Dept. Statistika – IPB University 22


Ilustrasi – Membangun Training Model dengan Menghilangkan Peubah
Penjelas yang Tidak Signifikan

• Dampak peubah bebas


terhadap logit(π), cateris Semua peubah
paribus penjelas signifikan
• Setiap perbedaan umur 1
tahun berbeda logit (π)
0.2179
• Setiap perbedaan
pendapatan 1 juta
berbeda logit (π)
0.0003081

Dept. Statistika – IPB University 23


Ilustrasi – Penghitungan Odds Ratio

• Konsumen yang berusia 1 tahun lebih tua memiliki odds untuk


membeli 1.24 kali dibandingkan konsumen yang lebih muda
• Odds untuk pendapatan :
o Perbedaan Rp 1000: exp(0.0003081) =1.0003081
o Perbedaan Rp 1 juta: exp(0.0003081*1000) = 1.36
• Konsumen dengan pendapatan lebih banyak 1 juta memiliki
odds untuk membeli 1.36 kali

Dept. Statistika – IPB University 24


Ilustrasi – Prediksi peluang dan klasifikasi
#----Predict----
# predict function: will predict the log(odds) of the Y variable
pdc.test = predict(logit.Mod, Test.dt, type = "response")
pdc.train = predict(logit.Mod, Tr.dt, type = "response")

plot(Tr.dt$Age,pdc.train)
plot(Tr.dt$EstimatedSalary,pdc.train)

klas.test <- factor(ifelse(pdc.test > 0.5, 1, 0),


levels = 0:1, labels = c("Tidak", "Tertarik"))
act.test <- factor(ifelse(Test.dt$Purchased == 1, 1, 0),
levels = 0:1, labels = c("Tidak", "Tertarik"))

library(caret)
confusionMatrix(klas.test, act.test,positive="Tertarik")

Dept. Statistika – IPB University 25


Dept. Statistika – IPB University 26
Ilustrasi – Evaluasi klasifikasi
> confusionMatrix(klas.test, act.test,positive="Tertarik")
Confusion Matrix and Statistics

Reference
Prediction Tidak Tertarik
Tidak 111 2
Tertarik 18 13

Accuracy : 0.8611
95% CI : (0.7937, 0.9131)
No Information Rate : 0.8958
P-Value [Acc > NIR] : 0.9283843

Kappa : 0.4942
Mcnemar's Test P-Value : 0.0007962

Sensitivity : 0.86667
Specificity : 0.86047
Pos Pred Value : 0.41935
Neg Pred Value : 0.98230
Prevalence : 0.10417
Detection Rate : 0.09028
Detection Prevalence : 0.21528
Balanced Accuracy : 0.86357

'Positive' Class : Tertarik

Dept. Statistika – IPB University 27


klas06.test <- factor(ifelse(pdc.test > 0.6, 1, 0),
levels = 0:1, labels = c("Tidak", "Tertarik"))
confusionMatrix(klas06.test, act.test,positive="Tertarik")

> confusionMatrix(klas06.test,
act.test,positive="Tertarik")
Confusion Matrix and Statistics

Reference
Prediction Tidak Tertarik
Tidak 120 4
Tertarik 9 11

Accuracy : 0.9097
95% CI : (0.8506, 0.9511)
No Information Rate : 0.8958
P-Value [Acc > NIR] : 0.3526

Kappa : 0.5784
Mcnemar's Test P-Value : 0.2673

Sensitivity : 0.73333
Specificity : 0.93023
Pos Pred Value : 0.55000
Neg Pred Value : 0.96774
Prevalence : 0.10417
Detection Rate : 0.07639
Detection Prevalence : 0.13889
Balanced Accuracy : 0.83178

'Positive' Class : Tertarik

Dept. Statistika – IPB University 28


Ilustrasi – Sensitivity-Specificity
> library(ROCR)
> pred <- prediction(pdc.test, Test.dt$Purchased)
> senspec <- performance(pred, measure="tpr", x.measure="tnr")
> plot(senspec@alpha.values[[1]],senspec@x.values[[1]],xlab="Cutoffs",
ylab="Sensitivity/Specificity",type='l',col='red')
> lines(senspec@alpha.values[[1]],senspec@y.values[[1]],col='blue')
> legend("bottom",
c("Sensitivity","Specifivity"),
col=c("red","blue"),
lty=1,lwd=1,cex=0.8,
inset=0.02,
box.lty=0
)

Dept. Statistika – IPB University 29


Ilustrasi – ROC-AUC

> pred <- prediction(pdc.test,


Test.dt$Purchased)
> roc <- performance(pred, measure="tpr",
x.measure="fpr")
> auc <- performance(pred, 'auc')
> AUC <- auc@y.values[[1]]

> plot(roc, col="orange", lwd=2)


> lines(x=c(0, 1), y=c(0, 1), col="red",
lwd=2)
> text(0.6, 0.2, paste0("AUC = ",
round(AUC,3)) )

Dept. Statistika – IPB University 30


Terima Kasih

31

Anda mungkin juga menyukai