Jak przekształcać dane w r (log, pierwiastek kwadratowy, pierwiastek sześcienny)


Wiele testów statystycznych zakłada, że reszty zmiennej odpowiedzi mają rozkład normalny.

Jednakże reszty często nie mają rozkładu normalnego. Jednym ze sposobów rozwiązania tego problemu jest przekształcenie zmiennej odpowiedzi za pomocą jednej z trzech transformacji:

1. Transformacja logu: przekształć zmienną odpowiedzi z y na log(y) .

2. Transformacja pierwiastka kwadratowego: Przekształć zmienną odpowiedzi z y na √y .

3. Transformacja pierwiastka sześciennego: przekształć zmienną odpowiedzi z y na y 1/3 .

Wykonując te przekształcenia, zmienna odpowiedzi ogólnie zbliża się do rozkładu normalnego. Poniższe przykłady pokazują, jak wykonać te przekształcenia w R.

Transformacja dziennika w R

Poniższy kod pokazuje, jak wykonać transformację logu zmiennej odpowiedzi:

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

Poniższy kod pokazuje, jak utworzyć histogramy wyświetlające rozkład y przed i po wykonaniu transformacji logarytmicznej:

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

Zaloguj transformację danych w R

Zwróć uwagę, że rozkład przekształcony logarytmicznie jest znacznie bardziej normalny niż rozkład pierwotny. Nadal nie jest to idealny „kształt dzwonu”, ale jest bliższy rozkładowi normalnemu niż rozkładowi pierwotnemu.

W rzeczywistości, jeśli wykonamytest Shapiro-Wilka dla każdego rozkładu, odkryjemy, że pierwotny rozkład nie spełnia założenia normalności, podczas gdy rozkład przekształcony logarytmicznie nie spełnia tego założenia (przy α = 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

Transformacja pierwiastka kwadratowego w R

Poniższy kod pokazuje, jak wykonać transformację pierwiastka kwadratowego zmiennej odpowiedzi:

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

Poniższy kod pokazuje, jak utworzyć histogramy wyświetlające rozkład y przed i po wykonaniu transformacji pierwiastkowej:

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

Transformacja pierwiastka kwadratowego w R

Zwróć uwagę, że rozkład przekształcony w pierwiastek kwadratowy ma znacznie bardziej rozkład normalny niż rozkład pierwotny.

Transformacja pierwiastka sześciennego w R

Poniższy kod pokazuje, jak przeprowadzić transformację pierwiastka sześciennego na zmiennej odpowiedzi:

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

Poniższy kod pokazuje, jak utworzyć histogramy wyświetlające rozkład y przed i po wykonaniu transformacji pierwiastkowej:

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

Transformacja pierwiastka sześciennego w R

W zależności od zbioru danych jedna z tych transformacji może skutkować utworzeniem nowego zbioru danych o bardziej normalnym rozkładzie niż pozostałe.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *