Blogroll

halo
Searching...
Sabtu, 21 Januari 2017

[R] Tenggelamnya Kapal Titanic dan Hal yg mempengaruhi Selamat atau tidaknya Penumpang (Regresi Logistik)

20.55




Kali ini bakal ku-share salah satu analisis data yang berada di Kaggle (www.kaggle.com). Analisis data kali ini bertemakan Tenggelamnya kapal Titanic, yang tentu kita semua tahu dengan filmnya yang terkenal itu. Tujuan analisis data ini untuk mengetahui faktor apa saja yang menentukan bertahan hidup atau tidaknya seorang penumpang. Dibawah ini merupakan keterangan dari variabel yang tersedia pada data.  

VARIABLE DESCRIPTIONS:
survival        Survival
                (0 = No; 1 = Yes)
pclass          Passenger Class
                (1 = 1st; 2 = 2nd; 3 = 3rd)
name            Name
sex             Sex
age             Age
sibsp           Number of Siblings/Spouses Aboard
parch           Number of Parents/Children Aboard
ticket          Ticket Number
fare            Passenger Fare
cabin           Cabin
embarked        Port of Embarkation
                (C = Cherbourg; Q = Queenstown; S = Southampton)


Sesuai dengan tujuan, tentu variabel survival yang bertipe nominal menjadi variabel dependent. Sedangkan untuk variabel lainnya dapat dijadikan variabel independent.

Nah, melihat tipe data dari variabel dependent, tentu kita tidak bisa menggunakan analisis regresi biasa. Salah satu alat analisis yang bisa digunakan untuk data tersebut adalah Analisis Regresi Logistik.

Regresi Logistik merupakan alat analisis yang dikhususkan untuk tipe variabel dependentnya kategorik. Sedangkan untuk variabel independentnya bisa kategorik atau numeric tanpa harus melihat distribusi datanya. Akan tetapi diperlukan asumsi bahwa tidak terjadi Multikolinieritas pada variabel independent.

Nah, mari kita lakukan analisisnya dengan menggunakan R. Diawali dengan mengeset directori dan import dataset penumpang kapal titanic-nya, dengan script di bawah ini.

 ## Set Directory  
 setwd("D:/data/blog/Reglog")  
 ## Import Dataset Titanic  
 mydata <- read.table("D:/data/blog/Reglog/penumpangtitanic.csv", header=TRUE,   
           sep=",", row.names="PassengerId")  

Lalu dilakukan penghapusan beberapa variabel yang dalam analisis sederhana ini tidak akan dipakai. Variabel itu adalah Name (3), Ticket (8), dan Cabin (10). Penghapusan ini dilakukan dengan script di bawah ini.

 ## Menghapus beberapa kolom yang tidak dipakai pada model ini  
 mydata2 <- mydata[,-c(3,8,10)]  

Setelah itu, lakukan analisis Regresi Logistik (khusus jumlah kategorik var dependent 2), disertai pemilihan model terbaik memakai metode Backward, dengan script di bawah ini.

 ## Membuat model regresi logistik  
 fit1 <- glm(Survived ~ . , family = binomial(logit), data = mydata2, na.action = na.exclude)  
 summary(fit1)  
 ## membuat model regresi logistik dengan seleksi metode backward  
 fit2 <- step(fit1,direction="backward",trace=FALSE)  
 summary(fit2)  

Output akhir dari script tersebut dapat dilihat di bawah ini.

Tentu jangan lupa bahwa perlu kita mengecek apakah terjadi multikolinieritas pada model yang sudah dibuat. Nah, untuk melakukan itu bisa dilakukan dengan script di bawah.

 ## Melihat Multicolinearity, jika GVIF (General VIF) dari variabel lebih dari 5  
 ## hapus variabel itu  
 library(car)  
 vif(fit2)  
 ## karena GVIF tidak lebih dari 5 untuk semua variabel,  
 ## maka tidak ada multicolinearity  

Dengan hasil output di bawah ini, dapat dinyatakan bahwa tidak terjadi multikolinieritas. Dikarenakan tidak ada nilai GVIF yang lebih dari 5 untuk semua variabel independent.

Untuk melihat akurasi dari model yang sudah dibuat, dapat dilakukan dengan script di bawah. Akurasi yang didapat adalah sebesar 0,8002245.

 ## Melihat Performance Model  
 library(ROCR)  
 fit2preds <- predict(fit2,newdata=mydata2,type="response")  
 fit2perf2 <- performance(fit2pred,"acc")  
 ## pakai cut off point = 0.5  
 accuracy <- fit2perf2@y.values[[1]][max(which(fit2perf2@x.values[[1]] >= 0.5))]  
 accuracy  
 ## accuracy == 0.8002245  

Semoga postingan kali ini menarik dan bermanfaat.

1 komentar:

Anonim mengatakan...

Jelasin cara baca persamaan hasil akhirnya donkzzzzzzzzzzzz :-?