Repositori ini berisi aplikasi Shiny untuk menunjukkan data mahasiswa di seluruh perguruan tinggi yang bernaung di bawah Koordinasi Perguruan Tinggi Swasta (Kopertis) wilayah III (DKI Jakarta dan sekitarnya) pada tahun 2009-2017 berdasarkan data yang tersedia di Pangkalan Data Pendidikan Tinggi (PDDIKTI).
Selain itu, aplikasi ini dapat memprediksi data mahasiswa angkatan tahun 2018, yang pada saat repo ini dibuat, belum didaftarkan ke dalam PDDIKTI.
- R versi 3.4+
- Google Chrome
- Java versi 8+
- Kloning repo ini, lalu
cd
ke direktori tempat repo ini dikloning - Jalankan R (disarankan menggunakan RStudio)
- Instal beberapa package yang dibutuhkan berikut:
devtools
dengan perintahinstall.packages("devtools")
XML
dengan perintahinstall.packages("XML")
rvest
dengan perintahinstall.packages("rvest")
dplyr
dengan perintahinstall.packages("dplyr")
tidyr
dengan perintahinstall.packages("tidyr")
shiny
dengan perintahinstall.packages("shiny")
plotly
dengan perintahinstall.packages("plotly")
ggplot2
dengan perintahdevtools::install_github('hadley/ggplot2')
RSelenium
dengan perintah
devtools::install_github("johndharrison/binman") devtools::install_github("johndharrison/wdman") devtools::install_github("ropensci/RSelenium")
- Jalankan skrip
WebScrap_Script.r
untuk melakukan scraping pada situs web PDDIKTI sebagai sumber data. Hasilnya adalah sebuah CSV berjudul "MyData.csv". - Jalankan skrip
Model_Script.r
untuk melatih data sehingga dapat memprediksi data mahasiswa tahun 2018 menggunakan data CSV yang didapatkan dari scraping. - Jalankan app Shiny dari
RShiny_Script.r
.
Jika skrip WebScrap_Script.r
mengalami problem, atau data CSV tidak dapat diproses, gunakan dokumen MyData.csv
yang terdapat pada repo ini sebagai masukan untuk pemodelan.
PDDIKTI tidak menyediakan API untuk mengambil data mahasiswa di dalamnya, sehingga kami harus melakukan web scraping menggunakan R.
Library yang digunakan adalah:
- RSelenium untuk otomatisasi peramban
- rvest dan XML untuk web-scraping
- dplyr untuk mengolah data ke dalam data frame.
Tahap yang dilakukan adalah:
- Menjalankan perintah otomatisasi peramban Google Chrome menggunakan RSelenium untuk mengambil data dari PDDIKTI.
- Membuka situs Pencarian Data Perguruan Tinggi melalui RSelenium.
- Memulai pencarian
- Memilih lingkup koordinasi Kopertis Wilayah III agar data yang didapat hanya berasal dari universitas di bawah Kopertis Wilayah III saja.
- Mengisi captcha (penjumlahan antar dua angka) untuk membuka pengaman
- Mengambil daftar perguruan tinggi
- Mengambil jumlah laman yang menampilkan daftar perguruan tinggi
- Mengambil seluruh tautan menuju laman informasi tiap perguruan tinggi
- Menyimpan informasi tiap perguruan tinggi ke dalam data frame
- Mengambil daftar program studi (prodi) tiap perguruan tinggi
- Membuka laman informasi tiap perguruan tinggi
- Mengambil seluruh tautan menuju informasi tiap prodi dalam perguruan tinggi yang bersangkutan
- Mengambil data jumlah mahasiswa tiap prodi tiap semester
- Mengolah data yang telah diambil ke dalam dokumen berformat CSV
Pemodelan dilakukan dengan cara merapikan data hasil web-scraping terlebih dahulu menggunakan library tidyr
, kemudian melakukan prediksi untuk data jumlah mahasiswa per jurusan tiap perguruan tinggi tahun 2018.
Proses merapikan data ini dilakukan karena:
- Kolom semester dan tahun masih tergabung, padahal seharusnya dipisah.
- Masih banyak data numerik yang tersimpan sebagai tipe data string.
- Ada beberapa jurusan yang tutup di tengah jalan, sehingga tidak perlu dilakukan prediksi untuk jurusan-jurusan tersebut.
Sementara proses pemodelan dilakukan dengan:
- Mengambil nama semua jurusan dari tiap perguruan tinggi
- Membuat model dengan fungsi
lm()
untuk menentukan jumlah mahasiswa di tiap jurusan tersebut- Model yang digunakan adalah regresi linier sederhana, yang memprediksi hasil variabel terikat sebagai fungsi linier (y = Ax + B) dari variabel kontrol. Variabel kontrol dari pemodelan ini adalah Universitas, Jurusan, Semester dan Tahun.
- Fungsi ini menerima dua argumen, yakni formula pemodelan dan sumber data
lm(VariabelTerikat ~ VariabelBebas, data=SumberData)
- Model ini menerima jumlah mahasiswa per jurusan sebagai variabel terikat, dengan variabel bebasnya mengambil seluruh variabel yang ada di dataframe hasil web-scraping yang telah dirapikan di tahap sebelumnya
lm(BanyakMahasiswa ~ ., data = HasilScraping)
. - Hasil model linier disimpan ke dalam sebuah variabel
model
untuk digunakan dalam prediksi di tahap selanjutnya
- Melakukan prediksi dengan fungsi
predict()
, yang aspek matematisnya akan dijelaskan pada bagian selanjutnya- Fungsi ini berfungsi untuk memprediksi data sesuai dengan model yang telah dibuat, menggunakan data baru sebagai variabel bebas
predict(model, dataBaru)
- Model diambil dari hasil regresi linier dari tahap sebelumnya
- Variabel bebasnya adalah informasi nama jurusan dan nama perguruan tinggi yang (diasumsikan) masih aktif pada tahun 2018.
- Hasil prediksi yang didapatkan adalah jumlah mahasiswa untuk setiap jurusan pada tahun 2018.
- Fungsi ini berfungsi untuk memprediksi data sesuai dengan model yang telah dibuat, menggunakan data baru sebagai variabel bebas
Setelah pemodelan selesai, data hasil prediksi digabungkan dengan data yang sudah rapi untuk ditampilkan dalam aplikasi Shiny
Perhitungan untuk memprediksi jumlah mahasiswa pada Univ W, Jurusan X, pada Semester Y Tahun Z dengan pemodelan regresi dapat direpresentasikan oleh rumus matematis sebagai berikut:
dimana,
- : nilai prediksi jumlah mahasiswa pada Univ W, Jurusan X, pada Semester Y Tahun Z
- : Koefisien dari Univ W
- : Nilai dari Univ W (1 jika tersedia, 0 jika tidak tersedia)
- : Koefisien dari Jurusan X
- : Nilai dari Jurusan X (1 jika tersedia, 0 jika tidak tersedia)
- : Koefisien dari Semester Y
- : Nilai dari Semester Y (1 jika tersedia, 0 jika tidak tersedia)
- : Koefisien dari Tahun Z
- : Nilai Z (x4=2018 jika memprediksi tahun 2018)
- : nilai intercept
Pada R, nilai koefisien diperoleh dari model$coefficients
yang merupakan hasil dari data training.
Berikut merupakan contoh dari kasus prediksi terhadap jumlah mahasiswa UPH Teknik Informatika pada tahun ajaran Ganjil 2018:
Untuk visualisasi data, aplikasi kami membutuhkan tiga masukan untuk menampilkan informasi. Pengguna dapat mengubah masukan sesuai dengan kebutuhan pada sidebar yang tersedia. Informasi akan langsung berubah setiap ada satu masukan yang diubah. Ketiga masukan tersebut adalah:
- Nama perguruan tinggi (
namaPT
) - Jurusan (
namaProdi
) - Tahun (
tahun
)
Informasi ditampilkan di kolom utama, terbagi dalam tiga tab. Satu tab memuat satu diagram batang. Ketiga diagram tersebut adalah:
- Jumlah mahasiswa (nama perguruan tinggi) per tahun pada tab Overview Tahunan. Tabel ini membandingkan jumlah total mahasiswa dari seluruh jurusan dalam
namaPT
dari tahun ke tahun. - Jumlah mahasiswa (nama perguruan tinggi) jurusan (jurusan) per tahun pada tab Overview Jurusan. Tabel ini membandingkan jumlah mahasiswa di
jurusan
dari tahun ke tahun. - Jumlah mahasiswa (nama perguruan tinggi) per jurusan pada tahun (tahun) pada tab Overview Jurusan/Tahun. Tabel ini membandingkan jumlah mahasiswa yang masuk ke setiap jurusan pada
tahun
.
Karena setiap perguruan tinggi harus memperbarui data mereka setiap semester, informasi untuk satu tahun dibagi menjadi semester ganjil dan genap. Data semester genap ditandai dengan warna hijau toska, sementara data semester ganjil ditandai dengan warna merah salem. Selain itu, untuk kejelasan informasi yang ditunjukkan, pengguna juga dapat mengarahkan kursor ke tiap batang pada diagram untuk melihat dengan jelas data tersebut berasal dari semester berapa, tahun berapa, dan jumlah mahasiswa yang diwakilkan oleh batang tersebut.
- Desain antarmuka Shiny yang lebih efektif untuk menunjukkan data.
- Jika ada data jurusan aktif dari sebelum tahun 2018 yang belum dilaporkan ke PDDIKTI, gunakan prediksi untuk mengisi data yang hilang tersebut.
Data PDDIKTI berasal dari pelaporan data perguruan tinggi, dan hanya digunakan untuk kepentingan akademis semata.
Aplikasi Shiny ini dibuat oleh Jessica Sean, Joseph Gunawan, dan Livia Andriana Lohanda untuk memenuhi tugas mata kuliah Frontier Technology jurusan Teknik Informatika Universitas Pelita Harapan semester Akselerasi 2017/2018.