Transformasi Logaritma dan Box-Cox Data dengan R

Transformasi logaritma dan Box - Cox

Kalau di bahasan sebelumnya, kita telah belajar bersama bagaimana cara melakukan transformasi data dengan 3 metode, kali ini saya akan berbagi bagaimana kita menerapkan transformasi dengan 2 metode lagi, yaitu logaritma dan Box-Cox. Dua jenis transformasi ini sering sekali dipakai dalam menghilangkan efek pencilan atau outlier dalam data.

Selain menghilangkan atau setidaknya meminimalisir efek pencilan, transformasi juga bermanfaat untuk menyeragamkan interpretasi pemodelan. Manfaat ini bisa dicapai apabila satuan masing-masing data yang kita pakai berbeda-beda sehingga membuat range datanya juga bisa jadi berbeda dan bahkan sangat melebar.

Kali ini untuk mempraktikan transformasi data log dan Box-Cox dengan R, kita akan mengenerate atau membuat data dummy secara manual saja. Kemudian teman-teman dapat mempraktikannya menggunakan beberapa code berikut ini:

Code:

#Mengenerate data manual
x1 <- c(10, 12, 20, 30, 18, 26, 25, 18, 16, 17, 19, 20, 11, 16, 0, 17, 0, 18, 19, 10)

#Melihat deskriptif data dengan histogram
hist(x1, main = "Data variabel X1", xlab = "sebaran data X1")

Hasil:

Visualisasi 1

Code:

#Transformasi logaritma
#Membuat fungsi transformasi log
translog <- function(x){
  log(x)
}

#Penerapan tranformasi log ke data x1
translog_x1 <- lapply(x1, translog)

#melihat data hasil transformasi log
unlist(translog_x1)

#karena ada data yang nilainya 0, maka transformasinya adalah log(data + 1)
trslog <- function(x){
  log(x + 1)
}

#Penerapan transformasi log (data + 1)
trslog_x1 <- lapply(x1, trslog)

#Melihat data hasil transformasi log(data + 1)
trflogdata <- as.numeric(unlist(trslog_x1))

#Melihat histogram setelah transformasi log
hist(trflogdata, main = "Data transformasi log(x1 + 1)", xlab = "Sebaran data")

Hasil:

Visualisasi 2

Code:

#TRANSFORMASI BOX-COX
#install dan aktivasi package MASS
install.packages("MASS")
library(MASS)

b <- boxcox(lm((x1+1)~1))

#Mendapatkan Lambda Eksak variabel x1
lambda <- b$x[which.max(b$y)]
lambda

#Membuat fungsi transformasi Box-Cox berdasarkan nilai Lambda
tfboxcox <- function(x){
  (x^lambda - 1)/lambda
}

#Menerapkan fungsi transformasi Box-Cox ke data
x1_box <- as.numeric(data.frame(lapply(x1, tfboxcox)))

#Melihat Data hasil transformasi Box-Cox
x1_box

#Melihat histogram data hasil tranformasi Box-Cox
hist(x1_box, main = "Data transformasi Box-Cox", xlab = "Sebaran data")

Hasil:

[1] 11.4412230 14.3168972 26.4770933 42.7487856 23.3527787 36.1223678 34.4889075 23.3527787 20.2807207
[10] 21.8099011 24.9087047 26.4770933 12.8691452 20.2807207 -0.8684211 21.8099011 -0.8684211 23.3527787
[19] 24.9087047 11.4412230

Visualisasi 3

Oke, demikian sedikit ulasan bagaimana kita melakukan transformasi logaritma dan Box-Cox data dengan R. Jangan lupa untuk share, tanya-tanya di kolom komentar yang tersedia, dan tentunya terus menyimak setiap unggahan terbaru dalam blog ini. Selamat mempraktikkan!

Add Comments


EmoticonEmoticon