Variables indicadoras
Variables cualitativas o categóricas: no tienen una escala natural de medida, son variables discretas. A estas variables se le asigna un conjunto de niveles para tener en cuenta el efecto que pueda tener la variable sobre la respuesta. Esto se hace usando variables indicadoras o también llamadas variables ficticias.
Por lo general, para identificar de forma cuantitativa los niveles de las variables categóricas se asigna el valor de 0 y 1, aunque, se puede asignar dos valores cualesquiera que diferencien las categorías.
Supongamos que en un modelo tenemos dos variables, \(x_1\) y \(x_2\), la variable \(x_1\) es cuantitativa, pero \(x_2\) es una variable categórica que tiene dos estados. La variable \(x_2\) se cambiará por un vector (variable indicadora) de unos y ceros donde el primer estado se asignará el valor de 0 y al segundo estado el valor de 1.
En lugar de que la variable \(x_2\) tenga tres estados, se deben crear dos variables indicadores de unos y ceros, \(x_2\) y \(x_3\).
\(x_2\) |
\(x_3\) |
|
---|---|---|
0 |
1 |
si la observación indica el primer estado. |
1 |
0 |
si la observación indica el segundo estado. |
0 |
0 |
si la observación indica el tercer estado. |
En general, si una variable categórica o cualitativa tiene \(\alpha\) estados o niveles, se deben crear \(\alpha - 1\) variables indicadoras y cada uno con los valores de 0 y 1.
Cuando los estados o niveles de las variables categóricas no tienen un orden de importancia, no se recomienda asignar valores del 1, 2, 3, 4, etc., porque se estaría indicando que algunos estados o niveles son más importantes que otros. Este tipo de variables categóricas se denominan nominales. Por el contrario, las variables categóricas que pueden ordenarse se denominan ordinales, por ejemplo: una variable que indique el nivel de estudios, primaria, secundaria, pregrado, posgrado, etc.; otro ejemplo sería las variables con escala Likert.
La base de datos con variables indicadores debe cumplir con dos características:
1. Mutuamente excluyentes: una observación solo puede pertenecer a una sola categoría.
2. Exhaustivos: ninguna categoría debe quedar por fuera.
Código en R:
datos = read.csv("Ofertas laborales.csv", sep = ";", dec = ",", header = T)
print(head(datos))
cargo vacantes salario_honorarios sexo
1 contador 3 2200000 indiferente
2 contador 1 2500000 indiferente
3 contador 1 2000000 indiferente
4 analista de mercados 3 1500000 indiferente
5 coodinador de planeacion 1 2200000 indiferente
6 administradora 1 1500000 femenino
nivel_educativo años_experiencia idiomas
1 profesional 5.00 no dato
2 profesional 2.00 no dato
3 profesional 2.00 no dato
4 profesional 1.00 no dato
5 profesional 0.25 no dato
6 profesional 1.00 no dato
str(datos)
'data.frame': 86 obs. of 7 variables:
$ cargo : chr "contador" "contador" "contador" "analista de mercados " ...
$ vacantes : int 3 1 1 3 1 1 1 1 1 1 ...
$ salario_honorarios: int 2200000 2500000 2000000 1500000 2200000 1500000 1500000 2000000 2000000 1500000 ...
$ sexo : chr "indiferente" "indiferente" "indiferente" "indiferente" ...
$ nivel_educativo : chr "profesional" "profesional" "profesional" "profesional" ...
$ años_experiencia : num 5 2 2 1 0.25 1 0.5 2 2 3 ...
$ idiomas : chr "no dato" "no dato" "no dato" "no dato" ...
print(table(datos[,c("sexo")]))
femenino indiferente masculino
15 66 5
print(table(datos[,c("nivel_educativo")]))
especialización profesional
6 80
library(ggplot2)
ggplot(data = datos) + geom_bar(aes(y = sexo))
![../../_images/output_11_02.png](../../_images/output_11_02.png)
ggplot(data = datos) + geom_bar(aes(y = nivel_educativo))
![../../_images/output_12_06.png](../../_images/output_12_06.png)
datos$sexo <- factor(datos$sexo,
levels = c(unique(datos$sexo)),
labels = c(1:length(unique(datos$sexo))))
print(datos$sexo)
[1] 1 1 1 1 1 2 2 1 1 3 3 1 1 3 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1
[39] 1 1 1 2 1 2 1 2 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 2 1 3 1 1 2 1 2 2 2
[77] 1 1 1 2 1 1 1 1 3 1
Levels: 1 2 3
datos$nivel_educativo <- factor(datos$nivel_educativo,
ordered = TRUE,
levels = c("profesional", "especialización"),
labels = c(1:length(unique(datos$nivel_educativo))))
print(datos$nivel_educativo)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 2 2 1 1
[39] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1
[77] 1 1 1 1 1 1 1 1 1 1
Levels: 1 < 2
print(head(datos))
cargo vacantes salario_honorarios sexo nivel_educativo
1 contador 3 2200000 1 1
2 contador 1 2500000 1 1
3 contador 1 2000000 1 1
4 analista de mercados 3 1500000 1 1
5 coodinador de planeacion 1 2200000 1 1
6 administradora 1 1500000 2 1
años_experiencia idiomas
1 5.00 no dato
2 2.00 no dato
3 2.00 no dato
4 1.00 no dato
5 0.25 no dato
6 1.00 no dato