Assalamu'alaikum , salam sejahtera , dan cepat wisuda!
Kali ini kita akan bahas tentang sesuatu yang agak serius, yaitu transformasi data. Kenapa mesti dilakukan transformasi data?, kita tahu dalam statistik itu ada dua mahzab, yaitu mahzab parametrik dan mahzab nonparametrik. Dalam statistik parametrik, data yang akan dianalisis harus berdistribusi normal, jika tidak normal maka pakailah statistik nonparametrik.
Kali ini kita akan bahas tentang sesuatu yang agak serius, yaitu transformasi data. Kenapa mesti dilakukan transformasi data?, kita tahu dalam statistik itu ada dua mahzab, yaitu mahzab parametrik dan mahzab nonparametrik. Dalam statistik parametrik, data yang akan dianalisis harus berdistribusi normal, jika tidak normal maka pakailah statistik nonparametrik.
Bagaimana kalau data kita tidak normal tetapi kita tetap ingin melakukan analisis parametrik?, caranya dengan melakukan transformasi agar data tersebut menjadi lebih "terlihat normal". Pada postingan ini kita akan membahas prakteknya menggunakan R, dan teknik transformasinya adalah memakai Transformasi BoxCox.
Kenapa kita bahas Transformasi BoxCox? bukan yang lain?, karena transformasi BoxCox lebih mudah dilakukan tanpa kita perlu repot-repot melakukan trial and error untuk mencari nilai lambda yang sesuai (lambda itu apa?). Oke daripada tambah pusing membahas teori mari kita langsung ke TKP.
Sebelumnya saya asumsikan (seorang statistisi itu penuh asumsi) :
- Pembaca sudah paham mengenai transformasi boxcox, jadi saya tidak akan bahas teorinya secara detail.
- Sudah memahami fungsi-fungsi dasar R, seperti menyimpan variabel, meload data, menginstall package R, dll.
- Package car,
- Package MASS
Kalau package diatas belum terinstall, install dengan command install.packages("nama package"), perlu koneksi internet untuk mendownload packages.
Pertama kita buka GUI R kesayangan anda, kalau saya memakai RStudio, mengenai GUI lainnya dapat dilihat di post sebelumnya mengenai R.
Untuk simulasi, kita akan gunakan data radiasi oven yang diambil dari buku Applied Multivariate Statistical Analysis (Richard A. Johson dan W. Wichern), datanya bisa di download di SINI !. data ini terdiri dari 42 sampel mengenai tingkat radiasi oven pada pintu tertutup dan terbuka.
![]() |
| Tampilan GUI Rstudio |
Load datanya ke R menggunakan fungsi read.csv(file.choose(), header = TRUE), akan muncul jendela untuk memilih file, pilih file yang anda download tadi. filenya ini akan saya simpan ke variabel dengan nama data.
Kita tertarik untuk menguji apakah data radiasi pintu tertutup normal atau tidak, maka harus kita uji terlebih dahulu. Terdapat banyak cara untuk menguji kenormalan, baik itu : uji kolmogorov smirnov,shapiro wilk, atau dengan menggunakan Q - Q plot, kita akan bahas dengan menggunakan Q - Q plot karena paling mudah.
Untuk membuat Q - Q plot di R sangat mudah, cukup dengan memakai fungsi qqnorm.
| Syntax Q - Q plot di R. |
![]() |
| Q - Q plot dari data radiasi pintu tertutup. |
Terlihat data tidak berdistribusi normal, dan
terdapat outlier. Untuk itu, kita akan melakukan transformasi boxcox pada data
ini agar data menjadi lebih normal. Pertama kita plot dulu pasangan lambda dan l(lambda) untuk
mencari nilai yang
memaksimal fungsi l(lambda)
. Di R sangat mudah dilakukan dengan menggunakan
fungsi boxcox dari package MASS.
Kemudian untuk mencari
nilai dari lambda juga sangat mudah, menggunakan fungsi
powerTransform dari package car.
![]() |
| Nilai l(lambda) dari fungsi power transfrom |
Nilai yang didapat
sangat akurat, nilai yang tertulis di buku adalah
=
0.28, dan dengan menggunakan R didapat nilai
=
0.2759394.
Selanjutnya setelah didapat nilai
maksimum, maka kita lakukan transformasi
boxcox, menggunakan fungsi bcPower dari package car.
![]() |
Data radiasi (pintu tertutup) setelah ditranformasi.
|
Selanjutnya, mari kita
lihat apakah data kita telah normal setelah di transformasikan, kembali kita
pakai fungsi qqnorm.
![]() |
Q-Q plot dari data radiasi (pintu tertutup) setelah
ditransformasi
|
Terlihat bahwa data
telah mendekati distribusi normal, berarti kita telah berhasil melakukan
transformasi data mendekati normal menggunakn trasnformasi boxcox di R.
Tapi jangan senang dan berbangga diri dulu, ini baru transformasi untuk data univariate, belum untuk data multivariate, membayangkannya saja sudah bikin anda ingin berhenti belajar statistik dan segera wisuda untuk segera menikah. Tapi jangan, statistik itu sangat menarik, menurut data dari link ini, dengan tingkat kepeceryaan yang tidak disebutkan, rata-rata gaji seorang statistisi itu lebih besar 56% dari gaji seluruh pekerjaan yang di post di seluruh dunia.
Kembali ke pokok permasalahan, mungkin masih banyak sekali yang saya belum jelaskan pada post kali ini, selanjutnya saya akan posting mengenai transformasi boxcox pada data multivariate.
Salam Statistisi dan cepat wisuda!






Assalamualaikum.wr.wb. maap mas saya mau nanyakan serta meminta saran, begini mas yang saya tahu tidak ada jaminan bila tasformasi bisa memperbaiki akurasi peramalan, cuma saya belum mendapatkan sumber/referensinya mas, kira2 saya bisa mendapatkan referensinya dimana ya mas? Terima kasih atas bantuannya mas.
ReplyDeleteKak pas aku ngejalanin kodingan diatas kok tulisannya response variable must be positive? Salah dimana ya kak?
ReplyDeleteNilai 0 juga dianggap negative disitu kak
Deletekak, ditunggu untuk data multivariat nyaa kak. semangat kak!
ReplyDeletepada saat menjalankan perintah "boxcox....." yang tampil begini = "Error in boxcox.default(data$Return ~ 1) :
ReplyDeleteresponse variable must be positive" itu maksudnya bagaimana yah? mohon sarannya. apa harus nilainya negatif? bagaimana jika data yang ada nilai negatifnya
apa datanya harus positif? bagaimana jika datanya ada nilai negatif?
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteKak saya mau tanya, data saya simulasi tapi saat di tampilkan data data semua tidak ada yang bernilai negatif maupun 0, tapi kenapa ketika di perintahkan untuk melakukan boxcox selalu error "respont variable must be positif" apakah ada salah dari perintah saya? Script yang saya ginuakan sama dengan yang kakak kasih tau kak. Terimakasih
ReplyDeleteIzin kak sama dengan punya saya. Kalau boleh tau bagaimana ya ini cara mengatasinya? Terimakasih
Delete