Transformación y estandarización de variables

La transformación y estandarización de variables son técnicas comunes utilizadas en el análisis de datos para mejorar la interpretación de los datos y garantizar que las variables sean comparables entre sí.

Transformación de variables

La transformación de variables es una técnica utilizada en estadística y análisis de datos para modificar una variable con el objetivo de cumplir con ciertos supuestos o mejorar la interpretación de los datos. Esta transformación implica aplicar una función matemática a los valores de la variable original para obtener una nueva variable.

La transformación de variables implica aplicar una función matemática a los valores de una variable con el objetivo de modificar su distribución o relación con otras variables. Algunas transformaciones comunes incluyen la transformación logarítmica, la transformación exponencial y la transformación de raíz cuadrada. Estas transformaciones se utilizan principalmente cuando los datos presentan asimetría o heterocedasticidad. Por ejemplo, si se tiene una variable con una distribución sesgada hacia la derecha, se puede aplicar una transformación logarítmica para reducir la asimetría y hacer que los datos se aproximen más a una distribución normal (gráfica o distribución se asemeja a la campana de Gauss).

Existen diferentes tipos de transformaciones de variables que se utilizan según las características de los datos y los objetivos del análisis. Algunas de las transformaciones más comunes son:

Aplicaciones

# Carga de datos

telefonia<- read.csv("https://raw.githubusercontent.com/VictorGuevaraP/Estadistica-R/master/Caso_telefon%C3%ADa.csv",
                     encoding = "latin1", sep = ";", stringsAsFactors = T)

# Mostrar datos
head(telefonia)
##   Código    Género  Sucursal Reclamos Llamadas Edad Minutos Monto Tiempo
## 1 CLIPE1 Masculino Suc. Este        5        7   27    33.0  90.7   16.9
## 2 CLIPE2  Femenino Suc. Este        2        4   28    31.7  95.7    1.5
## 3 CLIPE3 Masculino Suc. Este        5        7   28    39.9 114.5    4.0
## 4 CLIPE4 Masculino Suc. Este        3        5   21    39.3 106.0   14.5
## 5 CLIPE5  Femenino Suc. Este        2        3   29    37.8  99.0    2.7
## 6 CLIPE6 Masculino Suc. Este        3        4   26    43.7  90.2   11.5
##     Opinión
## 1   Regular
## 2     Bueno
## 3    Pésimo
## 4 Muy Bueno
## 5    Pésimo
## 6     Bueno

Transformacion de raiz cuadrada

Esta transformacion se utiliza para reducir la dispersion de los datos cuando estos tienen una distribucion con una varianza que aumenta con el nivel medio de la variable. Tambien puede ayudar a reducir la asimetria.

# Original
hist(telefonia$Edad, 12)

Para sacra la raiz cuadrada, simplemente se puede utilizar la funcion sqrt

# Original
sqrt(telefonia$Edad)
##  [1] 5.196152 5.291503 5.291503 4.582576 5.385165 5.099020 6.324555 6.324555
##  [9] 5.477226 5.196152 5.291503 4.898979 5.099020 5.744563 4.582576 6.324555
## [17] 5.000000 6.164414 5.916080 5.567764 5.291503 5.099020 5.099020 5.744563
## [25] 5.830952 4.690416 5.099020 6.244998 5.567764 4.690416 5.291503 5.916080
## [33] 4.690416 6.324555 5.830952 4.472136 5.830952 4.472136 5.385165 5.744563
## [41] 4.795832 5.916080 4.898979 5.656854 5.656854 5.196152 6.082763 5.656854
## [49] 5.744563 5.916080 6.244998 5.830952 6.164414 6.244998 6.082763 5.656854
## [57] 6.082763 5.000000 5.099020 6.324555 6.324555 5.477226 5.291503 4.898979
## [65] 5.744563 4.582576 5.291503 4.582576 5.385165 6.000000 5.830952 4.472136
## [73] 5.830952 4.472136 5.385165 5.567764 4.690416 6.164414 6.000000 5.744563

Graficamente

hist(sqrt(telefonia$Edad))

Transformación exponencial:

Se aplica cuando los datos tienen una distribución sesgada hacia la izquierda (asimetria negativa). La transformacion exponencial puede ayudar a corregir la asimetria y hacer que los datos se aproximen mas a una distribucion simetrica.

en r para poder obtener esta transformacion, se debe utilizar la funcion exp()

exp(telefonia$Edad)
##  [1] 5.320482e+11 1.446257e+12 1.446257e+12 1.318816e+09 3.931334e+12
##  [6] 1.957296e+11 2.353853e+17 2.353853e+17 1.068647e+13 5.320482e+11
## [11] 1.446257e+12 2.648912e+10 1.957296e+11 2.146436e+14 1.318816e+09
## [16] 2.353853e+17 7.200490e+10 3.185593e+16 1.586013e+15 2.904885e+13
## [21] 1.446257e+12 1.957296e+11 1.957296e+11 2.146436e+14 5.834617e+14
## [26] 3.584913e+09 1.957296e+11 8.659340e+16 2.904885e+13 3.584913e+09
## [31] 1.446257e+12 1.586013e+15 3.584913e+09 2.353853e+17 5.834617e+14
## [36] 4.851652e+08 5.834617e+14 4.851652e+08 3.931334e+12 2.146436e+14
## [41] 9.744803e+09 1.586013e+15 2.648912e+10 7.896296e+13 7.896296e+13
## [46] 5.320482e+11 1.171914e+16 7.896296e+13 2.146436e+14 1.586013e+15
## [51] 8.659340e+16 5.834617e+14 3.185593e+16 8.659340e+16 1.171914e+16
## [56] 7.896296e+13 1.171914e+16 7.200490e+10 1.957296e+11 2.353853e+17
## [61] 2.353853e+17 1.068647e+13 1.446257e+12 2.648912e+10 2.146436e+14
## [66] 1.318816e+09 1.446257e+12 1.318816e+09 3.931334e+12 4.311232e+15
## [71] 5.834617e+14 4.851652e+08 5.834617e+14 4.851652e+08 3.931334e+12
## [76] 2.904885e+13 3.584913e+09 3.185593e+16 4.311232e+15 2.146436e+14

para poder observarlo graficamente se tienen:

plot(exp(telefonia$Edad))

Forma 2

edad_exp <- exp(telefonia$Edad)

hist(edad_exp)

Transformacion logaritmica:

Esta transformacion se utiliza cuando los datos presentan una distribución sesgada hacia la derecha (asimetria positiva). La transformación logaritmica reduce la asimetria y puede facilitar la interpretacion de los datos.

Para la transformacion logaritmica, utlizar log(dentro de los argumentos se puede cambiar la base)

log(telefonia$Edad)
##  [1] 3.295837 3.332205 3.332205 3.044522 3.367296 3.258097 3.688879 3.688879
##  [9] 3.401197 3.295837 3.332205 3.178054 3.258097 3.496508 3.044522 3.688879
## [17] 3.218876 3.637586 3.555348 3.433987 3.332205 3.258097 3.258097 3.496508
## [25] 3.526361 3.091042 3.258097 3.663562 3.433987 3.091042 3.332205 3.555348
## [33] 3.091042 3.688879 3.526361 2.995732 3.526361 2.995732 3.367296 3.496508
## [41] 3.135494 3.555348 3.178054 3.465736 3.465736 3.295837 3.610918 3.465736
## [49] 3.496508 3.555348 3.663562 3.526361 3.637586 3.663562 3.610918 3.465736
## [57] 3.610918 3.218876 3.258097 3.688879 3.688879 3.401197 3.332205 3.178054
## [65] 3.496508 3.044522 3.332205 3.044522 3.367296 3.583519 3.526361 2.995732
## [73] 3.526361 2.995732 3.367296 3.433987 3.091042 3.637586 3.583519 3.496508

graficamente

hist(log(telefonia$Edad))

Cambiar la base 2

log(telefonia$Edad, base=2)
##  [1] 4.754888 4.807355 4.807355 4.392317 4.857981 4.700440 5.321928 5.321928
##  [9] 4.906891 4.754888 4.807355 4.584963 4.700440 5.044394 4.392317 5.321928
## [17] 4.643856 5.247928 5.129283 4.954196 4.807355 4.700440 4.700440 5.044394
## [25] 5.087463 4.459432 4.700440 5.285402 4.954196 4.459432 4.807355 5.129283
## [33] 4.459432 5.321928 5.087463 4.321928 5.087463 4.321928 4.857981 5.044394
## [41] 4.523562 5.129283 4.584963 5.000000 5.000000 4.754888 5.209453 5.000000
## [49] 5.044394 5.129283 5.285402 5.087463 5.247928 5.285402 5.209453 5.000000
## [57] 5.209453 4.643856 4.700440 5.321928 5.321928 4.906891 4.807355 4.584963
## [65] 5.044394 4.392317 4.807355 4.392317 4.857981 5.169925 5.087463 4.321928
## [73] 5.087463 4.321928 4.857981 4.954196 4.459432 5.247928 5.169925 5.044394

graficamente

hist(log(telefonia$Edad, base=2))

Comparacion de transformaciones

# Obtener solo tranformaciones 

edad_sqrt <- sqrt(telefonia$Edad)

edad_exp <- exp(telefonia$Edad)

edad_ln <- log(telefonia$Edad)

edad_log2 <- log(telefonia$Edad, base=2)

edad_log5 <- log(telefonia$Edad, base=5)

ver graficamente cada una:

par(mfrow=c(3,2))
hist(telefonia$Edad)

hist(edad_sqrt)

hist(edad_exp)

hist(edad_ln)

hist(edad_log2)

hist(edad_log5)

par(mfrow=c(1,1))

Este tipo de transformaciones, busca que los datos sean simetricos ( distribucion forma de campana) o que se cumpla un supuesto estadistico

La visualización de la distribucion puede mejorarse con la gráfica de densidad

par(mfrow=c(3,2))

plot(density(telefonia$Edad), main = "Distribucion de edades originales")
plot(density(edad_sqrt), main = "Distribucion de edades tranformadas - sqrt")
plot(density(edad_exp), main = "Distribucion de edades tranformadas - exp")
plot(density(edad_ln), main = "Distribucion de edades tranformadas - ln")
plot(density(edad_log2), main = "Distribucion de edades tranformadas - log2")
plot(density(edad_log5), main = "Distribucion de edades tranformadas - log5 ")

par(mfrow=c(1,1))

Se puede realizar un analisi general de las variables originales y verificar su comportamiento, a partir de alli se puede aplicar la trasfromacion mas adecuado segun objeto.

Grafica general

library(PerformanceAnalytics)

chart.Correlation(cor(telefonia[,4:8]), histigram = TRUE)

Estandarización de variables:

La estandarización de variables, también conocida como normalización, implica transformar los valores de una variable para que tengan una media de cero y una desviación estándar de uno. Esto se logra restando la media de la variable a cada valor y dividiendo por la desviación estándar. La estandarización es útil cuando se desea comparar variables que están en diferentes escalas o unidades. Al estandarizar las variables, se eliminan las diferencias en las escalas y se asegura que todas las variables tengan la misma escala relativa.

Por ejemplo, si tienes un conjunto de variables con diferentes unidades de medida, como peso en kilogramos y altura en metros, puedes estandarizar ambas variables para que sean comparables y no se vean afectadas por las diferencias en las unidades.