Kuis ini merupakan bagian dari proses penilaian Algoritma Academy. Selamat anda sudah menyelesaikan materi Data Visualization! Kami akan melakukan penilaian berupa kuis untuk menguji materi yang sudah dipelajari. Pengerjaan kuis diharapkan dapat dilakukan di dalam kelas. Silakan hubungi tim instruktur kami jika Anda melewatkan kesempatan untuk mengambilnya di kelas.
Kita akan menganalisa data dari Kiva, sebuah
organisasi non-profit yang membantu masyarakat untuk meminjam uang
dengan model P2P (peer-to-peer). Import data yang ada dari
loan_kiva.csv. Data tersebut memiliki 165,040 baris dengan
14 variabel, terdiri dari permintaan pinjaman yang tercatat pada tahun
2015.
Pertama, import dan baca data tersebut ke dalam R.
# Your code here
kiva = read.csv("loan_kiva.csv")
head(kiva)
## id funded_amount loan_amount activity sector
## 1 823048 450 450 Butcher Shop Food
## 2 823138 200 200 Food Production/Sales Food
## 3 823051 175 175 Fruits & Vegetables Food
## 4 823143 675 675 Fishing Food
## 5 823154 1450 1450 Agriculture Agriculture
## 6 823117 250 250 Liquor Store / Off-License Food
## country region currency partner_id
## 1 Philippines Kabankalan, Negros Occidental PHP 145
## 2 Philippines Baybay, Leyte PHP 125
## 3 Philippines Kabankalan, Negros Occidental PHP 145
## 4 Philippines Carles, Iloilo PHP 125
## 5 Kenya Webuye KES 202
## 6 Philippines Tacloban City, Leyte PHP 145
## posted_time funded_time term_in_months lender_count
## 1 2015-01-01 02:38:53 2015-01-01 16:20:50 8 14
## 2 2015-01-01 15:57:25 2015-01-05 00:21:31 10 5
## 3 2015-01-01 02:49:11 2015-01-01 06:12:18 8 4
## 4 2015-01-01 16:20:43 2015-01-05 19:21:50 20 26
## 5 2015-01-01 19:59:25 2015-01-04 22:16:31 11 45
## 6 2015-01-01 14:14:57 2015-01-03 01:31:28 8 7
## repayment_interval
## 1 irregular
## 2 irregular
## 3 irregular
## 4 irregular
## 5 bullet
## 6 irregular
Gunakan informasi berikut untuk keterangan dari setiap kolom:
id: ID dari setiap permintaan pinjamanfunded_amount: Jumlah uang yang diberikan oleh Kiva
kepada agen lapangan (dalam USD)loan_amount: Jumlah uang yang diberikan oleh agen
lapangan kepada peminjam (dalam USD)activity: Kategori aktivitas yang dilakukan oleh
peminjamsector: Kategori umum dari jenis pinjamancountry: Nama negara dari lokasi peminjamregion: Nama daerah dari lokasi peminjamcurrency: Mata uang yang digunakan ketika uang
diberikan kepada peminjampartner_id: ID dari organisasi mitraposted_time: Waktu ketika agen lapangan memposting
permintaan pinjaman ke Kivafunded_time: Waktu ketika pinjaman berhasil didanai
sepenuhnyaterm_in_months: Durasi pemberian uang kepada peminjam
(dalam bulan)lender_count: Jumlah pemberi pinjaman dari setiap
permintaan pinjamanrepayment_interval: Jangka waktu pengembalian
pinjaman.Dengan memvisualisasikan distribusi data dari variabel numerik, kita
dapat mengetahui interval nilai yang memiliki frekuensi kemunculan data
paling tinggi/paling sering muncul. Katakanlah kita tertarik untuk
mencari interval nilai lender_count (jumlah pemberi
pinjaman) yang paling sering muncul di Amerika Serikat (United
States). Cek distribusinya dengan menggunakan histogram atau
density chart!
Pertama, lakukan subsetting data sehingga hanya tersisa data dari Amerika Serikat (United States):
# your code here
kiva.USA = kiva[kiva$country == "United States",]
head(kiva.USA)
## id funded_amount loan_amount activity sector country
## 883 824020 3000 3000 Services Services United States
## 1476 824935 3000 3000 Services Services United States
## 4010 828079 5000 5000 Services Services United States
## 4148 828072 3100 3100 Beauty Salon Services United States
## 4598 828509 5450 5450 Restaurant Food United States
## 4658 828507 2500 2500 Services Services United States
## region currency partner_id posted_time
## 883 San Diego USD 249 2015-01-05 19:08:48
## 1476 San Diego USD 249 2015-01-07 19:36:50
## 4010 Chula Vista USD 249 2015-01-14 23:23:30
## 4148 San Diego USD 249 2015-01-14 22:50:21
## 4598 Austin, Texas USD 173 2015-01-15 17:36:56
## 4658 Pflugerville, Texas USD 173 2015-01-15 17:31:52
## funded_time term_in_months lender_count repayment_interval
## 883 2015-02-24 22:34:55 26 85 monthly
## 1476 2015-01-17 16:23:30 26 66 monthly
## 4010 2015-01-18 03:17:53 32 95 monthly
## 4148 2015-01-17 17:35:46 26 63 monthly
## 4598 2015-01-17 23:36:40 32 93 monthly
## 4658 2015-01-17 22:28:16 20 47 monthly
Kemudian, lakukan visualisasi untuk melihat distribusi data dari
lender_count. Gunakan plot dari base R atau ggplot2 untuk
memvisualisasikan data.
# your code here
hist(kiva.USA$lender_count, breaks = 20)
Pada interval nilai berapa lender_count di
United States memiliki frekuensi data paling banyak/paling
sering muncul?
Kita tertarik untuk melakukan analisis pada pinjaman yang berasal
dari sektor manufaktur (Manufacturing) dari semua negara. Kita
ingin melihat hubungan atau pola yang terbentuk antara jumlah uang yang
dipinjam (loan_amount) dengan jumlah pemberi pinjaman
(lender_count). Kita dapat menggunakan scatter plot untuk
menganalisanya.
Pertama-tama, lakukan subsetting dari data awal sehingga hanya terdapat data dari sektor Manufacturing:
# your code here
kiva.Manufacturing = kiva[kiva$sector == "Manufacturing",]
head(kiva.Manufacturing)
## id funded_amount loan_amount activity sector country
## 109 823078 250 250 Manufacturing Manufacturing Philippines
## 278 823168 425 425 Furniture Making Manufacturing Philippines
## 280 823452 5950 5950 Metal Shop Manufacturing Bolivia
## 285 823316 200 200 Manufacturing Manufacturing Pakistan
## 393 823181 225 225 Furniture Making Manufacturing Philippines
## 410 823581 675 675 Furniture Making Manufacturing Peru
## region currency partner_id posted_time
## 109 Kabankalan, Negros Occidental PHP 145 2015-01-01 04:41:55
## 278 Cauayan, Negros Occidental PHP 145 2015-01-02 00:08:26
## 280 La Paz / El Alto BOB 59 2015-01-02 19:52:53
## 285 Haripur PKR 245 2015-01-02 11:54:55
## 393 Kabankalan, Negros Occidental PHP 145 2015-01-02 01:21:47
## 410 Choros - Cutervo - Cajamarca PEN 143 2015-01-03 17:49:37
## funded_time term_in_months lender_count repayment_interval
## 109 2015-01-01 07:02:09 8 5 irregular
## 278 2015-01-02 08:59:33 11 15 irregular
## 280 2015-01-16 02:10:45 12 183 monthly
## 285 2015-01-03 13:32:52 14 7 monthly
## 393 2015-01-02 05:05:42 8 7 irregular
## 410 2015-01-03 22:05:10 14 15 monthly
Kemudian, buat scatter plot untuk melihat apakah terdapat pola antara jumlah uang yang dipinjam dengan jumlah pemberi pinjaman:
# your code here
library(ggplot2)
ggplot(data = kiva.Manufacturing, mapping = aes(loan_amount, lender_count)) +
geom_point()
Bagaimana bentuk hubungan antara jumlah uang yang dipinjam dengan jumlah pemberi pinjaman pada sektor Manufacturing?
Referensi Opsi Bahasa Inggris:
Manakah dari pernyataan berikut yang BENAR sesuai dengan scatter plot yang sudah dibuat?
Referensi Opsi Bahasa Inggris:
Perhatikan kasus berikut: Salah satu data analis di Kiva ditugaskan
untuk membuat sebuah analisis tentang durasi waktu antara waktu pinjaman
pertama kali diposting hingga waktu pinjaman terbiayai sepenuhnya
(funding duration), untuk tiap jangka waktu pengembalian
(repayment interval), di negara Guatemala. Analis kemudian
mencoba memvisualisasikan trend bulanan dari rata-rata funding
duration tersebut dalam satuan jam. Berikut ilustrasi dari hasil
akhir pekerjaan analis tersebut:
Tugas Anda adalah mereplikasi plot yang dihasilkan oleh analisis tersebut untuk negara Philippines.
Untuk melakukan analisis trend, pertama-tama kita subset data yang
kita miliki sehingga hanya menyimpan data dari negara
Philippines. Kita juga perlu mengubah setiap data yang
berhubungan dengan tanggal dan waktu ke tipe data yang tepat. Gunakan
package lubridate untuk mengolah tipe data tanggal dan
waktu.
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
# your code here
kiva.Phil = kiva[kiva$country == "Philippines",]
head(kiva.Phil)
## id funded_amount loan_amount activity sector
## 1 823048 450 450 Butcher Shop Food
## 2 823138 200 200 Food Production/Sales Food
## 3 823051 175 175 Fruits & Vegetables Food
## 4 823143 675 675 Fishing Food
## 6 823117 250 250 Liquor Store / Off-License Food
## 8 823132 900 900 Pigs Agriculture
## country region currency partner_id
## 1 Philippines Kabankalan, Negros Occidental PHP 145
## 2 Philippines Baybay, Leyte PHP 125
## 3 Philippines Kabankalan, Negros Occidental PHP 145
## 4 Philippines Carles, Iloilo PHP 125
## 6 Philippines Tacloban City, Leyte PHP 145
## 8 Philippines Baybay, Leyte PHP 125
## posted_time funded_time term_in_months lender_count
## 1 2015-01-01 02:38:53 2015-01-01 16:20:50 8 14
## 2 2015-01-01 15:57:25 2015-01-05 00:21:31 10 5
## 3 2015-01-01 02:49:11 2015-01-01 06:12:18 8 4
## 4 2015-01-01 16:20:43 2015-01-05 19:21:50 20 26
## 6 2015-01-01 14:14:57 2015-01-03 01:31:28 8 7
## 8 2015-01-01 15:36:55 2015-01-27 01:34:00 12 19
## repayment_interval
## 1 irregular
## 2 irregular
## 3 irregular
## 4 irregular
## 6 irregular
## 8 irregular
kiva.Phil$posted_time <- ymd_hms(kiva.Phil$posted_time)
kiva.Phil$funded_time <- ymd_hms(kiva.Phil$funded_time)
Untuk tahap eksplorasi, carilah rentang nilai dari
posted time:
# insert your code here
min(kiva.Phil$posted_time)
## [1] "2015-01-01 01:27:00 UTC"
max(kiva.Phil$posted_time)
## [1] "2015-12-31 05:54:25 UTC"
Kapan waktu pinjaman pertama kali dan terakhir kali diposting pada Kiva?
Setelah tipe data sesuai, kita dapat melakukan perhitungan untuk
funding duration. Buat kolom baru bernama
funding_duration yang berisi selisih waktu antara
funded time dan posted time menggunakan fungsi
difftime() dan pastikan agar satuan waktunya adalah jam
(hour).
Sebagai alternatif, Anda juga dapat menggunakan pengurangan sederhana
antara dua variabel tersebut. Hasilnya akan memiliki tipe data
time dalam satuan menit. Kita perlu mengubahnya menjadi
data numerik dan membaginya dengan 60 untuk mendapatkan
waktu dalam satuan jam.
Buat kolom baru bernama funding_duration yang berisi
selisih waktu antara funded_time dan
posted_time:
# your code here
kiva.Phil$funding_duration <- kiva.Phil$funded_time - kiva.Phil$posted_time
Karena kita ingin melihat rata-rata funding_duration
dari setiap bulannya, kita buat sebuah kolom baru bernama
month yang berisi nama bulan dari
posted time:
# your code here
kiva.Phil$month <- month(kiva.Phil$posted_time)
Sekarang kita dapat mulai melakukan agregasi data untuk mendapatkan
rata-rata (mean) dari durasi waktu pembiayaan
(funding duration) per bulannya (month) untuk
tiap jangka waktu pengembalian (repayment interval). Simpan
hasil aggregasi data pada sebuah objek dengan nama
loan_agg:
# your code here
loan_agg <- aggregate(funding_duration ~ month + repayment_interval,
data = kiva.Phil,
FUN = mean)
loan_agg
## month repayment_interval funding_duration
## 1 1 bullet 2338.364 mins
## 2 2 bullet 5512.419 mins
## 3 3 bullet 9978.202 mins
## 4 4 bullet 9677.793 mins
## 5 5 bullet 16656.013 mins
## 6 6 bullet 14202.188 mins
## 7 7 bullet 10684.850 mins
## 8 8 bullet 3660.863 mins
## 9 9 bullet 7390.024 mins
## 10 10 bullet 4378.149 mins
## 11 11 bullet 10526.563 mins
## 12 12 bullet 9393.613 mins
## 13 1 irregular 9915.838 mins
## 14 2 irregular 10428.313 mins
## 15 3 irregular 12177.396 mins
## 16 4 irregular 14332.386 mins
## 17 5 irregular 14923.996 mins
## 18 6 irregular 18436.396 mins
## 19 7 irregular 18902.552 mins
## 20 8 irregular 19943.073 mins
## 21 9 irregular 19385.059 mins
## 22 10 irregular 20730.164 mins
## 23 11 irregular 15629.760 mins
## 24 12 irregular 11536.692 mins
## 25 1 monthly 19222.863 mins
## 26 2 monthly 22683.297 mins
## 27 3 monthly 24076.201 mins
## 28 4 monthly 23246.517 mins
## 29 5 monthly 22259.493 mins
## 30 6 monthly 19387.212 mins
## 31 7 monthly 22334.929 mins
## 32 8 monthly 19727.638 mins
## 33 9 monthly 18440.902 mins
## 34 10 monthly 19771.289 mins
## 35 11 monthly 18833.346 mins
## 36 12 monthly 15382.309 mins
head(loan_agg[order(loan_agg$funding_duration, decreasing = T),])
## month repayment_interval funding_duration
## 27 3 monthly 24076.20 mins
## 28 4 monthly 23246.52 mins
## 26 2 monthly 22683.30 mins
## 31 7 monthly 22334.93 mins
## 29 5 monthly 22259.49 mins
## 22 10 irregular 20730.16 mins
Pada bulan apa dan dengan repayment interval apa yang memiliki funding duration terlama?
Setelah data dipersiapkan, buatlah line chart untuk memvisualisasikan trend dari durasi waktu pembiayaan (funding duration) per bulan. Lengkapi code berikut untuk membuat visualisasi tersebut.
ggplot(loan_agg, aes(x = month, y = funding_duration, color = repayment_interval, group = repayment_interval))+
geom_line()+
geom_point()+
labs(title = "Funding Duration Trend on Philippines, 2015",
x = NULL, y = "Funding Duration",
color = "Repayment Interval")+
theme_minimal()+
theme(legend.position = "top")
## Don't know how to automatically pick scale for object of type difftime. Defaulting to continuous.
Berdasarkan plot yang sudah dibuat, manakah dari pernyataan berikut yang BENAR?
Monthly repayment interval memiliki waktu
pembiayaan yang hampir sama dengan
Irregular repayment interval pada bulan AgustusBullet repayment interval memiliki waktu
pembiayaan yang lebih panjang dibanding
Irregular repayment interval pada bulan JuniMonthly repayment interval tidak pernah
dibiayai lebih cepat dibandingkan
Irregular repayment intervalReferensi Opsi Bahasa Inggris: - [x] Monthly repayment interval has almost the same funding duration with Irregular repayment interval in August - [ ] Bullet repayment interval has longer funding duration than Irregular repayment interval in June - [ ] Monthly repayment interval never funded faster than Irregular repayment interval