Cara melakukan transformasi box-cox di r (dengan contoh)
Transformasi box-cox adalah metode yang umum digunakan untuk mengubah kumpulan data yang tidak terdistribusi normal menjadi kumpulan data yang lebih terdistribusi normal .
Ide dasar di balik metode ini adalah mencari nilai λ sedemikian rupa sehingga data yang ditransformasikan sedekat mungkin dengan distribusi normal, dengan menggunakan rumus berikut:
- y(λ) = (y λ – 1) / λ jika y ≠ 0
- y(λ) = log(y) jika y = 0
Kita dapat melakukan transformasi box-cox di R menggunakan fungsi boxcox() dari perpustakaan MASS() . Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.
Lihat artikel dari Universitas Connecticut ini untuk ringkasan bagus tentang perkembangan transformasi Box-Cox.
Contoh: Transformasi Box-Cox di R
Kode berikut menunjukkan cara menyesuaikan model regresi linier ke kumpulan data, lalu menggunakan fungsi boxcox() untuk menemukan lambda optimal guna mengubah variabel respons dan menyesuaikan model baru.
library (MASS) #create data y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8) x=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8) #fit linear regression model model <- lm(y~x) #find optimal lambda for Box-Cox transformation bc <- boxcox(y ~ x) (lambda <- bc$x[which.max(bc$y)]) [1] -0.4242424 #fit new linear regression model using the Box-Cox transformation new_model <- lm(((y^lambda-1)/lambda) ~ x)
Lambda optimal ternyata -0.4242424 . Dengan demikian, model regresi baru menggantikan variabel respon y yang asli dengan variabel y = (y -0.4242424 – 1) / -0.4242424.
Kode berikut menunjukkan cara membuat dua plot QQ di R untuk memvisualisasikan perbedaan residu antara dua model regresi:
#define plotting area op <- par(pty = "s", mfrow = c(1, 2)) #QQ plot for original model qqnorm(model$residuals) qqline(model$residuals) #QQ plot for Box-Cox transformed model qqnorm(new_model$residuals) qqline(new_model$residuals) #display both QQ plots by(op)
Secara umum, jika titik data terletak di sepanjang garis diagonal lurus pada plot QQ, kumpulan data kemungkinan besar mengikuti distribusi normal.
Perhatikan bagaimana model transformasi box-cox menghasilkan plot QQ dengan garis yang jauh lebih lurus dibandingkan model regresi aslinya.
Hal ini menunjukkan bahwa residu model transformasi box-cox jauh lebih terdistribusi normal, yang memenuhi salah satu asumsi regresi linier .
Sumber daya tambahan
Cara Mentransformasi Data di R (Log, Akar Kuadrat, Akar Kubus)
Cara membuat dan menafsirkan plot QQ di R
Cara melakukan uji normalitas Shapiro-Wilk di R