in

Introducción a los factores en R

14o9TQrVUiGwaoBjYoSBpBw

Introducción a los factores en R

Los factores juegan un papel crucial en el análisis de datos. Aprenda a crearlos, crear subconjuntos y compararlos.

Linda Ngo

28 de junio de 2020·6 min de lectura

1*4o9TQrVUiGwaoBjYoSBpBw

¿Qué es un factor?

A factor se refiere a un tipo de datos estadísticos que se utiliza para almacenar variables categóricas. Variables categóricas pertenecen a un número limitado de categorías. Variables continuas, por otro lado, puede corresponder a un infinito número de valores.

Es importante distinguir si está trabajando con una variable categórica o una variable continua, ya que los modelos estadísticos tratan ambos tipos de manera diferente.

Un ejemplo de una variable categórica es sex. En la mayoría de los casos, puede limitar las categorías a «Masculino» o «Femenino». Si bien puede haber circunstancias en las que puede incluir categorías adicionales (ya sea para tener en cuenta la variación cromosómica, los animales hermafroditas o diferentes normas culturales), siempre tendrá una finito número de categorías.

Para crear factores en R, use el factor() función. los factor La función se utiliza para codificar un vector como factor (otros términos para factores son ‘categoría’ y ‘tipo enumerado’). Por ejemplo, sex_vector contiene el sexo de 5 individuos diferentes:

sex_vector <- c("Male", "Female", "Female", "Male", "Male")

Está claro que hay dos categorías (niveles de factor): «Hombre y mujer».

La función factor() codificará el vector como factor:

factor_sex_vector <- factor(sex_vector)
1*hzqr4otfX

Aquí hay un ejemplo de la función factor () en acción.

Tipos de variables categóricas

Hay dos tipos diferentes de variables categóricas:

  • A variable categórica nominal, que es una variable categórica sin un orden implícito. Es imposible decir que «uno vale más que el otro». Por ejemplo, considere las categorías "Elephant" , "Giraffe" , "Donkey" , y "Horse" . Es imposible decir que uno esté por encima o por debajo del otro.
  • Un variable categórica ordinal, que tiene un orden natural. Considere las categorías: "Low" , "Medium" , y"High" . Eso es obvio "Medium" rangos más altos que "Low" , y "High" rangos arriba "Medium" .
1*QYRq8V8ZPISUt0T31dprhQ

Observe cómo R construye e imprime variables nominales y ordinales.

R construye e imprime variables nominales y ordinales de manera diferente. Para las variables nominales, no hay ningún orden, por lo que R las imprime sin indicar ningún orden.

# Animals
[1] Elephant Giraffe Donkey Horse
Levels: Donkey Elephant Giraffe Horse

Para variables ordinales, R indica orden usando < .

# Temperature
[1] High Low High Low Medium
Levels: Low < Medium < High

Niveles de factor

A veces, puede ser útil cambiar los nombres de niveles de factores específicos en un conjunto de datos por razones de claridad o por otras razones. Puede hacer esto usando el levels() función:

levels(factor_vector) <- c("name1", "name2", ...)

Por ejemplo, supongamos que los datos brutos de una encuesta contienen una pregunta sobre el sexo del encuestado y solo se registraron dos categorías: "M" y "F" .

survey_vector <- c("M", "F", "F", "M", "M")

Registrar el sexo con abreviaturas puede ser conveniente mientras se recopilan datos (especialmente con lápiz y papel), pero puede resultar confuso una vez que llega el momento de analizar los datos. En ese momento, es posible que desee cambiar los niveles de factor a "Male" y "Female" en lugar de "M" y "F" para mayor claridad.

Precaución: el orden con el que asignas los niveles es importante. levels(factor_survey_vector) salidas [1] "F" "M" . Si no especifica los niveles del factor al crear un vector, R los asignará automáticamente alfabéticamente. Para mapear correctamente "F" para "Female" y "M" para "Male" , los niveles deben establecerse en c("Female", "Male") , en este orden.

1*OFbjgS0 mrXy3gsoVUcBbg

En lugar de los niveles predeterminados «F» y «M» de los datos, los hemos renombrado a «Femenino» y «Masculino».

Resumiendo un factor

los summary() La función ofrece una descripción general rápida del contenido de una variable:

summary(my_var)

Suponga que queremos determinar cuántas respuestas de cada nivel de factor tenemos en nuestro vector. Podemos usar el summary() función para determinar esto.

1*RXzXAHEtWgfwWkbX m09PA

summary (factor_survey_vector) es claramente más útil en este caso en comparación con el resumen (survey_vector)

Comparación de factores

¿Qué sucede cuando intentas comparar elementos de un factor? En factor_survey_vector tienes un factor con dos niveles: "Male" y "Female" . Pero, ¿cómo se valoran estos en relación con los demás?

Probemos si male es mayor que ( > ) female .

1*m9O3e3miaHrjrjqDLIMVZQ

De forma predeterminada, R devuelve NA cuando intenta comparar valores en un factor, ya que la idea no tiene sentido.

Factores ordenados

Para niveles de factor no ordenados (o nominales), como "Male" y "Female" , los operadores de comparación, como el operador mayor que, no son significativos y R devuelve un mensaje de advertencia para reflejarlo.

R asigna un valor igual a los niveles de los factores de forma predeterminada. Sin embargo, este no tiene por qué ser necesariamente el caso. A veces, también se ocupará de factores que tienen un orden natural entre sus categorías. Estos factores se denominan factores ordinales. En esta circunstancia, debemos pasar esta información a R.

Suponga que desea evaluar el desempeño de cinco analistas. Para hacer esto, rastrea su velocidad como "slow" , "medium" , o "fast" . Obtienes los siguientes resultados:

  • El analista 1 es mediano,
  • El analista 2 es lento
  • El analista 3 es lento
  • El analista 4 es mediano y
  • El analista 5 es rápido.

Nuestro primer paso es construir un vector con cinco entradas y asignar el factor de velocidad a cada analista.

# Create speed_vector
speed_vector <- c("medium", "slow", "slow", "medium", "fast")

los speed_vector debe convertirse en un ordinal factor ya que sus categorías tienen un orden natural. Es decir, "fast" es mayor que "medium" , que es entonces mayor que "slow" .

Por defecto, el factor() función transforma la speed_vector en un factor desordenado. Para crear un factor ordenado, se necesitan dos argumentos adicionales: ordered y levels .

factor(some_vector, ordered = TRUE, levels = c("lev1", "lev2", ...))

Al establecer el argumento ordered para TRUE , indicas que el factor está ordenado. Con el argumento levels das los valores del factor en el orden correcto.

Para que lo intentes

Cree un vector ordenado a partir del vector de velocidad. El orden correcto del factor es c("slow", "medium", "fast") .

Solución

# Create speed_vector
speed_vector <- c("medium", "slow", "slow", "medium", "fast")
# Convert speed_vector to ordered factor vector
factor_speed_vector <- factor(speed_vector, ordered=TRUE, levels=c("slow", "medium", "fast"))
# Print factor_speed_vector
factor_speed_vector
summary(factor_speed_vector)
1*5rZ9w4c1E9dF1DUCqQ7vMg

Comparación de factores ordenados

Puede comparar diferentes elementos de un ordenado factor mediante el uso de operadores conocidos. Por ejemplo, para comparar si el elemento del primer vector de factor es mayor que el primer elemento del segundo vector de factor, usaría el operador mayor que ( > ).

factor_vector1[1] > factor_vector2[1]

Para que lo intentes

Supongamos que el ‘analista de datos número dos’ se queja de que el ‘analista de datos número cinco’ está ralentizando todo el proyecto. Compruebe si su afirmación es cierta.

Solución

# Create factor_speed_vector
speed_vector <- c("medium", "slow", "slow", "medium", "fast")
factor_speed_vector <- factor(speed_vector, ordered = TRUE, levels = c("slow", "medium", "fast"))
# Factor value for second data analyst
da2 <- factor_speed_vector[2]
# Factor value for fifth data analyst
da5 <- factor_speed_vector[5]
# Is data analyst 2 faster than data analyst 5?
da2 > da5
1*3Yk P3nmmEO16j p Lbk Q

Los resultados nos dicen que el analista de datos dos se está quejando del analista de datos cinco, mientras que en realidad es el que está ralentizando todo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

fbsxjsVhcfAsg3ZkJsy96X 1200 80

HBO Max en Amazon Fire Stick: cómo obtenerlo y verlo en Fire TV

Gestión de aprendizaje empresarial | Productos Oracle