Come trasformare i dati in r (log, radice quadrata, radice cubica)


Molti test statistici presuppongono che i residui di una variabile di risposta siano distribuiti normalmente.

Tuttavia, i residui spesso non sono distribuiti normalmente. Un modo per risolvere questo problema è trasformare la variabile di risposta utilizzando una delle tre trasformazioni:

1. Trasformazione del log: trasforma la variabile di risposta da y a log(y) .

2. Trasformazione della radice quadrata: trasforma la variabile di risposta da y a √y .

3. Trasformazione della radice del cubo: trasforma la variabile di risposta da y a y 1/3 .

Eseguendo queste trasformazioni, la variabile di risposta generalmente si avvicina alla distribuzione normale. Gli esempi seguenti mostrano come eseguire queste trasformazioni in R.

Trasformazione logaritmica in R

Il codice seguente mostra come eseguire una trasformazione del log su una variabile di risposta:

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

Il codice seguente mostra come creare istogrammi per visualizzare la distribuzione di y prima e dopo l’esecuzione di una trasformazione del registro:

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

Trasformazione dei dati di registro in R

Nota come la distribuzione trasformata in log sia molto più normale della distribuzione originale. Non ha ancora una perfetta “forma a campana”, ma è più vicina a una distribuzione normale che a quella originale.

Infatti, se eseguiamo un test di Shapiro-Wilk su ciascuna distribuzione, troveremo che la distribuzione originale fallisce l’ipotesi di normalità, mentre la distribuzione trasformata logaritmica no (a α = 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

Trasformazione della radice quadrata in R

Il codice seguente mostra come eseguire una trasformazione radice quadrata su una variabile di risposta:

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

Il codice seguente mostra come creare istogrammi per visualizzare la distribuzione di y prima e dopo l’esecuzione di una trasformazione della radice quadrata:

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

Trasformazione della radice quadrata in R

Si noti come la distribuzione trasformata radice quadrata sia distribuita in modo molto più normale rispetto alla distribuzione originale.

Trasformazione della radice cubica in R

Il codice seguente mostra come eseguire una trasformazione della radice cubica su una variabile di risposta:

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

Il codice seguente mostra come creare istogrammi per visualizzare la distribuzione di y prima e dopo l’esecuzione di una trasformazione della radice quadrata:

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

Trasformazione della radice cubica in R

A seconda del set di dati, una di queste trasformazioni potrebbe produrre un nuovo set di dati distribuito in modo più normale rispetto agli altri.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *