Archive

Archive for the ‘R Scripts’ Category

Visualisasi Data : Thermometer Chart (2)

October 31st, 2009

Visualisiasi Marketing performance dashboard, selain menggunakan line, time series, barchart dan mini pie chart dapat pula kita tambahkan thermochart. Membandingkan indeks antar variabel, lebih mudah kita visualisasikan dengan thermochart. Contoh visualisasi ini dapat kita temukan dalam artikel sebelummya yaitu Visualisasi Data Thermometer Chart. Dalam contoh tersebut visualisasi dibangun dengan menggunakan fungsi line, rect dan polygon.

Saat ini penulis membuat thermo function yang menggabungkan antara image dan fungsi rect.

thermochart(x=20.6,px=100)
thermochart(x=75.2,px=300)
thermochart(x=65.8,px=500)
thermochart(x=89.7,px=700)

Hasilnya adalah sebagai berikut :

Dengan menggunakan image, maka kita lebih mudah menggunakan warna degradasi dan desain yang tidak kaku. Thanks. [unung@enciety.com]

R Scripts ,

Modifikasi Visualisasi Tabel Menggunakan R

July 4th, 2009

Dalam bahasan lalu, penulis membangun desain dashboard dengan menggunakan Open Office Calc. Dengan materi data yang sama, maka kita coba untuk membangun detail dashboard dengan menggunakan R, khususnya pada materi pengembangan tabel. Rancangan visualisasi tabel dalam marketing executive dashboard merupakan hal yang penting.

Agar tabel yang kita buat cukup dinamis dan mampu terisi dengan berbagai macam obyek (:cell) maka kita terlebih dahulu menuangkan ide obyek table tersebut kedalam UML Class Diagram. Hal ini kita perlukan untuk menangkap fungsi-fungsi dasar dalam tabel seperti colnum, rownum, colspace, rowspace, colors dan lain sebagainya. Termasuk bagaimana hubungan struktur antara tabel dengan items yang ada didalamnya.

Berikut ini hasil R script, yang merupakan implementasi dari desain tabel dengan bantuan notasi UML.

Salam.

unung@enciety.com.

R Scripts , ,

Analisis Sederhana Access Log SQUID Menggunakan R

September 23rd, 2008

Aktivitas jaringan internet memang menarik untuk dianalisis, apalagi jika NOC perusahaan memiliki sistem administrasi jaringan yang bagus. Trouble yang ditemui membuat admin selalu belajar meningkatkan performansi layanan. Pada tulisan ini, penulis mengolah data access log squid yang ditempatkan pada proxy server.

Data access log dapat kita copy dan diletakkan dalam folder khusus atau diakses real time. Data ini kita baca menggunakan fungsi read.table sebagai berikut :

> read.table(”/var/log/squid/access.log”) -> myaccess.log

Data myaccess.log terdiri dari sepuluh variabel penting web caching.

1. Waktu pencatatan access log.

Dengan menggunakan Date-Time Conversion Functions di R, kita dapat mengetahui rentang waktu pencatatan access.log. Dalam obyek myaccess.log di atas, melalui variabel pertama kita dapat mengetahui waktu pencatatan log. Berikut ini script untuk menampilkan data waktu :

> myaccess.log[1,1] -> z1 # Start pencatatan access.log

> myaccess.log[nrow(myaccess.log),1] -> z2 # Akhir pencatatan access.log

Kemudian data pada obyek z1 dan z2 tersebut kita convert berdasarkan Unix Time / POSIX Time dengan menggunakan script sebagai berikut :

> ISOdatetime(1970,1,1,0,0,0) + z1 -> start.time.mylog
> ISOdatetime(1970,1,1,0,0,0) + z2 -> end.time.mylog

Berdasarkan hasil tersebut maka waktu rentang pencatatan log adalah

mulai : 2008-09-20 23:25:07Z
akhir : 2008-09-21 10:43:17Z ,

atau selama 11.30275 jam.

2. Tipe Content paling sering diakses.

Untuk mengetahui summary most popular content type, dapat kita analisis variabel lima dan sepuluh data myaccess.log.

Berikut ini script sederhana untuk menampilkan persentase akses, volume dan rata-rata dalam tiap tipe konten.

> table(myaccess.log[[10]]) -> count.mylog
> tapply(myaccess.log[[5]],myaccess.log[[10]],sum) -> volume.mylog
> tapply(myaccess.log[[5]],myaccess.log[[10]],mean) -> mean.size

Dalam analisis ini kita tidak menyertakan kelompok tanpa content (-), yaitu 302 (Found) dan 304 (Not Modified). Untuk itu, ada beberapa tambahan script sedikit untuk menghilangkan kelompok yang tidak kita kehendaki.

> count.mylog[rownames(count.mylog) != "-"] -> count.mylog.with
> volume.mylog[rownames(volume.mylog) != "-"] -> volume.mylog.with
> mean.size[rownames(mean.size) != "-"] -> mean.size.with

Berdasarkan obyek-obyek diatas maka summary analisis dapat kita tampilkan menjadi satu melalui fungsi cbind.

> summary.myaccess.log < - cbind(count.mylog.with/sum(count.mylog.with)*100,volume.mylog.with/sum(volume.mylog.with)*100,mean.size.with/1000)

Hasil akhir dapat ditampilkan dengan mengurutkan kelompok tipe konten berdasarkan persentase jumlah akses tertinggi.

> summary.myaccess.log[order(summary.myaccess.log[,1],decreasing=TRUE),] -> result1


Content Type Count (%) Volume (%) Mean Size (KB)

application/octet-stream 21.79 75.94 86.27
text/html 19.41 2.71 3.46
text/plain 15.84 0.36 0.57
image/gif 15.60 1.68 2.67
image/jpeg 12.09 10.07 20.63
image/png 4.11 0.72 4.32
text/javascript 2.51 0.45 4.44
application/x-javascript 2.39 0.76 7.87
application/vnd.google-earth.kmz 1.56 0.59 9.45
application/x-shockwave-flash 1.56 5.92 94.08
text/css 1.24 0.26 5.17
text/xml 0.65 0.18 6.79
image/x-icon 0.52 0.08 4.03
application/javascript 0.38 0.10 6.31
application/pkix-crl 0.15 0.01 0.96
application/vnd.google-earth.kml+xml 0.13 0.03 5.94
application/xml 0.04 0.00 0.66
image/vnd.microsoft.icon 0.03 0.00 0.85
application/pdf 0.01 0.13 260.05
dat 0.01 0.00 2.85

3. Mean dan Median Service Times.

Dengan menggunakan data pada variabel kedua, maka dengan menggunakan script R berikut ini kita dapat memperoleh nilai ukuran pemusatan Service Times pada cache.

> tapply(myaccess.log[[2]],myaccess.log[[4]],mean) -> mean.time
> tapply(myaccess.log[[2]],myaccess.log[[4]],median) -> median.time

> summary.time.myaccess.log < - cbind(mean.time/1000,median.time/1000)

> summary.time.myaccess.log[order(summary.time.myaccess.log[,1],decreasing=TRUE),] -> result2

Hasilnya adalah sebagai berikut :


Type Mean (sec) Median (sec)

TCP_REFRESH_HIT/200 12.85 0.25
TCP_MISS/200 3.63 0.73
TCP_CLIENT_REFRESH_MISS/200 2.68 1.86
TCP_MISS/000 2.32 2.81
TCP_MISS/503 2.19 1.99
TCP_REFRESH_MISS/200 1.49 1.40
TCP_MISS/411 1.30 1.30
TCP_MISS/403 0.89 0.89
TCP_MISS/400 0.75 0.75
TCP_MISS/302 0.72 0.58
TCP_MISS/301 0.58 0.48
TCP_MISS/404 0.48 0.43
TCP_MISS/204 0.44 0.47
TCP_MEM_HIT/200 0.30 0.02
TCP_MISS/207 0.26 0.22
TCP_MISS/401 0.25 0.17
TCP_MISS/304 0.21 0.15
TCP_DENIED/400 0.17 0.17
TCP_REFRESH_HIT/304 0.16 0.14
TCP_HIT/200 0.06 0.01
TCP_IMS_HIT/304 0.02 0.01
TCP_DENIED/413 0.01 0.01
TCP_NEGATIVE_HIT/404 0.00 0.00

Demikian, masih banyak informasi yang bisa didalami, terutama rekan-rekan yang suka dalam web caching. Banyak aplikasi analisis squid tersedia bebas (free & open source), sehingga mudah2an script sederhana ini dapat membuat kita semakin sayang dengan data terdekat kita dan mampu melakukan eksplorasi sesuai kebutuhan.

Terima kasih buat mas Iqbal (Dhodit).

Salam.

Unung Istopo.

R Scripts ,