Aprende a medir la variabilidad de tus datos utilizando la función sd() de R. Descubre ejemplos prácticos y técnicas esenciales para tratar los valores perdidos y los datos agrupados.
La desviación estándar es una de las formas más comunes de resumir la dispersión de tus datos. En R, la función sd() te ofrece una forma rápida de calcular esta medida de variabilidad, tanto si trabajas con vectores, marcos de datos o datos agrupados.
En este artículo, repasaré los conceptos básicos del uso de sd() en R, exploraré cómo tratar los valores perdidos y demostraré cómo calcular desviaciones estándar entre grupos utilizando funciones como tapply() y paquetes como dplyr.
¿Qué hace sd() en R?
En R, la función sd() de R base calcula la desviación estándar de un vector numérico o de una columna de un marco de datos. Mide cuánto se desvían de la media los valores de tus datos, dándote una idea de la variabilidad o dispersión.
Si estás familiarizado con la idea de varianza, la desviación estándar es simplemente su raíz cuadrada y, debido a cómo se calcula (tomando la raíz cuadrada de la desviación media al cuadrado) la desviación estándar permanece en la misma escala que los datos originales. Esto facilita su interpretación práctica.
Un ejemplo sencillo de sd()
Supón que tienes un conjunto de números y quieres saber cuánto varían de la media.
La salida te indica la desviación estándar, que cuantifica la distancia media de cada puntuación respecto a la media.
Puedes utilizar sd() con cualquier vector numérico, incluidos enteros, dobles o resultados de cálculos. Ahora bien, puede que sepas que R trata los vectores lógicos como numéricos (TRUE como 1, FALSE como 0), por lo que la función sd() funcionaría técnicamente con vectores lógicos (puedes probarlo si quieres), pero la idea de desviación estándar tiene más sentido para datos numéricos continuos.
Tratamiento de valores perdidos con sd()
Los conjuntos de datos del mundo real suelen contener valores perdidos, por lo que merece la pena mencionarlo: Si tus datos incluyen algún valor de NA, sd() devolverá NA por defecto.
Para ignorar los valores que faltan y calcular la desviación estándar de los números disponibles, utiliza el argumento na.rm = TRUE. O bien, puedes eliminar los valores de NA de tu conjunto de datos, pero sólo te lo aconsejo si tiene sentido hacerlo.
Ahora obtendrás la desviación estándar para 170, 175, 180 y 185.
Calcular la desviación estándar de los marcos de datos en R
Puedes calcular fácilmente la desviación estándar de una columna concreta de un marco de datos utilizando el operador $. Supón que tienes un marco de datos de pesos de productos:
product_data <- data.frame( weight = c(1.2,1.5,1.3,1.7,1.4), price = c(10,12,11,13,12))
sd(product_data$weight)Con la tecnología de
Esto te da la desviación estándar de la columna weight. Recuerda que sd() está diseñado para vectores numéricos, no para marcos de datos enteros. Selecciona siempre la columna adecuada.
sd() y desviaciones estándar agrupadas
A menudo, querrás medir la variabilidad dentro de los grupos, por ejemplo, por categoría, región o por algún otro factor. R proporciona varias formas de calcular desviaciones estándar agrupadas. Te enseñaré tres:
Utilizar tapply() para desviaciones estándar agrupadas
Supón que tienes datos de ventas de distintas regiones y quieres la desviación estándar de cada región:
sales_amount <- c(200,220,210,250,240,230)
region <- c("North","North","South","South","North","South")
tapply(sales_amount, region, sd)Con la tecnología de
tapply() aplica sd() a cada grupo definido por región.
Uso de aggregate() para desviaciones estándar agrupadas
Si prefieres tus resultados en un marco de datos ordenado, aggregate() funciona:
sales_data <- data.frame( region = c("North","North","South","South","North","South"), amount = c(200,220,210,250,240,230))
aggregate(amount ~ region, data = sales_data, sd)Con la tecnología de
Esto produce un marco de datos de resumen con la desviación estándar de cada región.
Uso de dplyr para desviaciones estándar agrupadas
Con el paquete dplyr, los cálculos agrupados son aún más legibles. Utiliza summarize() después de agrupar:
library(dplyr)
sales_data %>%
group_by(region)%>%
summarize(sd_amount = sd(amount))Con la tecnología de
Este enfoque es especialmente útil para conjuntos de datos más grandes o cuando se encadenan varias transformaciones de datos. (O si simplemente prefieres utilizar el operador tubería, como hago yo).
Errores comunes y consejos
Incluso una función sencilla como sd() puede causar problemas si no tienes cuidado. He aquí algunos escollos comunes:
Datos no numéricos: sd() sólo funciona con vectores numéricos. Si tus datos incluyen caracteres o factores, obtendrás un error. Utiliza is.numeric() para comprobar tus datos.
Valores perdidos: Un solo NA hará que sd() devuelva NA. Utiliza siempre na.rm = TRUE si quieres ignorar los valores perdidos.
Tamaños de muestra pequeños: sd() utiliza n-1 en el denominador (desviación estándar de la muestra). Para vectores de longitud 1, sd() devuelve NA, no 0.
Ese último error en particular, creo que es interesante. Es una diferencia menos conocida, y puede hacerte tropezar si pasas de Python a R, ya que Python divide por la desviación estándar de la población, no de la muestra.
Variaciones útiles y funciones relacionadas en R
R ofrece varias funciones relacionadas para medir la variabilidad y resumir los datos:
var(): Calcula la varianza, que es el cuadrado de la desviación estándar.
apply(), sapply(), lapply(): Útil para aplicar sd() en filas o columnas de matrices y marcos de datos.
mad(): Calcula la desviación absoluta mediana, que es otra medida interesante y más robusta de la variabilidad.
Permíteme mostrarte sd() utilizado con apply(), ya que lo he mencionado: A continuación te explicamos cómo utilizar apply() para obtener la desviación estándar de cada columna de una matriz. Como antes, crearé esa matriz sobre la marcha.
measurement_matrix <- matrix(1:9, nrow =3)
apply(measurement_matrix,2, sd)Con la tecnología de
Esto devuelve la desviación estándar de cada columna, dándote una visión rápida de la variabilidad en múltiples variables.
Conclusión
La función sd() en R es relativamente sencilla (sólo tiene una línea de código). Pero si te encuentras utilizándolo para informes o presentaciones y te sientes un poco confuso con los detalles, inscríbete en nuestro programa de la carrera de Estadístico en R. Hay muchos matices en la estadística y el análisis de datos, así que asegúrate de que estás bien versado.
Para calcular la desviación estándar en Excel, introduce tus datos en un rango de celdas y utiliza =STDEV.S() para datos de muestra o =STDEV.P() para datos de población.
¡Lleva tus habilidades de programación en R al siguiente nivel! Aprende a trabajar con estructuras de datos habituales, optimizar código y escribir tus propias funciones.
La desviación estándar es una de las formas más comunes de resumir la dispersión de tus datos. En R, la función
sd()te ofrece una forma rápida de calcular esta medida de variabilidad, tanto si trabajas con vectores, marcos de datos o datos agrupados.En este artículo, repasaré los conceptos básicos del uso de
sd()en R, exploraré cómo tratar los valores perdidos y demostraré cómo calcular desviaciones estándar entre grupos utilizando funciones comotapply()y paquetes comodplyr.¿Qué hace sd() en R?
En R, la función
sd()de R base calcula la desviación estándar de un vector numérico o de una columna de un marco de datos. Mide cuánto se desvían de la media los valores de tus datos, dándote una idea de la variabilidad o dispersión.Si estás familiarizado con la idea de varianza, la desviación estándar es simplemente su raíz cuadrada y, debido a cómo se calcula (tomando la raíz cuadrada de la desviación media al cuadrado) la desviación estándar permanece en la misma escala que los datos originales. Esto facilita su interpretación práctica.
Un ejemplo sencillo de sd()
Supón que tienes un conjunto de números y quieres saber cuánto varían de la media.
Así es como lo harías en R:
La salida te indica la desviación estándar, que cuantifica la distancia media de cada puntuación respecto a la media.
Puedes utilizar
sd()con cualquier vector numérico, incluidos enteros, dobles o resultados de cálculos. Ahora bien, puede que sepas que R trata los vectores lógicos como numéricos (TRUEcomo1,FALSEcomo0), por lo que la funciónsd()funcionaría técnicamente con vectores lógicos (puedes probarlo si quieres), pero la idea de desviación estándar tiene más sentido para datos numéricos continuos.Tratamiento de valores perdidos con sd()
Los conjuntos de datos del mundo real suelen contener valores perdidos, por lo que merece la pena mencionarlo: Si tus datos incluyen algún valor de
NA,sd()devolveráNApor defecto.Considera este ejemplo:
El resultado es
NA.Para ignorar los valores que faltan y calcular la desviación estándar de los números disponibles, utiliza el argumento
na.rm = TRUE. O bien, puedes eliminar los valores deNAde tu conjunto de datos, pero sólo te lo aconsejo si tiene sentido hacerlo.Ahora obtendrás la desviación estándar para 170, 175, 180 y 185.
Calcular la desviación estándar de los marcos de datos en R
Puedes calcular fácilmente la desviación estándar de una columna concreta de un marco de datos utilizando el operador
$. Supón que tienes un marco de datos de pesos de productos:Esto te da la desviación estándar de la columna
weight. Recuerda quesd()está diseñado para vectores numéricos, no para marcos de datos enteros. Selecciona siempre la columna adecuada.sd() y desviaciones estándar agrupadas
A menudo, querrás medir la variabilidad dentro de los grupos, por ejemplo, por categoría, región o por algún otro factor. R proporciona varias formas de calcular desviaciones estándar agrupadas. Te enseñaré tres:
Utilizar tapply() para desviaciones estándar agrupadas
Supón que tienes datos de ventas de distintas regiones y quieres la desviación estándar de cada región:
tapply()aplicasd()a cada grupo definido por región.Uso de aggregate() para desviaciones estándar agrupadas
Si prefieres tus resultados en un marco de datos ordenado,
aggregate()funciona:Esto produce un marco de datos de resumen con la desviación estándar de cada región.
Uso de dplyr para desviaciones estándar agrupadas
Con el paquete
dplyr, los cálculos agrupados son aún más legibles. Utilizasummarize()después de agrupar:Este enfoque es especialmente útil para conjuntos de datos más grandes o cuando se encadenan varias transformaciones de datos. (O si simplemente prefieres utilizar el operador tubería, como hago yo).
Errores comunes y consejos
Incluso una función sencilla como sd() puede causar problemas si no tienes cuidado. He aquí algunos escollos comunes:
Datos no numéricos:
sd()sólo funciona con vectores numéricos. Si tus datos incluyen caracteres o factores, obtendrás un error. Utilizais.numeric()para comprobar tus datos.Valores perdidos: Un solo
NAhará quesd()devuelvaNA. Utiliza siemprena.rm = TRUEsi quieres ignorar los valores perdidos.Tamaños de muestra pequeños:
sd()utiliza n-1 en el denominador (desviación estándar de la muestra). Para vectores de longitud 1,sd()devuelveNA, no0.Ese último error en particular, creo que es interesante. Es una diferencia menos conocida, y puede hacerte tropezar si pasas de Python a R, ya que Python divide por la desviación estándar de la población, no de la muestra.
Variaciones útiles y funciones relacionadas en R
R ofrece varias funciones relacionadas para medir la variabilidad y resumir los datos:
var(): Calcula la varianza, que es el cuadrado de la desviación estándar.apply(),sapply(),lapply(): Útil para aplicarsd()en filas o columnas de matrices y marcos de datos.mad(): Calcula la desviación absoluta mediana, que es otra medida interesante y más robusta de la variabilidad.Permíteme mostrarte
sd()utilizado conapply(), ya que lo he mencionado: A continuación te explicamos cómo utilizarapply()para obtener la desviación estándar de cada columna de una matriz. Como antes, crearé esa matriz sobre la marcha.Esto devuelve la desviación estándar de cada columna, dándote una visión rápida de la variabilidad en múltiples variables.
Conclusión
La función
sd()en R es relativamente sencilla (sólo tiene una línea de código). Pero si te encuentras utilizándolo para informes o presentaciones y te sientes un poco confuso con los detalles, inscríbete en nuestro programa de la carrera de Estadístico en R. Hay muchos matices en la estadística y el análisis de datos, así que asegúrate de que estás bien versado.