#Tugas1 ### Checking the data
Source Code untuk Melihat Data pada Table:
tr <- read.csv("train.csv")
head(tr)
## Loan_ID Gender Married Dependents Education Self_Employed ApplicantIncome
## 1 LP001002 Male No 0 Graduate No 5849
## 2 LP001003 Male Yes 1 Graduate No 4583
## 3 LP001005 Male Yes 0 Graduate Yes 3000
## 4 LP001006 Male Yes 0 Not Graduate No 2583
## 5 LP001008 Male No 0 Graduate No 6000
## 6 LP001011 Male Yes 2 Graduate Yes 5417
## CoapplicantIncome LoanAmount Loan_Amount_Term Credit_History Property_Area
## 1 0 NA 360 1 Urban
## 2 1508 128 360 1 Rural
## 3 0 66 360 1 Urban
## 4 2358 120 360 1 Urban
## 5 0 141 360 1 Urban
## 6 4196 267 360 1 Urban
## Loan_Status
## 1 Y
## 2 N
## 3 Y
## 4 Y
## 5 Y
## 6 Y
Baris pertama dalam kumpulan data mendefinisikan tajuk kolom. Masing-masing header ini dijelaskan dalam tabel di atas. Sekarang, kita akan menjalankan fungsi ringkasan untuk melihat statistik dengan cepat:
summary(tr)
## Loan_ID Gender Married Dependents
## Length:614 Length:614 Length:614 Length:614
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Education Self_Employed ApplicantIncome CoapplicantIncome
## Length:614 Length:614 Min. : 150 Min. : 0
## Class :character Class :character 1st Qu.: 2878 1st Qu.: 0
## Mode :character Mode :character Median : 3812 Median : 1188
## Mean : 5403 Mean : 1621
## 3rd Qu.: 5795 3rd Qu.: 2297
## Max. :81000 Max. :41667
##
## LoanAmount Loan_Amount_Term Credit_History Property_Area
## Min. : 9.0 Min. : 12 Min. :0.0000 Length:614
## 1st Qu.:100.0 1st Qu.:360 1st Qu.:1.0000 Class :character
## Median :128.0 Median :360 Median :1.0000 Mode :character
## Mean :146.4 Mean :342 Mean :0.8422
## 3rd Qu.:168.0 3rd Qu.:360 3rd Qu.:1.0000
## Max. :700.0 Max. :480 Max. :1.0000
## NA's :22 NA's :14 NA's :50
## Loan_Status
## Length:614
## Class :character
## Mode :character
##
##
##
##
Sekarang mari kita lakukan perbaikan cepat pada beberapa variabel:
#setwd("C:\Users\Rizal\Downloads\Compressed\Kuliah\Semester 3\Metode Statistika\UTS")
tr <- read.csv(file="train.csv", na.strings=c("", "NA"), header=TRUE)
library(plyr)
tr$Dependents <- revalue(tr$Dependents, c("3+"="3"))
Sekarang, mari kita lihat lebih dekat data yang hilang:
## Loan_ID Gender Married Dependents
## 0 13 3 15
## Education Self_Employed ApplicantIncome CoapplicantIncome
## 0 32 0 0
## LoanAmount Loan_Amount_Term Credit_History Property_Area
## 22 14 50 0
## Loan_Status
## 0
##
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
##
## filter
## The following objects are masked from 'package:base':
##
## cbind, rbind
## Loading required package: colorspace
## Loading required package: grid
## VIM is ready to use.
## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues
##
## Attaching package: 'VIM'
## The following object is masked from 'package:datasets':
##
## sleep
##
## Variables sorted by number of missings:
## Variable Count
## Credit_History 0.081433225
## Self_Employed 0.052117264
## LoanAmount 0.035830619
## Dependents 0.024429967
## Loan_Amount_Term 0.022801303
## Gender 0.021172638
## Married 0.004885993
## Loan_ID 0.000000000
## Education 0.000000000
## ApplicantIncome 0.000000000
## CoapplicantIncome 0.000000000
## Property_Area 0.000000000
## Loan_Status 0.000000000
Dari grafik dan tabel, ada tujuh variabel yang datanya hilang. Sekarang, saatnya untuk melihat distribusi data. Kita akan mulai dengan variabel numerik: Jumlah Pinjaman dan Pendapatan Pemohon: Di bawah ini adalah histogram dan boxplot dari jumlah pinjaman dan variabel pendapatan pemohon:
## null device
## 1
##Tugas2 ##Univariate Di sini kita melihat bahwa ada beberapa nilai ekstrim di kedua variabel. Mari kita periksa juga apakah distribusi jumlah pinjaman pemohon dipengaruhi oleh tingkat pendidikan mereka:
## Warning in data(tr, package = "lattice"): data set 'tr' not found
## Warning: Removed 22 rows containing non-finite values (stat_density).
##Bivarite
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## `summarise()` has grouped output by 'class'. You can override using the `.groups` argument.
Kami mencatat bahwa lulusan memiliki lebih banyak outlier dan distribusi jumlah pinjaman mereka lebih luas. Sekarang mari kita lihat variabel kategori dalam dataset:
## null device
## 1
Jika kita melihat grafik Gender, kita melihat bahwa laki-laki memiliki lebih banyak catatan dan lebih dari setengah dari aplikasi pelamar telah disetujui. Ada lebih sedikit pelamar perempuan tetapi masih lebih dari setengah dari aplikasi mereka telah disetujui. Kami melihat grafik lain dengan pandangan yang sama untuk mengevaluasi kinerja masing-masing kategori dalam hal persetujuan aplikasi pinjaman.
Sekarang kami telah mengidentifikasi beberapa kesalahan dalam kumpulan data, kami perlu memperbaikinya sebelum melanjutkan analisis kami. Mari kita tinjau masalah:
Ada nilai yang hilang di beberapa variabel. Berdasarkan pentingnya variabel, kami akan memutuskan metode yang akan digunakan.
Melihat distribusi data, kami melihat bahwa ApplicantIncome dan LoanAmount memiliki outlier.
Memperbaiki outlier bisa jadi rumit. Sulit untuk mengetahui apakah itu disebabkan oleh kesalahan pengukuran, kesalahan saat merekam, atau jika outlier adalah anomali nyata. Jika kami memutuskan untuk menghapus catatan, kami harus mendokumentasikan alasan di balik keputusan ini.
Dalam kumpulan data ini, kita akan mengasumsikan bahwa nilai yang hilang adalah sistematis karena data yang hilang datang dalam variabel tertentu secara acak. Juga, kami mencatat bahwa nilai yang hilang ada pada data numerik dan kategorikal, oleh karena itu, kami akan menggunakan paket mouse di R. Paket ini membantu dalam memasukkan nilai yang hilang dengan nilai data yang masuk akal. Nilai-nilai ini disimpulkan dari distribusi yang dirancang untuk setiap titik data yang hilang. Dalam plot data yang hilang di atas, kami mencatat bahwa 0,78 data tidak kehilangan informasi apa pun, 0,07 tidak memiliki nilai Credit_History, dan sisanya menunjukkan pola lain yang hilang.
The mice() function takes care of the imputing process:
##
## iter imp variable
## 1 1 LoanAmount Loan_Amount_Term Credit_History
## 1 2 LoanAmount Loan_Amount_Term Credit_History
## 2 1 LoanAmount Loan_Amount_Term Credit_History
## 2 2 LoanAmount Loan_Amount_Term Credit_History
## Warning: Number of logged events: 8
Penting untuk disebutkan bahwa tikus adalah singkatan dari beberapa imputasi dengan persamaan berantai. Argumen ‘m’ dalam fungsi menunjukkan berapa putaran imputasi yang ingin kita lakukan. Untuk kesederhanaan, saya akan memilih 2. Argumen ‘metode’ menunjukkan yang mana dari banyak metode untuk imputasi yang ingin kita gunakan. Saya memilih CART yang merupakan singkatan dari klasifikasi dan pohon regresi. Metode ini bekerja dengan semua tipe variabel, dan itulah mengapa saya memilihnya. Sekarang mari kita gabungkan data yang diperhitungkan ke dalam dataset asli kita. Kita dapat melakukan ini dengan menggunakan fungsi complete() :
tr <- complete(imputed_Data,2) #here I chose the second round of data imputation
Periksa data yang hilang lagi, kami perhatikan bahwa tidak ada data yang hilang setelah imputasi:
sapply(tr, function(x) sum(is.na(x)))
## Loan_ID Gender Married Dependents
## 0 13 3 15
## Education Self_Employed ApplicantIncome CoapplicantIncome
## 0 32 0 0
## LoanAmount Loan_Amount_Term Credit_History Property_Area
## 0 0 0 0
## Loan_Status
## 0
Saatnya memperlakukan nilai-nilai ekstrem. Melihat variabel LoanAmount, kami menduga bahwa nilai ekstrim dimungkinkan karena beberapa pelanggan, untuk beberapa alasan, mungkin ingin mengajukan jumlah pinjaman yang lebih tinggi. Kami akan melakukan transformasi log untuk menormalkan data:
## null device
## 1
Sekarang distribusi terlihat lebih dekat ke normal dan efek nilai ekstrim telah berkurang secara signifikan.
Datang ke ApplicantIncome, sebaiknya gabungkan ApplicantIncome dan Co-applicant sebagai pendapatan total dan kemudian lakukan transformasi log dari variabel gabungan.
kita akan menggunakan metode imputasi CART. Jika kita mengetahui bahwa nilai untuk suatu pengukuran berada dalam rentang tertentu, kita dapat mengisi nilai kosong dengan rata-rata pengukuran tersebut.
## null device
## 1
Kita melihat bahwa distribusinya lebih baik dan mendekati distribusi normal.
Sekarang saatnya untuk membuat langkah besar berikutnya dalam analisis kami yaitu membagi data menjadi set pelatihan dan pengujian.
Training set adalah subset dari data yang kita gunakan untuk melatih model kita tetapi test set adalah subset acak dari data yang diturunkan dari training set. Kami akan menggunakan set pengujian untuk memvalidasi model kami sebagai data yang tidak terduga.
Dalam data yang jarang seperti milik kami, mudah untuk menyesuaikan data. Overfit dalam istilah sederhana berarti bahwa model akan mempelajari set pelatihan yang tidak akan mampu menangani sebagian besar kasus yang belum pernah dilihat sebelumnya. Oleh karena itu, kami akan menilai data menggunakan set pengujian kami. Setelah kami membagi data, kami akan memperlakukan set pengujian seperti tidak ada lagi. Mari kita pisahkan datanya:
set.seed(42)
sample <- sample.int(n = nrow(tr), size = floor(.70*nrow(tr)), replace = F)
trainnew <- tr[sample, ]
testnew <- tr[-sample, ]