5 Estadística Descriptiva
Esta práctica contiene ejercicios que muestran cómo realizar un análisis descriptivo de un conjunto de datos mediante estadísticos muestrales, como por ejemplo:
- Medidas de tendencia central: media, mediana y moda.
- Medidas de posición: cuartiles y percentiles.
- Medidas de dispersión: rango, rango intercuartílico, varianza, desviación típica y coeficiente de variación.
- Medidas de forma: coeficiente de asimetría y coeficiente de apuntamiento.
5.1 Ejercicios Resueltos
Para la realización de esta práctica se requieren los siguientes paquetes:
library(tidyverse)
# Incluye los siguientes paquetes:
# - readr: para la lectura de ficheros csv.
# - dplyr: para el preprocesamiento y manipulación de datos.
library(DescTools) # para el cálculo de la moda.
library(moments) # para el cálculo del coeficiente de asimetría y apuntamiento.
library(vtable) # para resúmenes estadísticos.
library(skimr) # para resúmenes estadísticos.
library(summarytools) # para resúmenes estadísticos.
library(knitr) # para el formateo de tablas.Si se va a usar Copilot para resolver los ejercicios se recomienda añadir el siguiente contexto al comienzo del script o al fichero r.instructions.md.
---
name: "Reglas de programación para R"
applyTo: "**/*.[rR], **/*.qmd"
---
## Reglas de programación para R
- Usar tidyverse para todas las tareas de preprocesamiento (dplyr/tidyr/readr/stringr/lubridate/forcats/purrr).
- Preferir tuberías con |> (o %>% si se usa en el archivo).
- Evitar la manipulación de datos en base R (merge, aggregate, subset) a menos que se solicite explícitamente.
- Mantener el código legible y usar verbos explícitos: select, mutate, summarise, group_by, pivot_longer/wider.
- Cuando no haya ambigüedad no antepongas el nombre del paquete a la función.
- En los nombres de variables y valores respetar el uso de mayúsculas y minúsculas (camelCase o snake_case) y ser consistente en todo el código.
- No generar nuevos data frames, ni modificar los asistentes, salvo cuando se indique explícitamente.
- Utiliza el prefijo `df_` para los nombres de los data frames.
- Organizar las salidas con la función tidy del paquete broom y mostrar solo las columnas relevantes (estimate, std.error, statistic, p.value).
- Mostrar los data frames o las tablas con la función kable del paquete knitr.
- Para gráficos usar ggplot2 y mantener un estilo limpio y profesional.Ejercicio 5.1 Se realizó una encuesta a 40 personas de más de 70 años sobre el número de medicamentos distintos que tomaban habitualmente. El resultado de dicha encuesta fue el siguiente:
| 3 − 1 − 2 − 2 − 0 − 1 − 4 − 2 − 3 − 5 − 1 − 3 − 2 − 3 − 1 − 4 − 2 − 4 − 3 − 2 |
| 3 − 5 − 0 − 1 − 2 − 0 − 2 − 3 − 0 − 1 − 1 − 5 − 3 − 4 − 2 − 3 − 0 − 1 − 2 − 3 |
-
Crear un conjunto de datos con la variable
medicamentos.TipSolucióndf <- data.frame(medicamentos = c(3, 1, 2, 2, 0, 1, 4, 2, 3, 5, 1, 3, 2, 3, 1, 4, 2, 4, 3, 2, 3, 5, 0, 1, 2, 0, 2, 3, 0, 1, 1, 5, 3, 4, 2, 3, 0, 1, 2, 3))Se realizó una encuesta a 40 personas de más de 70 años sobre el número de medicamentos distintos que tomaban habitualmente. Crear un data frame de nombre df con una columna llamada medicamentos que contenga los siguientes valores: 3, 1, 2, 2, 0, 1, 4, 2, 3, 5, 1, 3, 2, 3, 1, 4, 2, 4, 3, 2, 3, 5, 0, 1, 2, 0, 2, 3, 0, 1, 1, 5, 3, 4, 2, 3, 0, 1, 2 y 3. -
Calcular el tamaño muestral.
TipSoluciónEl tamaño muestral generalmente es el número de filas del data frame. Para calcular el número de filas podemos usar la función
Parámetros:nrowdel paquetebasedeR.-
df: data frame del que calcular el número de filas.
nrow(df)[1] 40El tamaño muestral generalmente es el número de filas del data frame. Para calcular el número de filas podemos usar la función la función
Parámetros:countdel paquetedplyrdetidyverse.-
df: data frame del que calcular el número de filas.
Calcular el número de filas del data frame df. -
-
Calcular el número medio de medicamentos que toman las personas de la muestra e interpretarlo.
TipSoluciónPodemos calcular la media con la función
Parámetros:meandel paquete base de R.-
x: vector numérico del que calcular la media. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la media.
mean(df$medicamentos)[1] 2.225Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular la media hay que pasarle como argumento la funciónmeandel paquete base de R.-
x: vector numérico del que calcular la media. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la media.
Calcular la media de la columna medicamentos del data frame df. Interpreta el resultado obtenido. -
-
Calcular la mediana e interpretarla.
TipSoluciónPodemos calcular la mediana con la función
Parámetros:mediandel paquete base de R.-
x: vector numérico del que calcular la mediana. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la mediana.
median(df$medicamentos)[1] 2Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular la mediana hay que pasarle como argumento la funciónmediandel paquete base de R.-
x: vector numérico del que calcular la mediana. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la mediana.
Calcular la mediana de la columna medicamentos del data frame df. Interpreta el resultado obtenido. -
-
Calcular la moda e interpretarla.
TipSoluciónPara calcular la moda podemos usar la función
Parámetros:Modedel paqueteDescTools.-
x: vector numérico del que calcular la moda. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la moda.
Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular la moda podemos usar la funciónModedel paqueteDescTools.-
x: vector numérico del que calcular la moda. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la moda.
Calcular la moda de la columna medicamentos del data frame df. Usa la función Mode del paquete DescTools. Interpretar el resultado obtenido.Existen dos modas 2 y 3 que son los valores más frecuentes en el conjunto de datos. Por tanto, el conjunto de datos es bimodal.
-
-
Calcular el mínimo.
TipSoluciónPodemos calcular el mínimo con la función
Parámetros:mindel paquete base de R.-
x: vector numérico del que calcular el mínimo. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el mínimo.
min(df$medicamentos)[1] 0Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular el mínimo hay que pasarle como argumento la funciónmindel paquete base de R.-
x: vector numérico del que calcular el mínimo. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el mínimo.
Calcular el mínimo de la columna medicamentos del data frame df. -
-
Calcular el máximo.
TipSoluciónPodemos calcular el máximo con la función
Parámetros:maxdel paquete base de R.-
x: vector numérico del que calcular el máximo. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el máximo.
max(df$medicamentos)[1] 5Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular el máximo hay que pasarle como argumento la funciónmaxdel paquete base de R.-
x: vector numérico del que calcular el máximo. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el máximo.
Calcular el máximo de la columna medicamentos del data frame df. -
-
Calcular los cuartiles e interpretarlos.
TipSoluciónPodemos calcular los cuartiles con la función
Parámetros:quantiledel paquete base de R.-
x: vector numérico del que calcular los cuartiles. -
probs: vector de probabilidades para calcular los cuartiles. Por defecto esc(0, 0.25, 0.5, 0.75, 1). -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular los cuartiles.
Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular los cuartiles hay que pasarle como argumento la funciónquantiledel paquete base de R.-
x: vector numérico del que calcular los cuartiles. -
probs: vector de probabilidades para calcular los cuartiles. Por defecto esc(0, 0.25, 0.5, 0.75, 1). -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular los cuartiles.
Es necesario usar la función
unnestdel paquetetidyrpara desanidar el resultado de la funciónquantile.Calcular los cuartiles de la columna medicamentos del data frame df. Interpreta el resultado obtenido. -
-
Calcular los percentiles 5 y 95 e interpretarlos.
TipSoluciónPodemos calcular los percentiles también con la función
quantiledel paquete base de R, simplemente indicando el vector de probabilidades acumuladas correspondientes a los percentiles que queremos calcular.Podemos calcular los percentiles también con la función
quantiledel paquete base de R, simplemente indicando el vector de probabilidades acumuladas correspondientes a los percentiles que queremos calcular.Calcular los percentiles 5 y 95 de la columna medicamentos del data frame df. Interpreta el resultado obtenido. -
Calcular el rango.
-
Calcular el rango intercuartílico.
TipSoluciónPodemos calcular el rango intercuartílico con la función
Parámetros:IQRdel paquete base de R.-
x: vector numérico del que calcular el rango intercuartílico. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el rango intercuartílico.
IQR(df$medicamentos)[1] 2Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular el rango intercuartílico hay que pasarle como argumento la funciónIQRdel paquete base de R.-
x: vector numérico del que calcular el rango intercuartílico. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el rango intercuartílico.
Calcular el rango intercuartílico de la columna medicamentos del data frame df. Interpreta el resultado obtenido. -
-
Calcular la varianza
TipSoluciónPodemos usar la función
Parámetros:vardel paquetestatsde R para calcular la cuasivarianza o varianza corregida \(\sum \frac{(x_i-\bar x)^2}{n-1}\). Para calcular la varianza hay que corregir la cuasivarianza multiplicando por \(\frac{n-1}{n}\), donde \(n\) es el tamaño muestral.-
x: vector numérico del que calcular la cuasivarianza. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la cuasivarianza.
Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular la cuasivarianza hay que pasarle como argumento la funciónvardel paquetestatsde R. Para calcular la varianza hay que corregir la cuasivarianza multiplicando por \(\frac{n-1}{n}\), donde \(n\) es el tamaño muestral.-
x: vector numérico del que calcular la cuasivarianza. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la cuasivarianza.
Calcular la varianza de la columna medicamentos del data frame df. Para ello, primero calcula la cuasivarianza y luego corrige la cuasivarianza multiplicando por (n-1)/n, donde n es el tamaño muestral. -
-
Calcular la desviación típica.
TipSoluciónPodemos usar la función
Parámetros:sddel paquetestatsde R para calcular la cuasidesviación típica o desviación típica corregida \(\sqrt{\sum \frac{(x_i-\bar x)^2}{n-1}}\). Para calcular la desviación típica hay que corregir la cuasidesviación típica multiplicando por \(\sqrt{\frac{n-1}{n}}\), donde \(n\) es el tamaño muestral.-
x: vector numérico del que calcular la cuasivarianza. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la cuasivarianza.
Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular la cuasivarianza hay que pasarle como argumento la funciónsddel paquetestatsde R para calcular la cuasidesviación típica o desviación típica corregida \(\sqrt{\sum \frac{(x_i-\bar x)^2}{n-1}}\). Para calcular la desviación típica hay que corregir la cuasidesviación típica multiplicando por \(\sqrt{\frac{n-1}{n}}\), donde \(n\) es el tamaño muestral.-
x: vector numérico del que calcular la cuasivarianza. -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular la cuasivarianza.
Calcular la desviación típica de la columna medicamentos del data frame df. Para ello, primero calcula la cuasidesviación típica y luego corrige la cuasidesviación típica multiplicando por la raíz cuadrada de (n-1)/n, donde n es el tamaño muestral. Interpreta el resultado obtenido. -
-
Calcular el coeficiente de variación.
TipSoluciónNo existe una función en R para calcular el coeficiente de variación, pero se puede calcular dividiendo la desviación típica entre el valor absoluto de la media. Se suele expresar como porcentaje multiplicando por 100.
Podemos obtener un resumen estadístico con la función
summarisedel paquetedplyrdetidyverse. En particular, para calcular el coeficiente de variación se divide la desviación típica entre el valor absoluto de la media y se multiplica por 100 para expresarlo como porcentaje.Calcular el coeficiente de variación de la columna medicamentos del data frame df. Exprésarlo como un porcentaje. Interpreta el resultado obtenido. -
Calcular el coeficiente de asimetría.
TipSoluciónPara calcular el coeficiente de asimetría podemos usar la función
Parámetros:skewnessdel paquetemoments.-
x: vector numérico del que calcular el coeficiente de asimetría -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el coeficiente de asimetría.
Podemos obtener un resumen estadístico con la función
Parámetros:summarisedel paquetedplyrdetidyverse. En particular, para calcular el coeficiente de asimetría podemos usar la funciónskewnessdel paquetemoments.-
x: vector numérico del que calcular el coeficiente de asimetría -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el coeficiente de asimetría.
Calcular el coeficiente de asimetría de la columna medicamentos del data frame df. Utiliza la función skewness del paquete moments. Interpreta el resultado obtenido.Como \(g_1\) está próxima a 0, la distribución es casi simétrica.
-
-
Calcular el coeficiente de apuntamiento.
TipSoluciónPara calcular el coeficiente de apuntamiento podemos usar la función
Parámetros:kurtosisdel paquetemoments.-
x: vector numérico del que calcular el coeficiente de apuntamiento -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el coeficiente de apuntamiento.
Podemos obtener un resumen estadístico con la función
summarisedel paquetedplyrdetidyverse. En particular, para calcular el coeficiente de apuntamiento podemos usar la funciónkurtosisdel paquetemoments.Parámetros:
-
x: vector numérico del que calcular el coeficiente de asimetría -
na.rm: si esTRUEse eliminan los valores perdidos antes de calcular el coeficiente de asimetría.
Calcular el coeficiente de apuntamiento de la columna medicamentos del data frame df. Utiliza la función kurtosis del paquete moments. Interpreta el resultado obtenido.Como \(g_2>0\), la distribución es más apuntada de lo normal (leptocúrtica). Como además \(g_2\not\in(-2,2)\) se puede concluir que la muestra es demasiado apuntada para provenir de una población normal.
-
Ejercicio 5.2 El fichero colesterol.csv contiene información de una muestra de pacientes donde se han medido la edad, el sexo, el peso, la altura y el nivel de colesterol, además de su nombre.
-
Crear un data frame con los datos de todos los pacientes del estudio a partir del fichero
colesterol.csv.TipSolucióndf <- read.csv("https://aprendeconalf.es/estadistica-practicas-r/datos/colesterol.csv")Crear un data frame de nombre df con los datos de todos los pacientes del estudio a partir del fichero https://aprendeconalf.es/estadistica-practicas-r/datos/colesterol.csv. -
Obtener un resumen del data frame que muestre las variables que contiene, su tipo, el número de filas y el número de columnas.
TipSoluciónPara obtener las variables de un data frame podemos usar la función
Parámetros:strdel paquete base de R.-
object: objeto del que obtener su estructura.
str(df)spc_tbl_ [14 × 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame) $ nombre : chr [1:14] "José Luis Martínez Izquierdo" "Rosa Díaz Díaz" "Javier García Sánchez" "Carmen López Pinzón" ... $ edad : num [1:14] 18 32 24 35 46 68 51 22 35 46 ... $ sexo : chr [1:14] "H" "M" "H" "M" ... $ peso : num [1:14] 85 65 NA 65 51 66 62 60 90 75 ... $ altura : num [1:14] 1.79 1.73 1.81 1.7 1.58 1.74 1.72 1.66 1.94 1.85 ... $ colesterol: num [1:14] 182 232 191 200 148 249 276 NA 241 280 ... - attr(*, "spec")= .. cols( .. nombre = col_character(), .. edad = col_double(), .. sexo = col_character(), .. peso = col_double(), .. altura = col_double(), .. colesterol = col_double() .. ) - attr(*, "problems")=<externalptr>Para obtener las variables y sus tipos de un data frame podemos usar la función
Parámetros:glimpsedel paquetedplyrdetidyverse.-
data: data frame del que obtener las variables.
glimpse(df)Rows: 14 Columns: 6 $ nombre <chr> "José Luis Martínez Izquierdo", "Rosa Díaz Díaz",… $ edad <dbl> 18, 32, 24, 35, 46, 68, 51, 22, 35, 46, 53, 58, 2… $ sexo <chr> "H", "M", "H", "M", "M", "H", "H", "M", "H", "H",… $ peso <dbl> 85, 65, NA, 65, 51, 66, 62, 60, 90, 75, 55, 78, 1… $ altura <dbl> 1.79, 1.73, 1.81, 1.70, 1.58, 1.74, 1.72, 1.66, 1… $ colesterol <dbl> 182, 232, 191, 200, 148, 249, 276, NA, 241, 280, …Para obtener las variables y sus tipos de un data frame podemos usar la función
Parámetros:dfSummarydel paquetesummarytools.-
x: data frame del que obtener las variables.
library(summarytools) print(dfSummary(df, plain.ascii = FALSE, style = "grid"), method = "render")Data Frame Summary
df
Dimensions: 14 x 6
Duplicates: 0No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing 1 nombre [character] 1. Antonio Fernández Ocaña 2. Antonio Ruiz Cruz 3. Carmen López Pinzón 4. Carolina Rubio Moreno 5. Javier García Sánchez 6. José Luis Martínez Izquie 7. José María de la Guía San 8. Macarena Álvarez Luna 9. Marisa López Collado 10. Miguel Angel Cuadrado Gut [ 4 others ] 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 1 ( 7.1% ) 4 ( 28.6% ) 14 (100.0%) 0 (0.0%) 2 edad [numeric] Mean (sd) : 38.2 (15.6) min ≤ med ≤ max: 18 ≤ 35 ≤ 68 IQR (CV) : 25 (0.4) 12 distinct values 14 (100.0%) 0 (0.0%) 3 sexo [character] 1. H 2. M 8 ( 57.1% ) 6 ( 42.9% ) 14 (100.0%) 0 (0.0%) 4 peso [numeric] Mean (sd) : 70.9 (16.1) min ≤ med ≤ max: 51 ≤ 65 ≤ 109 IQR (CV) : 17 (0.2) 12 distinct values 13 (92.9%) 1 (7.1%) 5 altura [numeric] Mean (sd) : 1.8 (0.1) min ≤ med ≤ max: 1.6 ≤ 1.8 ≤ 2 IQR (CV) : 0.1 (0.1) 14 distinct values 14 (100.0%) 0 (0.0%) 6 colesterol [numeric] Mean (sd) : 220.2 (39.8) min ≤ med ≤ max: 148 ≤ 210 ≤ 280 IQR (CV) : 55 (0.2) 13 distinct values 13 (92.9%) 1 (7.1%) Generated by summarytools 1.1.4 (R version 4.3.3)
2026-05-07Obtener un resumen del data frame df que muestre las columnas que contiene, su tipo, el número de filas y el número de columnas. -
-
Calcular el número de valores perdidos en cada variable.
TipSoluciónPara calcular el número de valores perdidos podemos usar la función
Parámetros:colSumsdel paquete base de R, aplicada a la funciónis.naque devuelve un vector lógico indicando si cada elemento esNAo no.-
x: matriz o data frame del que calcular el número de valores perdidos.
Podemos obtener un resumen estadístico con la función
summarisedel paquetedplyrdetidyverse. Para obtener un resumen de todas las variables del data frame, hay que indicar el argumentoacross(everything(), ...). En particular, para calcular el número de valores perdidos podemos aplicar la funciónsumal vector que devuelve la funciónis.nadel paquete base de R.df |> summarise(across(everything(), ~ sum(is.na(.))))nombre edad sexo peso altura colesterol 0 0 0 1 0 1 Podemos obtener un resumen estadístico con la función
Parámetros:skimdel paqueteskimr. El resumen incluye el número de valores perdidos para cada variable además de otros estadísticos.-
data: data frame del que obtener el resumen estadístico.
Data summary Name df Number of rows 14 Number of columns 6 _______________________ Column type frequency: character 2 numeric 4 ________________________ Group variables None Variable type: character
skim_variable n_missing complete_rate min max empty n_unique whitespace nombre 0 1 14 31 0 14 0 sexo 0 1 1 1 0 2 0 Variable type: numeric
skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist edad 0 1.00 38.21 15.62 18.00 24.75 35.00 49.75 68.00 ▇▅▃▅▂ peso 1 0.93 70.92 16.13 51.00 61.00 65.00 78.00 109.00 ▇▅▅▂▂ altura 0 1.00 1.77 0.12 1.58 1.70 1.75 1.84 1.98 ▆▇▆▃▃ colesterol 1 0.93 220.23 39.85 148.00 194.00 210.00 249.00 280.00 ▂▇▂▅▅ Calcular el número de valores perdidos en cada columna del data frame df. -
-
Calcular el tamaño muestral según el sexo.
TipSolución -
Calcular la media y la desviación típica del nivel de colesterol sin tener en cuenta los datos perdidos.
TipSoluciónPara calcular la media y la desviación típica podemos usar las funciones
meanysddel paquete base de R. Es importante indicar el parámetrona.rm = TRUEpara eliminar los valores perdidos antes de calcular la media y la desviación típica.Podemos obtener un resumen estadístico con la función
summarisedel paquetedplyrdetidyverse. En particular, para calcular la media y la desviación típica hay que pasarle como argumento las funcionesmeanysddel paquete base de R. Es importante indicar el parámetrona.rm = TRUEpara eliminar los valores perdidos antes de calcular la media y la desviación típica.Calcular la media y la desviación típica de la columna colesterol de los pacientes del data frame df sin tener en cuenta los datos perdidos. -
Realizar un resumen estadístico de todas las variables que incluya la media, el mínimo, los cuartiles, el máximo y la desviación típica para las variables cuantitativas y la frecuencia absoluta para las variables cualitativas.
TipSoluciónPara obtener un resumen estadístico del conjunto de datos podemos usar la función
summarydel paquetebasede R.Parámetros:
-
object: objeto del que obtener el resumen estadístico. Suele ser un data frame o un vector.
summary(df)nombre edad sexo Length:14 Min. :18.00 Length:14 Class :character 1st Qu.:24.75 Class :character Mode :character Median :35.00 Mode :character Mean :38.21 3rd Qu.:49.75 Max. :68.00 peso altura colesterol Min. : 51.00 Min. :1.580 Min. :148.0 1st Qu.: 61.00 1st Qu.:1.705 1st Qu.:194.0 Median : 65.00 Median :1.755 Median :210.0 Mean : 70.92 Mean :1.769 Mean :220.2 3rd Qu.: 78.00 3rd Qu.:1.840 3rd Qu.:249.0 Max. :109.00 Max. :1.980 Max. :280.0 NA's :1 NA's :1Para obtener un resumen estadístico del conjunto de datos podemos usar la función
Parámetros:stdel paquetevtable.-
data: data frame del que obtener el resumen estadístico.
Para obtener un resumen estadístico del conjunto de datos podemos usar la función
Parámetros:skimdel paqueteskimr.-
data: data frame del que obtener el resumen estadístico.
skim(df)Data summary Name df Number of rows 14 Number of columns 6 _______________________ Column type frequency: character 2 numeric 4 ________________________ Group variables None Variable type: character
skim_variable n_missing complete_rate min max empty n_unique whitespace nombre 0 1 14 31 0 14 0 sexo 0 1 1 1 0 2 0 Variable type: numeric
skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist edad 0 1.00 38.21 15.62 18.00 24.75 35.00 49.75 68.00 ▇▅▃▅▂ peso 1 0.93 70.92 16.13 51.00 61.00 65.00 78.00 109.00 ▇▅▅▂▂ altura 0 1.00 1.77 0.12 1.58 1.70 1.75 1.84 1.98 ▆▇▆▃▃ colesterol 1 0.93 220.23 39.85 148.00 194.00 210.00 249.00 280.00 ▂▇▂▅▅ Para obtener un resumen estadístico del conjunto de datos podemos usar las funciones
Parámetros:descrdel paquetesummarytools.-
x: vector o data frame del que obtener el resumen estadístico. Por defecto calcula la media, la desviación típica, los cuartiles, el mínimo, el máximo, el rango intercuartílico, el coeficiente de variación, y los coeficientes de asimetría y apuntamiento.
altura colesterol edad peso Mean 1.7685714 220.2307692 38.2142857 70.9230769 Std.Dev 0.1150155 39.8479482 15.6213787 16.1269006 Min 1.5800000 148.0000000 18.0000000 51.0000000 Q1 1.7000000 194.0000000 24.0000000 61.0000000 Median 1.7550000 210.0000000 35.0000000 65.0000000 Q3 1.8500000 249.0000000 51.0000000 78.0000000 Max 1.9800000 280.0000000 68.0000000 109.0000000 MAD 0.1111950 41.5128000 17.7912000 14.8260000 IQR 0.1350000 55.0000000 25.0000000 17.0000000 CV 0.0650330 0.1809372 0.4087837 0.2273858 Skewness 0.2052057 -0.0022401 0.3238511 0.9149779 SE.Skewness 0.5973799 0.6163361 0.5973799 0.6163361 Kurtosis -0.9852205 -1.2502343 -1.2886761 -0.1208155 N.Valid 14.0000000 13.0000000 14.0000000 13.0000000 N 14.0000000 14.0000000 14.0000000 14.0000000 Pct.Valid 100.0000000 92.8571429 100.0000000 92.8571429 Realizar un resumen estadístico de todas las columnas del data frame df que incluya la media, el mínimo, los cuartiles, el máximo y la desviación típica para las variables cuantitativas y la frecuencia absoluta para las variables cualitativas. -
-
¿En qué variable es más representativa la media?
TipSoluciónPara obtener un resumen estadístico del conjunto de datos podemos usar la función
Parámetros:stdel paquetevtable.-
data: data frame del que obtener el resumen estadístico. -
vars: vector de nombres de las variables a incluir en el resumen estadístico. -
group: nombre de la variable por la que agrupar los datos. -
summ: vector de funciones a aplicar a las variables seleccionadas. -
summ.names: vector de nombres para las funciones aplicadas.
Summary Statistics Variable Media Desviación Típica Coef. Variación edad 38 16 41 sexo 14 ... H 8 57% ... M 6 43% peso 71 16 23 altura 1.8 0.12 6.5 colesterol 220 40 18 Para obtener un resumen estadístico del conjunto de datos podemos usar las funciones
Parámetros:summariseyacrossdel paquetedplyrdetidyverse.-
.cols: Indica las columnas de las que se obtendrá el resúmen estadístico. Para seleccionar solo las variables numéricas hay que pasarel el argumentowhere(is.numeric). -
.fns: Indica el nombre y la función a aplicar. En este caso utilizaremos la mediamean, desviación típicasdy el coeficiente de variaciónsd / abs(mean) * 100.
edad_Media edad_Desviación Típica edad_Coef. Variación peso_Media peso_Desviación Típica peso_Coef. Variación altura_Media altura_Desviación Típica altura_Coef. Variación colesterol_Media colesterol_Desviación Típica colesterol_Coef. Variación 38.21429 15.62138 40.87837 70.92308 16.1269 22.73858 1.768571 0.1150155 6.503301 220.2308 39.84795 18.09372 Para obtener un resumen estadístico de todas las variables del conjunto de datos tenemos que encadenar las siguientes operaciones:
- Seleccionar las variables numéricas con la función
selectdel paquetedplyrdetidyverse, pasándoloe el argumentowhere(is.numeric). - Pivotar el data frame con la función
pivot_longerdel paquetetidyrdetidyversepara pasarlo a formato largo. - Dividir el data frame por grupos con la función
group_bydel paquetedplyrdetidyverse. - Calcular el resumen estadístico con la función
summarisedel paquetedplyrdetidyverse, aplicando las funcionesmean,sdy la fórmula del coeficiente de variación.
# Seleccionamos las variables numéricas. df |> select(where(is.numeric)) |> # Pivotamos el data frame a formato largo. pivot_longer(everything(), names_to = "Variable", values_to = "Valor") |> # Agrupamos por variable. group_by(Variable) |> # Calculamos la media, desviación típica y coeficiente de variación. summarise("Media" = mean(Valor, na.rm = TRUE), "Desviación Típica" = sd(Valor, na.rm = TRUE), "Coef. Variación" = sd(Valor, na.rm = T) / mean(Valor, na.rm = T) * 100) |> # Mostramos el resultado en una tabla. kable()Variable Media Desviación Típica Coef. Variación altura 1.768571 0.1150155 6.503301 colesterol 220.230769 39.8479482 18.093724 edad 38.214286 15.6213787 40.878374 peso 70.923077 16.1269006 22.738580 Calcular la media, la desviación típica y el coeficiente de variación de las columnas numéricas del data frame df. Interpreta el resultado obtenido para determinar en qué variable es más representativa la media.La variable con el coeficiente de variación más pequeño es la altura, por lo que es la que tiene la media más representativa.
-
-
Realizar un resumen estadístico con el coeficiente de asimetría y el coeficiente de apuntamiento del peso y la estatura según el sexo. ¿Qué grupo tiene peso más normal, los hombres o las mujeres? ¿Y una estatura más normal?
TipSoluciónPara obtener un resumen estadístico del conjunto de datos podemos usar la función
Parámetros:stdel paquetevtable.-
data: data frame del que obtener el resumen estadístico.-
vars: vector de nombres de las variables a incluir en el resumen estadístico. -
group: nombre de la variable por la que agrupar los datos. -
summ: vector de funciones a aplicar a las variables seleccionadas. -
summ.names: vector de nombres para las funciones aplicadas.
-
Summary Statistics Variable Coef. Asimetría Coef. Apuntamiento Coef. Asimetría Coef. Apuntamiento peso 0.61 2.5 -0.47 1.9 altura 0.27 1.9 -0.07 1.8 Para obtener un resumen estadístico con el coeficiente de asimetría y el coeficiente de apuntamiento del peso y la estatura según el sexo tenemos que encadenar las siguientes operaciones:
- Seleccionar las variables deseadas con la función
selectdel paquetedplyrdetidyverse. - Dividir el data frame por grupos según el sexo con la función
group_bydel paquetedplyrdetidyverse. - Calcular el resumen estadístico con la función
summarisedel paquetedplyrdetidyverse, aplicando las funcionesskewnessykurtosisdel paquetemoments.
library(moments) # Seleccionamos las variables peso y altura. df |> select(sexo, peso, altura) |> # Agrupamos por sexo. group_by(sexo) |> # Calculamos los coeficientes de asimetria y apuntamiento para cada grupo. summarise(across(.cols = everything(), .fns = list("Coef. Asimetría" = ~ skewness(.x, na.rm = TRUE), "Coef. Apuntamiento" = ~ kurtosis(.x, na.rm = TRUE)))) |> kable()sexo peso_Coef. Asimetría peso_Coef. Apuntamiento altura_Coef. Asimetría altura_Coef. Apuntamiento H 0.6107239 2.508255 0.2668417 1.904435 M -0.4661293 1.852431 -0.0699589 1.756341 Realizar un resumen estadístico con el coeficiente de asimetría y el coeficiente de apuntamiento de las columnas peso y estatura según el sexo de los pacientes del data frame df. Utiliza las funciones skewness y kurtosis del paquete moments. Interpreta el resultado obtenido para determinar qué grupo tiene un peso más normal y qué grupo tiene una estatura más normal.Las mujeres tienen un peso más normal ya que tanto el coeficiente de asimetría como el de apuntamiento están más próximos a 0. Lo mismo ocurre con la altura.
-
5.2 Ejercicios propuestos
Ejercicio 5.3 En un estudio se ha medido la tensión arterial de 25 individuos. Además se les ha preguntado si fuman y beben:
| Fumador | Bebedor | Tensión arterial |
|---|---|---|
| sí | no | 80 |
| no | no | 92 |
| sí | sí | 75 |
| sí | sí | 56 |
| sí | no | 89 |
| no | no | 93 |
| no | sí | 101 |
| sí | sí | 67 |
| no | no | 89 |
| sí | sí | 63 |
| no | no | 98 |
| sí | sí | 58 |
| no | sí | 91 |
| sí | sí | 71 |
| no | no | 52 |
| no | sí | 98 |
| sí | sí | 104 |
| no | no | 57 |
| no | no | 89 |
| no | sí | 70 |
| sí | sí | 93 |
| no | sí | 69 |
| sí | no | 82 |
| no | sí | 70 |
| sí | no | 49 |
Calcular la media aritmética, desviación típica, coeficiente de asimetría y curtosis de la tensión arterial de los fumadores y de los no fumadores. ¿Se puede considerar que las muestras provienen de una distribución normal?
Calcular la media aritmética, desviación típica, coeficiente de asimetría y curtosis de la tensión arterial de los bebedores y de los no bebedores. ¿Se puede considerar que las muestras provienen de una distribución normal?
Calcular la media aritmética, desviación típica, coeficiente de asimetría y curtosis de la tensión arterial de los grupos que se obtienen según el consumo de alcohol y tabaco. ¿Se puede considerar que las muestras provienen de una distribución normal?
Ejercicio 5.4 El conjunto de datos neonatos contiene información sobre una muestra de 320 recién nacidos en un hospital durante un año que cumplieron el tiempo normal de gestación.
Calcular la media y la mediana muestral del peso de los nacidos e interpretarlos.
Calcular el peso medio de los recién nacidos de la muestra según si la madre ha fumado o no durante el embarazo. Calcular también el peso medio de los recién nacidos de madres que no han fumado durante el embarazo, según si la madre fumaba o no antes del embarazo. ¿Qué conclusiones se pueden sacar?
¿Cuál es la puntuación Apgar al minuto de nacer más frecuente?
Calcular la media de la diferencia entre las puntuaciones Apgar a los 5 minutos y al minuto de nacer. ¿Cómo evolucionan los recién nacidos?
Calcular los cuartiles muestrales del peso de los recién nacidos e interpretarlos.
Comparar los cuartiles muestrales del peso de los recién nacidos según el sexo.
¿Por encima de qué peso estarán el 10% de los niños con mayor peso?
Si se considera que un niño es atípico por bajo peso si se encuentra entre el 5% de los pesos más bajos, ¿por debajo de qué peso tiene que estar?
Calcular el recorrido y el rango intercuartílico muestrales del peso de los recién nacidos e interpretarlos.
Calcular la varianza y la desviación típica del peso de los recién nacidos e interpretarlos.
¿En qué grupo hay más variabilidad del peso de los recién nacidos, en las madres fumadoras o en las madres no fumadoras durante el embarazo? ¿En qué grupo será más representativo el peso medio?
¿Qué variable presenta más variabilidad relativa, el peso de los recién nacidos o el Apgar al minuto de nacer?
Calcular el coeficiente de asimetría y de apuntamiento muestrales del peso de los recién nacidos e interpretarlos.
¿Qué distribución es más asimétrica, la de los pesos de recién nacidos en madres mayores de 20 años o en madres menores de 20 años?
¿Qué distribución es más apuntada, la del peso de los recién nacidos en hombres o en mujeres?
De acuerdo a la forma de la distribución, ¿puede considerarse la puntuación Apgar al minuto de nacer como una variable normal? ¿Y el número de cigarros fumados al día durante el embarazo?
