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:

  • Transformación de Box-Cox: Es una transformación paramétrica que puede utilizarse para corregir diferentes tipos de asimetría. La transformación de Box-Cox permite encontrar el valor óptimo del parámetro lambda (λ) que maximiza la simetría de los datos.

APlicaciones

Cargar el conjunto de datos

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

head(telco)
##   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

Transformación de raíz cuadrada:

Esta transformación se utiliza para reducir la dispersión de los datos cuando estos tienen una distribución con una varianza que aumenta con el nivel medio de la variable. También puede ayudar a reducir la asimetría.

# Original
hist(telco$Edad, 12)

Para sacar la raiz cuadrada, simplemente se puede utilizar la función sqrt

sqrt(telco$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(telco$Edad))

Transformación exponencial:

Se aplica cuando los datos tienen una distribución sesgada hacia la izquierda (asimetría negativa). La transformación exponencial puede ayudar a corregir la asimetría y hacer que los datos se aproximen más a una distribución simétrica.

en r para poder obtener esta transformación, se debe utilizar la función exp()

exp(telco$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 tiene:

hist(exp(telco$Edad))

Forma 2

edad_exp<- exp(telco$Edad)
hist(edad_exp)

Transformación logarítmica:

Esta transformación se utiliza cuando los datos presentan una distribución sesgada hacia la derecha (asimetría positiva). La transformación logarítmica reduce la asimetría y puede facilitar la interpretación de los datos.

Para la transformación logaritmica, utilizar log (dentro de los argumentos se puede cambiar la base)

log(telco$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(telco$Edad))

Cambiar la base 2

log(telco$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(telco$Edad, base=2))

Comparación de transformaciones

#Obtener solo tranaformaciones
edad_sqrt <- sqrt(telco$Edad)
edad_exp <- exp(telco$Edad)
edad_ln <- log(telco$Edad)
edad_log2 <- log(telco$Edad, base=2)
edad_log5 <- log(telco$Edad, base=5)

Ver graficamente cada una:

par(mfrow=c(3,2))
hist(telco$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 simétricos (distribución forma de campana) o que se cumpla un supuesto estadístico

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

par(mfrow=c(3,2))
plot(density(telco$Edad), main = "Distribución de edades originales")
plot(density(edad_sqrt), main = "Distribución de edades transformadas - sqrt")
plot(density(edad_exp), main = "Distribución de edades transformadas - exp")
plot(density(edad_ln), main = "Distribución de edades transformadas - ln")
plot(density(edad_log2), main = "Distribución de edades transformadas - log2")
plot(density(edad_log5), main = "Distribución de edades transformadas - log5")

par(mfrow=c(1,1))    

Se puede realizar un análisis general de las variables originales y verificar su comportmiento, a partir de allí se puede aplicar la transformación más adecuado según objetivo.

gráfica general

library(PerformanceAnalytics)
chart.Correlation(cor(telco[,4:8]), histogram = 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.

ggplot

es una librería en R que proporciona una forma fácil y poderosa de crear gráficos de alta calidad. Fue desarrollada por Hadley Wickham y se basa en la gramática de gráficos, lo que significa que utiliza una sintaxis coherente y consistente para construir visualizaciones.

La principal idea detrás de ggplot es que un gráfico se puede descomponer en capas que representan diferentes aspectos de la visualización, como los datos, las variables estéticas, las escalas, los ejes, los títulos, las leyendas, etc. Cada capa se agrega al gráfico utilizando funciones específicas de ggplot.

En ggplot, se sigue un enfoque de “declaración” para construir gráficos. En lugar de dibujar directamente los gráficos, se especifica cómo deberían verse los gráficos y qué datos utilizar. Luego, ggplot se encarga de generar el gráfico final teniendo en cuenta todas las especificaciones.

La sintaxis básica de ggplot involucra tres componentes principales:

  • ggplot(): Esta función inicializa un objeto de gráfico base al que se pueden agregar capas adicionales. Se especifica el conjunto de datos y las variables estéticas dentro de esta función.

  • aes(): Esta función se utiliza dentro de ggplot() o en las capas adicionales para definir las variables estéticas. Las variables estéticas determinan cómo se mapean los datos a los aspectos visuales del gráfico, como las posiciones en los ejes x e y, los colores, los tamaños, etc.

  • Capas adicionales: Después de inicializar el objeto de gráfico con ggplot(), se pueden agregar capas adicionales utilizando funciones como geom_point(), geom_line(), geom_bar(), etc. Estas funciones especifican el tipo de gráfico que se desea agregar al gráfico base y permiten personalizar aún más la visualización.