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.

Dataset

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:

Analisis Distribusi Data

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)

  1. Pada interval nilai berapa lender_count di United States memiliki frekuensi data paling banyak/paling sering muncul?

    • 0-100
    • 100-200
    • 200-400

Memahami Hubungan antar Variabel

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()

  1. Bagaimana bentuk hubungan antara jumlah uang yang dipinjam dengan jumlah pemberi pinjaman pada sektor Manufacturing?

    • Semakin besar jumlah uang yang dipinjam, semakin rendah jumlah pemberi pinjaman
    • Semakin besar jumlah uang yang dipinjam, semakin tinggi pula jumlah pemberi pinjaman
    • Jumlah uang yang dipinjam dan jumlah pemberi pinjaman tidak memiliki hubungan yang berarti

Referensi Opsi Bahasa Inggris:

  1. Manakah dari pernyataan berikut yang BENAR sesuai dengan scatter plot yang sudah dibuat?

    • Terdapat pinjaman yang memiliki jumlah pinjaman yang besar dengan jumlah pemberi pinjaman yang sedikit
    • Terdapat pinjaman yang memiliki jumlah pemberi pinjaman yang banyak dengan jumlah pinjaman yang kecil
    • Sebagian besar pinjaman memiliki jumlah pinjaman yang lebih dari 7,500 USD

Referensi Opsi Bahasa Inggris:

Menggunakan Line Chart untuk Analisis Trend

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"
  1. Kapan waktu pinjaman pertama kali dan terakhir kali diposting pada Kiva?

    • 2015-01-01 01:27:00 UTC and 2015-12-31 05:54:25 UTC
    • 2015-01-01 03:34:51 UTC and 2015-12-31 05:54:25 UTC
    • 2015-01-01 01:27:00 UTC and 2015-12-31 14:44:55 UTC
    • 2015-01-01 00:42:30 UTC and 2015-12-31 05:54:25 UTC

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
  1. Pada bulan apa dan dengan repayment interval apa yang memiliki funding duration terlama?

    • monthly repayment interval in April
    • bullet repayment interval in January
    • monthly repayment interval in March

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.

  1. 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 Agustus
    • Bullet repayment interval memiliki waktu pembiayaan yang lebih panjang dibanding Irregular repayment interval pada bulan Juni
    • Monthly repayment interval tidak pernah dibiayai lebih cepat dibandingkan Irregular repayment interval

Referensi 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