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)

Medan QQ diubah oleh Box-Cox di R

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

Tambahkan komentar

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