Cara mentransformasi data di r (log, akar kuadrat, akar kubus)


Banyak uji statistik yang mengasumsikan bahwa sisa variabel respons terdistribusi normal.

Namun, residu seringkali tidak terdistribusi secara normal. Salah satu cara untuk mengatasi masalah ini adalah dengan mentransformasikan variabel respon menggunakan salah satu dari tiga transformasi:

1. Transformasi log: ubah variabel respons dari y menjadi log(y) .

2. Transformasi akar kuadrat: Transformasikan variabel respon dari y menjadi √y .

3. Transformasi akar pangkat tiga: ubah variabel respon dari y menjadi y 1/3 .

Dengan melakukan transformasi ini, variabel respon secara umum mendekati distribusi normal. Contoh berikut menunjukkan cara melakukan transformasi ini di R.

Transformasi log di R

Kode berikut menunjukkan cara melakukan transformasi log pada variabel respons:

 #create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
                 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
                 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform log transformation
log_y <- log10(df$y)

Kode berikut menunjukkan cara membuat histogram untuk menampilkan distribusi y sebelum dan sesudah melakukan transformasi log:

 #create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for log-transformed distribution 
hist(log_y, col='coral2', main='Log Transformed')

Mencatat transformasi data di R

Perhatikan bagaimana distribusi transformasi log jauh lebih normal daripada distribusi aslinya. Ini masih bukan “bentuk lonceng” yang sempurna tetapi lebih mendekati distribusi normal daripada distribusi aslinya.

Faktanya, jika kita melakukan uji Shapiro-Wilk pada setiap distribusi, kita akan menemukan bahwa distribusi asli gagal memenuhi asumsi normalitas, sedangkan distribusi log-transformasi tidak (pada α = 0,05):

 #perform Shapiro-Wilk Test on original data
shapiro.test(df$y)

	Shapiro-Wilk normality test

data: df$y
W = 0.77225, p-value = 0.001655

#perform Shapiro-Wilk Test on log-transformed data 
shapiro.test(log_y)

	Shapiro-Wilk normality test

data:log_y
W = 0.89089, p-value = 0.06917

Transformasi akar kuadrat di R

Kode berikut menunjukkan cara melakukan transformasi akar kuadrat pada variabel respon:

 #create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
                 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
                 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform square root transformation
sqrt_y <- sqrt(df$y)

Kode berikut menunjukkan cara membuat histogram untuk menampilkan distribusi y sebelum dan sesudah melakukan transformasi akar kuadrat:

 #create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for square root-transformed distribution 
hist(sqrt_y, col='coral2', main='Square Root Transformed') 

Transformasi akar kuadrat di R

Perhatikan bagaimana distribusi transformasi akar kuadrat jauh lebih terdistribusi normal daripada distribusi aslinya.

Transformasi akar pangkat tiga di R

Kode berikut menunjukkan cara melakukan transformasi akar pangkat tiga pada variabel respon:

 #create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
                 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
                 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform square root transformation
cube_y <- df$y^(1/3)

Kode berikut menunjukkan cara membuat histogram untuk menampilkan distribusi y sebelum dan sesudah melakukan transformasi akar kuadrat:

 #create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for square root-transformed distribution 
hist(cube_y, col='coral2', main='Cube Root Transformed') 

Transformasi akar pangkat tiga di R

Bergantung pada kumpulan data Anda, salah satu transformasi ini mungkin menghasilkan kumpulan data baru yang terdistribusi lebih normal dibandingkan yang lain.

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *