Github : https://github.com/ydmarinb

Variables indicadoras

Aveces es necesario utilizar variables categóricas en métodos analı́ticos que solo permiten el ingreso de variables numéricas,por lo que aveces es necesario crear variables indicadoras. Con el paquete dummies podemos hacer estas conversiones.

library(dummies)
library(kableExtra)

base <- read.csv("bases de datos/data-conversion.csv")
kable(head(base),format = "markdown")
Age State Gender Height Income
23 NJ F 61 5000
13 NY M 55 1000
36 NJ M 66 3000
31 VA F 64 4000
58 NY F 70 30000
29 TX F 63 10000
base.dummy <- dummy.data.frame(base)
kable(head(base.dummy),format = "markdown")
Age StateNJ StateNY StateTX StateVA GenderF GenderM Height Income
23 1 0 0 0 1 0 61 5000
13 0 1 0 0 0 1 55 1000
36 1 0 0 0 0 1 66 3000
31 0 0 0 1 1 0 64 4000
58 0 1 0 0 1 0 70 30000
29 0 0 1 0 1 0 63 10000
base.dummy <- dummy.data.frame(base, names = "Gender")
kable(head(base.dummy),format = "markdown")
Age State GenderF GenderM Height Income
23 NJ 1 0 61 5000
13 NY 0 1 55 1000
36 NJ 0 1 66 3000
31 VA 1 0 64 4000
58 NY 1 0 70 30000
29 TX 1 0 63 10000

Reescalar variables

Para entender la necesidad de escalar variables analizaremos la siguiente base de datos

kable(head(base)) %>% column_spec(5,background = "pink") %>% row_spec(c(2,5),background = "yellow") %>% kable_styling(full_width = T)
Age State Gender Height Income
23 NJ F 61 5000
13 NY M 55 1000
36 NJ M 66 3000
31 VA F 64 4000
58 NY F 70 30000
29 TX F 63 10000

Se puede observar que aunque las cuadriculas pintadas en amarillo pertenecen a la misma variable (Income) la diferencia en valor numérico es bastante grande, lo que puede dificultar la implementación de técnicas de Machine Learning. En R cuando queremos escalar las variables hacemos los siguientes procedimientos.

library(scales)

#Ahora reescalamos un variable de la base de datos
kable(rescale(base$Income))
x
0.0740741
0.0000000
0.0370370
0.0555556
0.5370370
0.1666667
0.9074074
1.0000000
0.0185185
0.3518519

Por defecto la función rescale me realiza un escalado de la variables en un rango [0,1] ya que aplica el siguiente método para escalar

\[x.escalada = \frac{x-min(x)}{max(x)-min(x)}\] Si queremos modificar la escala modelos hacer lo siguiente

kable(rescale(base$Income,to=c(1,10)))
x
1.666667
1.000000
1.333333
1.500000
5.833333
2.500000
9.166667
10.000000
1.166667
4.166667

Normalización

la normalización significa ajustar los valores medidos en diferentes escalas respecto a una escala común, a menudo previo a un proceso de realizar promedios. En R se pueden escalar las variables de una base de datos por dedio de el siguiente procedimiento.

base.escalada<- scale(base[,c(4,5)],center=T,scale=T)
kable(head(base.escalada),format = "markdown")
Height Income
-0.7218398 -0.6377182
-2.0342757 -0.8339392
0.3718568 -0.7358287
-0.0656218 -0.6867734
1.2468141 0.5886629
-0.2843611 -0.3924420