Visualisasi Data Terbaik-Intro

Tidak dapat dipungkiri bahwa semakin canggih perkembangan teknologi membuat hidup menjadi lebih mudah. Tidak ketinggalan dengan teknologi visualisasi data… beberapa tahun yg lalu kita masih menggunakan excel utk mengolah data dan membuat grafik lalu menampilkannya lewat power point. Grafik yg ditampilkan adalah statis artinya hanya menampilkan satu part dr grafik, utk melihat bagian lain dr grafik kita harus merubah manual filter datanya. Hufhh.

Bar Chart-Sales-Segment

Menurut saya interaksi terbaik dg data adalah dengan menggunakan dynamic graph… dg merubah satu dimensi kita bisa melihat perubahan grafiknya.. hal ini sangat membantu kita utk memahami data dan mendapatkan informasi yg dibutuhkan dalam waktu yg singkat. Gabungkan seluruh grafik yang kita buat untuk mendapatkan informasi yang lebih komprehensif.

Dashboard-Bar-Draft 1

Sering kali kita memiliki 3 atau empat grafik yg ingin kita lihat sekaligus dan kita ingin filter salah satu dimensi lalu melihat perubahan dr 4 grafik tsb akibat perubahan filter yg kita lakukan.

Dashboard With Filter

Contohnya disini saya tambahkan state sebagai filter, jika anda perhatikan saya menambahkan sedikit shading pada header dashboard. Nah kita sudah bisa mulai main nih dengan data yg kita miliki. Saya membuat dashboard seperti diatas kurang dari 5 menit!! Yang mau belajar bareng boleh tinggalkan email atau nomor kontak dikolom komentar. Saya terbuka untuk diundang ke kantor atau kampus anda untuk sharing topik terkait statistics, data visualization, machine learning. Pokoknya semua yg terkait DATA. Salam.

 

 

Advertisements

Membuktikan Kausalitas (Hubungan Sebab Akibat)

Rahmat.. proof to me did our last year investment increase our market share? I want to valid proof showing investment and increase of market share has causality effect.

Benarlah apa yg diajarkan di kelas data science bulan lalu yang sampai sekarang saya masih ingat. Yang paling penting dari data science itu adalah pertanyaanya! Pertanyaan bos saya itu juga menurut saya mahal dan jawabannya tidak mudah. Saya segera mencari statistical tools yg ada di kepala saya untuk menjawab pertanyaan tersebut tapi so far belum ada yg cocok. Better saya cari dulu bagaimana seharusnya kerangka berpikir untuk membuktikan hubungan kausalitas.

Jika mendengar kausalitas saya terus saja teringat sebuah kalimat correlation doesn’t imply causation. Ini adalah ilmu sejak kuliah namun saya belum  bertanya lebih lanjut.. lalu apa yg bisa membuktikan kausalitas? Nah ternyata tidak mudah membuktikan adanya kausalitas. Sebaliknya jika kita mampu membuktikan kausalitas maka kita bisa bercerita lebih banyak.

  • Supportive hubungan suatu variabel yg membuat variabel lain meningkat. Contohnya efek pemberian pupuk jenis tertentu dalam meningkatkan produksi panen padi atau pemberian jenis obat tertentu dalam menyembuhkan penyakit tertentu.
  • Prevention bisa juga kita mengatakan bahwa kita bisa menghindari terjadinya hal buruk atas tindakan tertentu. Misalnya penambahan rem jenis tertentu mengurangi angka tabrakan pada mobil atau motor.
  • Preparation  berguna untuk mempersiapkan diri atas konsekuensi tertentu. Misalnya banjir atau bencana

Dari ketiga hal diatas kasus saya sepertinya lebih cocok pada kondisi pertama yakni investasi dalam menaikkan market share. Hubungannya supportive,  oleh karena itu pendekatan rancangan percobaan (experimental design) sepertinya akan lebih cocok.

Hal-hal yg saya harus perhatikan adalah sebagai berikut:

  1. Kekuatan hubungan. Karena ini adalah kasus non-laboratorium saya tidak bisa mengkondisikan faktor-faktor yg terlibat selayaknya lab namun hubungan antar target bisa saya gambarkan dengan menggunakan korelasi.
  2. Replication. Naah ini dia juga yg lumayan njelimet bagaimana melakukan pengulangan jika kondisinya tidak seragam. Let me know jika ada ide ya guys!
  3. Specificity. Jika tidak ada penjelasan lain mungkin memang itulah penyebabnya.
  4. Temporality. Hubungannya akan lebih kelihatan jika akibat muncul setelah sebabnya.. (yg ini masih bingung nih)
  5. Gradient. Jika ada pola kenaikan atau penurunan yg jelas maka most likely ada kausalitas. Kayaknya kita bisa minta tolong regression untuk membuktikan ini.
  6. Plausability. help me with this.. hahaha
  7. Coherence. Jika sudah ada teori yg pernah menunjukkan adanya hubungan kausalitas maka data kita mungkin akan memperkuat teori tsb.

Kayaknya saya juga perlu untuk menambahkan beberapa catatan berikut sebelum melakukan perhitungan.

Periksa Metrik

  • Gunakan original metrik, hindari indexing dan rasio.
  • Lanjutkan dengan menghitung korelasi antar variabel.
  • Pastikan sample nya cukup untuk menarik kesimpulan.
  • Pastikan tidak ada outlier

 

Pastikan Hubungan

Dari scatter plot, perhatikan hubungan antar variable nya (gradientnya). Perhatikan juga urutan kejadiannya, karena bisa jadi akibatnya tidak terjadi pada waktu yg dekat. Sebaiknya di cek dengan lag pada time series analysis.

 

Validasi Penjelasan

Ada dua langkah yg kita bisa lakukan disini yakni eksperimen dan konsistensi. Dua hal ini adalah hal paling meyakinkan yg bisa kita lakukan, susunlah hipotesis dan buatlah sebuah pembuktian atas hipotesis tersebut. Sebaiknya kita gunakan vairable kontrol agar kita bisa membandingkan efek dari faktor yg kita berikan.

Source:

https://statswithcats.wordpress.com/2015/01/01/how-to-tell-if-correlation-implies-causation/ 

 

 

Basic Data Science Knowledge Part 2: Control Structure, Function dan Class

Dalam menuliskan code di python, adakalanya kita menghadapi perhitungan yg membutuhkan pengulangan. Nah sebagaimana di dalam bahasa pemrograman yg lain, di python juga ada cara melakukan looping untuk lebih mengefisienkan langkah kerja kita.

for i in range(20):
if i%3 == 0:
print i
if i%5 == 0:
print “Bingo!”
print “—“

Di python kita harus memperhatikan indentasi, jika indentasi kita tidak sesuai dengan format python maka proses looping tidak akan perjalan.

Function digunakan juga untuk mempermudah query yang kita buat. Jika kita mempunyai perhitungan yang cukup kompleks namun kita gunakan berulang-ulang maka ada baiknya kita menggunakan function untuk menyimpan perhitungan tadi.

>def kali(x,y):
z=x*y
return z

>kali(5,3)

15

Class

Jika kita membutuhkan sebuah environment yg terlepas dari environment default nya python. Maka salah satu cara untuk melakukan itu adalah dengan menggunakan class. Contoh penggunaan class adalah sebagai berikut

Contoh Class

class Product:
__vendor_message = “Ini adalah rahasia”
name = “”
price = “”
size = “”
unit = “”

def __init__(self, name):
print “Ini adalah constructor”
self.name = name
self.unit = “Gb”
self.size = 10

def get_vendor_message(self):
print self.__vendor_message

def set_price(self, price):
self.price = price

p = Product(“xtra combo”)
p.set_price(55000)

print “%s dengan ukuran %s %s harganya Rp. %d” % (p.name, p.size, p.unit, p.price)
# print p.__vendor_message

p.get_vendor_message()

p1 = Product(“xtra combo”)
p1.set_price(5000)

print “%s dengan ukuran %s %s harganya Rp. %d” % (p.name, p.size, p.unit, p.price)

Source for function: https://www.petanikode.com/tutorial/python

 

 

 

 

 

 

Basic Data Science Knowledge: Python (Part 1)

Python saat ini menjadi tren bahasa yg paling banyak digunakan dalam dunia data science. Walaupun ada bagian-bagian yang masih belum bisa menggantikan R, namun integrasinya dengan ekosistem HADOOP ini lah yang membuatnya menjadi sangat terkenal. Well, tulisan ini hanya catatan pribadi sebagai pengingat dan contekan kalau-kalau lupa.

Saya menginstall python dengan sepaket dengan hanya mendownload anaconda, jadi ringkas di dalamnya ada spyder, jupyter dkk buat GUI nya. Secara personal saya lebih suka menggunakan Jupyter karena formatnya yang mirip dengan R-markdown style di R studio.

Untuk show datanya kita bisa menggunakan

>print (“Hello world”)

Untuk menambahkan komentar bisa menggunakan

> # Ini komentar

Komentar sering bgt saya pakai sebagai pengingat alasan saya menggunakan query tsb. Juga sangat berguna jika query saya digunakan oleh orang lain.

List

Di python sangat flexible kita bisa bikin array yang isinya campur-campur kayak gini.

> a=[99,”cahaya”,[“dilangit”,”eropa”]]

Untuk slicer dari list juga cukup mudah, kita bisa menggunakan index yg selalu dimulai dari 0.

>a[0] hasilnya adalah 99

Berikut contoh lain

>b=range(5)

[0, 1, 2, 3, 4]

>b.append(5)

[0, 1, 2, 3, 4, 5, 5]

>b.pop() #untuk mengetahui jumlah data

5

Dictionary atau Associative Array

Cirinya tidak menggunakan index namun menggunakan keys sehingga kita melakukan fungsi seperti lookup. Keys yg digunakan di dictionary ini sifatnya IMMUTABLE yang artinya tidak boleh diubah-ubah

d = {“duck”: “eend”, “water”: “water”}
d

{'duck': 'eend', 'water': 'water'}

Cara lookupnya

d[“duck”]

‘eend’

Tuple

Hal lain yg perlu dikenal di python adalah tuple. Ciri-cirinya adalah menggunakan kurung ( ) untuk membentuk tuple. Sifat dari tuple juga IMMUTABLE  artinya isinya tidak bisa diubah-ubah.

nama =(‘rahmat’, ‘hid’)
nama

('rahmat', 'hid')

Jika ubah isi tuple nya, maka hasilnya adalah ERROR.

nama[0]=’coding’

Error bla bla xxxx– karena tuple tidak support item assignment

Tuple bisa berisi value, list ,dictionary, object, dan lain-lain.

Variable

variable juga jenis wadah untuk menyimpan value, di python kita tidak perlu melakukan DECLARE variable. Kita bisa langsung membuat variable dan mengisinya dengan value yg kita inginkan. Perbedaannya variable isinya bisa dirubah-rubah.

Pada dasarnya semua hal adalah variable baik itu class, modul maupun fungsi.

var=”isi dengan nilai”
var

'isi dengan nilai'

Kayaknya ini dulu saja untuk yg basic, lagi-lagi tulisan ini buat pengingat saja. Cara paling efektif adalah coba langsung ya guys.

 

 

 

Dapatkah analitik membantu dunia pendidikan?

Dilihat dari sudut pandang bisnis, dunia pendidikan bisa disebut salah satu sektor industri dimana terdapat input dan output yg selalu diukur apakah output yg dihasilkan sudah sesuai dengan kriteria passing grade. Analogi siswa sebagai produk dr sebuah pabrik yg dinamakan sekolah masih relevan walaupun tidak bisa dan tidak seharusnya disamakan for the sake of argument mari kita terima saja dulu.

Dalam proses memproduksi produk pabrik memperhatikan hal2 yg akan menaikkan kualitas dan juga yg menurunkan kualitas. Penyempurnaan proses ini lah yg membuat semakin lama produk yg dihasilkan semakin baik. Hal2 yg diukur ini dinamakan metrik atau measurment. Dengan menggunakan indikator dr metrik2 ini maka kita akan mempunyai visibility terhadap keadaan yg terjadi di pabrik.

Ok, lets back to school. Dunia pendidikan dimana sekolah menjadi ujung tombak dunia pendidikan selama ini mengumpulkan metrik2 seperti absensi, keaktifan, nilai ulangan, nilai tugas kelompok, tugas individu dan metrik2 lainnya. Sekolah dapat (harus) memanfaatkan data2 ini untuk menggerakkan kualitas lulusan dengan menerapkan langkah2 strategis lalu kemudian mengukur dan mengevaluasi metrik2 ini sampai tujuamnya tercapai.

Analitik selama berpuluh tahun telah membantu dunia manufaktur untuk meningkatkan kualitasnya.. saatnya dunia pendidikan mengadopsi analitik yg tidak hanya sekedar deskriptif namun juga predictive dan prescriptive. Untuk ini sepertinya saya perlu bekerja sama untuk membuat semacam quick win. Mampukah? Bisakah?

Cara Benar Membuka File CSV

Walaupun ini hal yang sangat dasar namun ternyata masih lumayan banyak orang yang menemui kesulitan dan mengalami kesusahan dalam membuka data yang ada dalam file csv. Baiklah mari simak penjelasan berikut.

Salah satu tipe file yang paling sering di temui dalam dunia analisa data adalah CSV atau (Comma Separated Value). Dengan ukuran file yang relatif kecil, terus fleksibilitas untuk dapat dibuka di hampir semua software baik dari yang simple seperti excel maupun software2 lain seperti hadoop environment (spark, impala dll) membuat banyak orang membagi file nya dalam format csv. Oh iya, satu lagi keunggulan csv file yakni format data yang tersimpan sesuai dengan format aslinya sehingga kita gak khawatir format file tiba-tiba berubah.

Dari yang saya amati, banyak orang yang biasa menggunakan excel langsung double klik di file csv nya… hasilnyaa… BERANTAKAN.

csv folder

Saat langsung double klik.. hasilnya begini nih… malahan ada yg langsung di alokasikan ke kolom.. masih untung formatnya lasngung bener.. tapi dari pengalaman saya lebih banyak gak benernya..

csv berantakan

Klo udah seperti ini saya sarankan tutup aja file nya dan JANGAN di SAVE. Bisa saja kita menggunakan Text To Column namun untuk kali ini kita buka dengan cara paling aman yg saya ketahui. Kalau ada cara lain yg belum disebutkan.. monggo di tambahkan di komentar :).

Ok Langkah pertama buka file excel kosong. Lalu klik menu DATA dan pilih From Text/CSV.buka menu data csv

Pilih file yang ada di folder masing-masing.

import CSV

Kalau pakai excel terbaru kayak saya, akan muncul seperti dibawah ini. Excel akan menganalisa struktur data dari 200 row teratas ( bisa di ubah jumlah row nya) lalu akan menentukan format data per masing-masing kolom.

import csv baru

Setelah klik LOAD hasilnya akan seperti berikut.

final import csv

Naah.. coba anda perhatikan format datanya sudah jauh lebih rapii.. text di format karakter.. angka di format number. Silahkan anda cek data anda lagi sebelum di olah lebih lanjut. Jika sudah rapih dan benar, data siap untuk diproses lebih lanjut. Semoga berguna 🙂

 

 

Data Science in Youtube

Got time to kill? Press PLAY and become SMARTER! ▶️ Here are some of my favorite #DataScience and #MachineLearning resources on Youtube:

— ⚠️ NOTE: These videos are fun bite-sized content packed with information!

📍3Blue1Brown Essence of Linear Algebra https://lnkd.in/gPZ–wZ

📍StatQuest (Joshua Starmer) Statistics Made EASY https://lnkd.in/gMHzDcv

📍Siraj Raval Fun Machine Learning & AI https://lnkd.in/gDC6gz4

📍Analytics University Anything Analytics & Machine Learning https://lnkd.in/gWHiaRf

📍AlphaOpt Optimization & Gradient Descent (Short and easy explanation) https://lnkd.in/g_e9sJu

📍3Blue1Brown Simple Visual Explaination on Neural Networks https://lnkd.in/gXcGwM6

📍Two Minute Papers Awesome AI Research For Everyone https://lnkd.in/gzvaVWh

 

Source:Linkedin

CSS-Nearby search

/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#right-panel {
font-family: ‘Roboto’,’sans-serif’;
line-height: 30px;
padding-left: 10px;
}

#right-panel select, #right-panel input {
font-size: 15px;
}

#right-panel select {
width: 100%;
}

#right-panel i {
font-size: 12px;
}
#right-panel {
font-family: Arial, Helvetica, sans-serif;
position: absolute;
right: 5px;
top: 60%;
margin-top: -195px;
height: 330px;
width: 200px;
padding: 5px;
z-index: 5;
border: 1px solid #999;
background: #fff;
}
h2 {
font-size: 22px;
margin: 0 0 5px 0;
}
ul {
list-style-type: none;
padding: 0;
margin: 0;
height: 271px;
width: 200px;
overflow-y: scroll;
}
li {
background-color: #f1f1f1;
padding: 10px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
li:nth-child(odd) {
background-color: #fcfcfc;

lo {
background-color: #f1f1f1;
padding: 10px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
lo:nth-child(odd) {
background-color: #fcfcfc;

}
#more {
width: 100%;
margin: 5px 0 0 0;
}

Java script-search nearby

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src=”https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places”&gt;

var map;

function initMap() {
// Create the map.-6.5404435,106.7970417
var pyrmont = {lat: -6.5404435, lng: 106.7970417};
map = new google.maps.Map(document.getElementById(‘map’), {
center: pyrmont,
zoom: 17
});

// Create the places service.
var service = new google.maps.places.PlacesService(map);
var getNextPage = null;
var moreButton = document.getElementById(‘more’);
moreButton.onclick = function() {
moreButton.disabled = true;
if (getNextPage) getNextPage();
};

// Perform a nearby search.
service.nearbySearch(
{location: pyrmont, radius: 500, type: [‘store’]},
function(results, status, pagination) {
if (status !== ‘OK’) return;

createMarkers(results);
moreButton.disabled = !pagination.hasNextPage;
getNextPage = pagination.hasNextPage && function() {
pagination.nextPage();
};
});
}

function createMarkers(places) {
var bounds = new google.maps.LatLngBounds();
var placesList = document.getElementById(‘places’);

for (var i = 0, place; place = places[i]; i++) {
var image = {
url: place.icon,
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(25, 25)
};

var marker = new google.maps.Marker({
map: map,
icon: image,
title: place.name,
position: place.geometry.location
});

var li = document.createElement(‘li’);
li.textContent = place.name;
placesList.appendChild(li);

var lo = document.createElement(‘lo’);
lo.textContent = place.types;
placesList.appendChild(lo);

bounds.extend(place.geometry.location);
}
map.fitBounds(bounds);
}