Memetakan Mimpi (Pendidikan) Tinggi

Apa yang kita bisa tahu tentang lima dari dua ratus lima puluh juta?

Ramda Yanurzha
5 min readFeb 10, 2017

Selang beberapa bulan setelah mulai aktif dalam komunitas data scientist dan periset di sini, saya melihat ada fenomena yang menarik: banyak yang inginnya sudah ada dataset rapi ala Kaggle atau Susenas, jelas dokumentasinya, dan kalau bisa sudah ada tulisan orang lain yang menggunakan data tersebut.

Dalam konteks kerjaan sehari-hari, tentu saja, siapa yang nggak pengen? tapi buat weekend project, saya lebih suka mengeksplorasi seperti yang sudah saya lakukan di beberapa tulisan sebelum ini. Setiap melihat peta sebaran, tabel, atau grafik, saya sering sekali langsung klik kanan -> inspect dan mengamati request dan response hilir mudik mengisi timeline sambil halaman terbuka. Cukup pakai python-request kah? Atau perlu BeautifulSoup? harus banget pakai Phantom.js? duh peta raster, ada capabilities vektor di WMSnya nggak? The list goes on and on, and the curiosity is now an adventure!

Petualangan kali ini: data pendidikan tinggi.

Forlap DIKTI ini sebenernya mirip-mirip data pokok pendidikan dasar, tetapi data publiknya lumayan berbeda. Kalau di profil sekolah ada data lucu semacam berapa listrik yang terpasang di sekolah dan bonus koordinat sekolahnya, di Forlap DIKTI paling mentok hanya alamat dan list program studi.

Oh, dan juga history mata kuliah yang diambil setiap mahasiswa.

YES THANK YOU FOR REMINDING ME OF THOSE PAINFUL TIMES

Indahnya transparansi data pendidikan yang tersedia online, selain untuk mengecek apakah anak politisi X beneran sekolah di universitas top, adalah berarti data 4.937.525 mahasiswa/i, 267.017 dosen, 4.548 universitas/ akademi/sekolah tinggi/politeknik semuanya terbuka.

Dan yang menghalangi rencana iluminati menguasai dunia ini hanya satu:

At least, nggak disuruh ngerjain soal kalkulus integral atau diferensial. OH NO IM GIVING THEM IDEAS.

Yang berarti, satu-satunya langkah manual di post ini juga hanyalah satu:

Cookie expire = session di Chrome berarti cookienya baru expire kalau seluruh tab ditutup atau restart laptop. Like, never.

(atau bisa juga pakai pakai PhantomJS buat render dynamic content buat si CAPTCHA, lalu captcha-solver buat otomatis solve, lalu lupa pakai virtualenv jadi harus reinstall python, lalu terdistraksi notif subscription YouTube, buka xkcd, liat e-mail promo toko online, berdebat pilkada, lalu lupa tadi sebenernya mau ngapain)

(trust me, just copy those long strings)

Setelah itu, saatnya menentukan apa yang mau diambil. Saya sedikit malas scraping data 5 juta mahasiswa, tetapi halaman profil perguruan tinggi cukup menarik karena ada keterangan lokasi dan juga daftar program studi beserta jenjang dan jumlah mahasiswa+dosen dalam satu halaman.

….wait, 1,710 at a time? damn I always got small classes.

Kode yang saya gunakan bisa dilihat di sini. Karena ada cukup banyak program studi (23.000), hitung-hitungan di kertas dengan asumsi waktu request+proses satu halaman 2 detik, perlu 12 jam non-stop itupun dengan asumsi servernya nggak keburu down. Coba pakai 10 curl paralel biar cepat (7 mungkin lebih stabil, 10 kadang-kadang keskip).

cat list_univ.txt | xargs -n 1 -P 10 curl -O

15 menit kemudian…

I (heart) treemaps.

Sebenarnya sampai di sini sudah cukup menyenangkan. Topik lanjutan yang dapat digali itu banyak sekali: lihat rasio dosen/mahasiswa per program studi, memetakan supply SDM berpendidikan tinggi per daerah, identifikasi degree mills (bisakah?). Lebih dari itu, saya senang karena sekarang periset independen seperti saya bisa mendalami data ini tanpa harus bolak-balik minta excel ke sebuah loket (lalu dikasihnya PDF).

Saya sendiri? saya suka visualisasi berbentuk peta. Sayangnya, seperti yang saya bilang tadi, tidak ada data koordinat di manapun dalam portal Forlap.

Jadi mari cari cara lain, dibantu dengan Google Places API yang punya kuota 150.000 query gratis per hari (!)dan sepertinya lebih mengerti Indonesia dibandingkan pemerintah sendiri:

place_arr = []
for k,univ in enumerate(univs):
d = {}
query = “https://maps.googleapis.com/maps/api/place/textsearch/json?query="+univ.replace(" “,”+”)+”&key=”+APIKEY
r = requests.get(query).json()
if len(r[‘results’]) > 0:
d[‘lat’]=r[‘results’][0][‘geometry’][‘location’][‘lat’]
d[‘lng’]=r[‘results’][0][‘geometry’][‘location’][‘lng’]
place_arr.append(d)

70 menit kemudian…

Yes, feel free to click around!

Setiap institusi diwakilkan oleh gelembung-gelembung merah, semakin besar diameternya, semakin banyak mahasiswanya. Semakin merah tua, semakin banyak mahasiswa yang terkonsentrasi di tempat tersebut.

Tentunya, untuk riset yang beneran, banyak caveat di data ini. Ada beberapa prodi yang tidak ada, dan peta di atas pun tidak lengkap karena tidak semua perguruan tinggi dapat dimatch dengan data yang didapat dari Places API.

Walaupun begitu, prinsip saya adalah dengan cara eksplorasi iseng merangkap weekend project seperti ini, akan ada pertanyaan-pertanyaan baru dan rasa penasaran untuk mendalami bagi yang membaca. Siapa tahu, ujungnya jadi riset beneran.

Sekarang, mari berhenti sejenak dan perhatikan peta ini. Kurang dari 5 juta saat ini sedang menjadi mahasiswa dari ~250 juta penduduk. Secara total, saat ini hanya ada 8% dari kita yang pernah mencicipi bangku kuliah. Saat saya kuliah dulu, sering dikuliahi agar merasa bersyukur karena ada di universitas top. Setelah melihat grafik warna-warni ini, tidak usah bicara universitas papan atas: duduk di bangku pendidikan tinggi saja ternyata sudah masuk golongan elit.

Ternyata beda provinsi, beda kesempatan. Tentunya tidak ada astronot, seperti cita-cita masa SD.

Kuliah bukanlah segalanya, dan juga tidak selalu dibutuhkan (atau bahkan relevan) dengan dunia kerja. Banyak yang tidak sempat diwisuda, tidak menjadi bagian dari lingkaran-lingkaran merah di atas, yang jalannya berbeda; saya pun salah satunya.

Bagi sebagian lainnya, kuliah ada segalanya. Banyak juga yang ingin sekali, namun tidak bisa: kekurangan lembar rupiah, kekurangan restu, kekurangan waktu.

Setiap letih bersekolah,
ingatlah peta mimpi-mimpi tinggi ini.

--

--