R'de veri nasıl dönüştürülür (log, kare kök, küp kök)


Birçok istatistiksel test, bir yanıt değişkeninin artıklarının normal şekilde dağıldığını varsayar.

Ancak artıklar çoğu zaman normal dağılıma sahip değildir . Bu sorunu çözmenin bir yolu, yanıt değişkenini üç dönüşümden birini kullanarak dönüştürmektir:

1. Günlük dönüşümü: yanıt değişkenini y’den log(y)’ ye dönüştürün.

2. Karekök dönüşümü: Yanıt değişkenini y’den √y’ye dönüştürün.

3. Küp kök dönüşümü: yanıt değişkenini y’den y 1/3’e dönüştürün.

Bu dönüşümleri gerçekleştirerek, yanıt değişkeni genellikle normal dağılıma yaklaşır. Aşağıdaki örnekler bu dönüşümlerin R’de nasıl gerçekleştirileceğini göstermektedir.

R’de günlük dönüşümü

Aşağıdaki kod, bir yanıt değişkeninde günlük dönüşümünün nasıl gerçekleştirileceğini gösterir:

 #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)

Aşağıdaki kod, bir log dönüşümü gerçekleştirmeden önce ve sonra y dağılımını görüntülemek için histogramların nasıl oluşturulacağını gösterir:

 #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')

R'de veri dönüşümünü günlüğe kaydet

Log-dönüştürülmüş dağılımın orijinal dağılımdan çok daha normal olduğuna dikkat edin. Hala mükemmel bir “çan şekli” değil ama normal dağılıma orijinal dağılımdan daha yakın.

Aslında, her dağılıma birShapiro-Wilk testi uygularsak, orijinal dağılımın normallik varsayımını karşılayamadığını, log-dönüştürülmüş dağılımın ise başaramadığını görürüz (α = 0,05’te):

 #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

R’de karekök dönüşümü

Aşağıdaki kod, bir yanıt değişkeninde karekök dönüşümünün nasıl gerçekleştirileceğini gösterir:

 #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)

Aşağıdaki kod, karekök dönüşümü gerçekleştirmeden önce ve sonra y dağılımını görüntülemek için histogramların nasıl oluşturulacağını gösterir:

 #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') 

R'de karekök dönüşümü

Karekök dönüştürülmüş dağılımın orijinal dağılımdan çok daha normal dağıldığına dikkat edin.

R’de küp kök dönüşümü

Aşağıdaki kod, bir yanıt değişkeninde küp kök dönüşümünün nasıl gerçekleştirileceğini gösterir:

 #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)

Aşağıdaki kod, karekök dönüşümü gerçekleştirmeden önce ve sonra y dağılımını görüntülemek için histogramların nasıl oluşturulacağını gösterir:

 #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') 

R'de küp kök dönüşümü

Veri kümenize bağlı olarak bu dönüşümlerden biri, diğerlerinden daha normal şekilde dağıtılan yeni bir veri kümesi üretebilir.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir