¿Sabes que son las variables categoricas?, ¿las variables categóricas se pueden clasificar en ordinales, binarias y nominales?
Las variables categóricas son aquellas que no presentan un valor de un número real, sino una categoría; es decir, pueden tomar un valor dentro de un conjunto fijo y limitado de posibles valores, con o sin orden. Por ejemplo:
- Variables binarias: si/no
- Categóricas con orden: nada/poco/normal/mucho.
- Categóricas sin orden: rojo/verde/azul
¿Cómo utilizar las variables categóricas?
Antes de utilizar una de estas variables categóricas en un algoritmo de aprendizaje hay que convertirlo en un número real. Es necesario codificarlo para que el algoritmo correspondiente lo interprete correctamente.
Ejemplo de variables categóricas: peso de niños/niñas en función de la edad y del peso
Queremos un modelo completo para calcular la longitud de un bebe en función de su edad en días y su peso en kg.
#proposiciones categóricas
In [100]: df_weight_height = read.csv ("data/weight_babys.csv")
head (df_weight_height)
set.seed (123)
idx <- sample (l:nrow(df_weight_height), nrow(df_weight_height) * 0.7)
train.df <- df_weight_height [idx,]
test.df <- df_weight_height [-idx,]
gender | day | height | weight | |
<chr> | <int> | <dbl> | <dbl> | |
1 | girl | 1079 | 95.48602 | 13.171765 |
2 | boy | 1662 | 106.66612 | 17.591256 |
3 | boy | 175 | 66.62336 | 8.731773 |
4 | boy | 1646 | 109.82951 | 19.583067 |
5 | girl | 1772 | 109.26331 | 21.579168 |
6 | girl | 1003 | 96.84478 | 11.761331 |
Exploramos cómo se relacionan las variables entre sí, analizando niños y niñas por separado. Se ve una alta correlación entre peso, altura y edad.
#variables categorica
In [ ]: library(GGally)
options (repr.plot.height=4, repr.plot.width=6)
ggpairs(df_weight_height.ggplot2::aes (colour mender, alpha=0.5), lower = list(continuous = wrap("points, alpha=0.8,size=0.1))
Aquí tenemos cómo se distribuyen:
Como queremos hacer un modelo predictivo, vamos a dividir los datos entre test y training:
In [ ]: set.seed(123)
idx<-sample(l:hrow(df_weight_height), nrow(df_weight_height)*0.7) train.df<-df_weight_height[idx,]
test.df<-df_weight_height[-idx,]
Calculemos para la fórmula:
Donde gender es una variable categórica que se traducirá a dos valores:
- Boy-0
- Girl-1
In : model <- lm(data=train.df, formula = height-day+gender) summary (model)
A igual número de días, una niña pesará, aproximadamente, una media 1.07 kg menos.
Sin embargo, si miramos al intervalo de confianza del coeficiente asociado al género, es muy amplio, llegando a ser incluso positivo.
In [104]: confint (model)
2.5 % | 97.5 % | |
(Intercept) | 61.48691887 | 64.91457799 |
day | 0.02685145 | 0.02987543 |
gendergirl | -2.63965925 | 0.50130757 |
Podemos ver las figuras de calidad de la predicción:
// ejemplo de variable cualitativa categorica
In [105]: library(caret)
print("Training: ")
trair.df$pred <- predict (model, train.df)
postResample(train.df$pred, obs = train.df$height)
print("Testing:")
test.df$pred <- predict(model, test.df)
postResample(test.df$pred, obs = test.df$height)
Loading required package: lattice
[1] “Training:”
RMSE: 4.62460353027955 Rsquared: 0.9146361323399 MAE: 3.74075111634861
[1] Testing:”
RMSE: 4.2239352227268 Rsquared: 0.917310902779838 MAE: 3.3127036920325
// categorias de una variable
In [ ] : options (repr.plot.height=2, repr.plot.width=4, repr.plot.res = 400)
ggplot(train.df,aes(x-day, y-pred, color = gender)) + geom_line()
Los resultados pintados se verían así:
Tendríamos dos rectas: una para niños y otra para niñas. La de niñas siempre estaría 1cm más abajo que la de niños, porque este es el resultado que nos arroja el análisis.
El análisis de variables categóricas es un tema que nos concierne en Big Data, ya que siempre vamos a requerir hacer análisis de corte estadístico, no solo cuantitativa, sino también cualitativamente.
Si quieres seguir aprendiendo, te invitamos a inscribirte en nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, en donde, en poco tiempo, aprenderás todo lo necesario para incursionar en el mercado laboral. ¡Anímate a solicitar más información para cambiar tu vida profesional!