Agenda
Medidas de resumen para variables numéricas
Análisis descriptivo de variables categóricas
Medidas de resumen de variables categóricas con R
Tablas Reproducible
tbl_summary() paso a paso
medida de posición
)tendencia central
)
Para una variable de interés X, se tiene la muestra conformada por n elementos x1,x2,x3,...,xn entonces podemos resumir esta muestra de valores mediante los siguientes estadísticos:
Media aritmética: ˉx
Media geométrica: ˉxg
Otras medias: truncada y armónica
Mediana: Med(x)
Moda: Moda(x)
Percentiles: P25 y P75
Cuartiles: Q1, Q2 y Q3
Varianza y desviación estándar: Var(x) y DE(x)
Rango
Rango intercuartílico: RIQ
Coeficiente de variación: CV
ˉx=x1+x2+x3+...+xnn=∑ni=1xin
Ejemplo
Sean las siguientes edades en años: 36,4,75,45,50, su media aritmética es
36+4+75+45+505=2105=42
Forma de promedio útil para conjuntos de números positivos que se desean interpretar de acuerdo a su producto en vez de su suma.
Es la raíz n−ésima del producto de los números y está dada por la siguiente expresión:
ˉxg=n√x1x2x3...xn=(x1x2x3...xn)1n=(n∏i=1xi)1n
Ejemplo
Sean las siguientes edades en años: 36,4,75,45,50, su media geométrica es
(36×4×75×45×50)15=5√24300000=30
Media truncada
Media truncada o recortada (en inglés trimmed mean) es una medida de tendencia central similar a la media aritmética que se calcula luego de descartar las partes de ambos extremos de la distribución.
Típicamente se descartan las mismas proporcions de datos en los extremos.
En la mayoría de aplicaciones se descartan entre 5% a 25%.
En algunas regiones también la conocen como media windsoriana.
La usan mucho en eventos de competición para eliminar la influencia de las calificaciones extremas de los jueces
Media armónica
Es un tipo de medida promedio conocida por ser una de las medias pitagóricas.
Se expresa como el recíproco de las medias aritméticas de los recíprocos de un conjunto dado de observaciones.
H=n1x1+1x2+...+1xn=n∑ni=11xi=(∑ni=1x−1in)−1 - Es más útil en situaciones donde se desea promediar tasas o estadístico similares basados en medidas de razón.
Med(x)={x(n+1)/2si n es imparx(n/2)+x(n/2+1)2si n es par
Ejemplo
Luego de ordenar de menor a mayor, tenemos 4,36,45,50,75. Como n=5 es impar, entonces
Med(x)=x(5+1)/2=x(3)=45
Es el valor que aparece más frecuentemente en los datos.
No necesariamente es única.
Unimodal
Multimodal
Multimodal extremo: Uniforme
En resumen, la visualización geométrica de la media, mediana y moda para una distribución unimodal es la siguiente.
Moda:
Valor más frecuente (punta más alta de distribución)
Mediana:
Valor que divide datos en 50% (mitad de la distribución)
Media:
Centro de gravedad (punto en el que los “pesos” de ambos lados se igualan)
Funciones
Funciones de R base:
mean()
mean(…, trim = …)
median()
Funciones extras a R base:
Datos para los cálculos
Media aritmética
Media geométrica
Media truncada
Mediana
Son los valores que funcionana como puntos de corte para dividir el rango de datos en intervalos continuos con igual frecuencia.
El k−ésimo q−cuantil es el valor de los datos donde su función de distribución acumulada cruza k/q.
Es decir, x es el k−ésimo q−cuantil para una variable X si:
Pr[X<x]≤k/q
Pr[X≤x]≥k/q
El nombre del cuantil depende de cuántos grupos se forman.
La cantidad de cuantiles es siempre 1 menos.
Hay una lista bastante grande de cuantiles.
Los más famosos son:
Q-cuantil | Nombre del cuantil | Número de grupos iguales | Número de cuantiles |
---|---|---|---|
2-cuantil | Mediana | 2 | 1 |
3-cuantil | Terciles | 3 | 2 |
4-cuantil | Cuartiles | 4 | 3 |
5-cuantil | Quintiles | 5 | 4 |
6-cuantil | Sextiles | 6 | 5 |
7-cuantil | Septiles | 7 | 6 |
8-cuantil | Octiles | 8 | 7 |
10-cuantil | Deciles | 10 | 9 |
12-cuantil | Dodeciles | 12 | 11 |
16-cuantil | Hexadeciles | 16 | 15 |
20-cuantil | Ventiles | 20 | 19 |
100-cuantil | Percentiles | 100 | 99 |
1000-cuantil | Permiles o Mililes | 1000 | 999 |
Los cuartiles dividen los datos en cuatro partes iguales
Los gráficos de cajas utilizan los cuartiles para realizar el dibujo de los elementos de la caja.
Los percentiles dividen los datos en 100 partes iguales
Se usan para construir infinidad de estadísticos:
En inferencia estadística, se usan para establecer
Funciones
Funciones de R base:
Datos para los cálculos
Cuartiles
Percentiles
0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12%
6.00 6.05 6.10 6.15 6.20 6.25 6.30 6.35 6.40 6.45 6.50 6.55 6.60
13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25%
6.65 6.70 6.75 6.80 6.85 6.90 6.95 7.00 7.05 7.10 7.15 7.20 7.25
26% 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38%
7.30 7.35 7.40 7.45 7.50 7.55 7.60 7.65 7.70 7.75 7.80 7.85 7.90
39% 40% 41% 42% 43% 44% 45% 46% 47% 48% 49% 50% 51%
7.95 8.00 8.05 8.10 8.15 8.20 8.25 8.30 8.35 8.40 8.45 8.50 8.55
52% 53% 54% 55% 56% 57% 58% 59% 60% 61% 62% 63% 64%
8.60 8.65 8.70 8.75 8.80 8.85 8.90 8.95 9.00 9.05 9.10 9.15 9.20
65% 66% 67% 68% 69% 70% 71% 72% 73% 74% 75% 76% 77%
9.25 9.30 9.35 9.40 9.45 9.50 9.55 9.60 9.65 9.70 9.75 9.80 9.85
78% 79% 80% 81% 82% 83% 84% 85% 86% 87% 88% 89% 90%
9.90 9.95 10.00 10.10 10.20 10.30 10.40 10.50 10.60 10.70 10.80 10.90 11.00
91% 92% 93% 94% 95% 96% 97% 98% 99%
11.10 11.20 11.30 11.40 11.50 11.60 11.70 11.80 11.90
Medida de la cantidad de variación o dispersión de los datos.
Es la raíz cuadrada de la varianza.
Está en las mismas unidades que la variable.
Fórmula:
Sea ˉx la media de los n datos x1,x2,...,xn, entonces la varianza está definida por:
Var(x)=∑ni=1(xi−ˉx)2n−1 Entonces, la desviación estándar de la muestra es:
DE(x)=√Var(x)
Es el tamaño del intervalo más pequeño que contiene a todos los datos.
Diferencia entre el valor mínimo y máximo.
Fórmula
Rango=min(X)−max(X)
Medida de la cantidad de variación de los datos.
Es la diferencia entre los percentiles 75 y 25 de los datos.
Contiene el 50% central de los datos.
El ancho de la caja de un gráfico de cajas es el IQR.
Fórmula:
RIQ=Percentil 75−Percentil 25
Manualmente
Podemos almacenar los resultados en objetos
También conocido como desviación estándar relativa.
Medida estandarizada de dispersión expresada como porcentaje.
Es la razón de la desviación estandar sobre la media y mide la extensión de la variabilidad en relación a la media
CV=DE(x)ˉx
Manualmente
Media:
DE:
CV en %
Usando función
No función específica disponible.
Existe en funciones que generan varias variables de resumen.
Media y mediana no son dos medidas que deban entrar en disputa
.
Ambas cuentan dos historias complementarias sobre el “centro” de los datos.
Ambas representan a los datos a su manera.
Piensa en lo que quieres hacer
¿Quiero describir mis datos con el “mejor representante” posible?
Recuerda el mantra: "Media es más sensible a valores extremos"
. La distribución de los datos puede ayudar a elegir.
Distribuciones sesgadas: La mediana
y medidas de posición
suelen representar mejor
los datos en términos descriptivos
.
Distribuciones simétricas: Mediana
y media
son buenas
, la media se prefiere
por sus propiedades estadísticas
e interpretación intuitiva
.
¿Quiero comparar medidas de tendencia central para inferir efectos?
La media es una buena candidata, sean las distribuciones sesgadas o no.
La mediana no es una mala candidata, sin embargo, sus propiedades estadísticas y menor teoría desarrollada limitan actualmente su uso.
¿Quiero usar una medida de resumen para establecer predicciones?
La media es una de las más usadas, sean las distribuciones sesgadas o no.
La mediana tiene teoría menos desarrollada, pero existen algunas aplicaciones.
¿Tenemos que elegir?
No, no tenemos que elegir!!
En ensayos clínicos es preferible reportar ambos
es más transparente
y proporciona más información
.
limitaciones de espacio
y tablas en cuerpo del artículo, se suele reportar en anexos
.hacer lo mismo en estudios observacionales
.Tengo limitaciones de espacio y debo elegir una medida en la tabla principal:
Elige la opción que mejor se adecue a tu objetivo: describir
, explicar
, predecir
.
RECUERDA:
Pon en anexos las demás medidas. Es información que podría ser útil para otros fines (p. ej., para calcular tamaño de muestra, evaluar comparabilidad de poblaciones, etc.)
Si objetivo es DESCRIBIR…
Siempre reporte máximo
y mínimo
, preferentemente en tabla principal
o texto.
Es mejor que rango, provee más información.
Si problemas de espacio, usar tabla anexa
.
Media
+/- Desviación estándar
simétrica
y variabilidad es relativamente baja
.Mediana
(percentil 25
- percentil 75
)
asimétrica
o variabilidad es relativamente alta
.percentiles 25 y 75
en vez de rango intercuartílico (más información
de los primeros)Hay varias opciones en R.
Las más personalizables se basan en {R base} y {dplyr} (funciones summarise()), pero requieren más código.
Usar estas si se necesitan elaborar tablas ad hoc para reportes repropducibles muy sui generis.
También son necesarias para gráficos en {ggplot2}
Las opciones que requieren poco código y son directas tienen el problema de que no son personalizables:
{summarytools}
{DescTools}
{Hmisc}
Usar estas si solo se requiere inspeccionar los datos pero no se hará ningún reporte reproducibl sui generis.
El problema con R base es que solo permite generar medidas de resumen una a la vez.
Cuando inspeccionamos datos o los describimos necesitamos hacerlo con varias variables simultáneamnente.
Podemos hacerlo con otras funciones de R.
Hay muchas opciones, veremos algunas que se sustentan en R tidy
Varios estadísticos pueden obtenerse
Varias variables pueden analizarse
bd_inmuno %>%
summarise(
`Media de edad` = mean(edad),
`DE de edad` = sd(edad),
`Mediana de edad` = median(edad),
Mediana_IgG_Final = median(IgG_Basal, na.rm = TRUE),
RIQ_IgG_Final = IQR(IgG_Basal, na.rm = TRUE)
)
Media de edad DE de edad Mediana de edad Mediana_IgG_Final RIQ_IgG_Final
1 48.24561 14.70901 46 28.325 88.17
Una sola variable numérica
Todas las variables numéricas
Descriptive Statistics
bd_inmuno
N: 285
edad id IgG_Basal IgG_Final tdosis_refuerzo
----------------- -------- -------- ----------- ----------- -----------------
Mean 48.25 143.00 82.54 492.26 214.47
Std.Dev 14.71 82.42 122.33 71.15 25.28
Min 23.00 1.00 -2.19 235.51 134.00
Q1 36.00 72.00 8.13 447.18 199.00
Median 46.00 143.00 28.33 501.20 222.00
Q3 59.00 214.00 96.61 545.15 235.00
Max 97.00 285.00 583.97 618.44 267.00
MAD 17.79 105.26 36.80 70.13 22.24
IQR 23.00 142.00 88.17 97.97 36.00
CV 0.30 0.58 1.48 0.14 0.12
Skewness 0.44 0.00 2.14 -0.73 -0.87
SE.Skewness 0.14 0.14 0.14 0.14 0.14
Kurtosis -0.39 -1.21 3.92 0.44 -0.08
N.Valid 285.00 285.00 284.00 285.00 285.00
Pct.Valid 100.00 100.00 99.65 100.00 100.00
Solo algunas variables numéricas
Descriptive Statistics
bd_inmuno
N: 285
edad IgG_Basal
----------------- -------- -----------
Mean 48.25 82.54
Std.Dev 14.71 122.33
Min 23.00 -2.19
Q1 36.00 8.13
Median 46.00 28.33
Q3 59.00 96.61
Max 97.00 583.97
MAD 17.79 36.80
IQR 23.00 88.17
CV 0.30 1.48
Skewness 0.44 2.14
SE.Skewness 0.14 0.14
Kurtosis -0.39 3.92
N.Valid 285.00 284.00
Pct.Valid 100.00 99.65
Modo R base
Más información sobre el análisis de variables numéricas con…
Tablas para epi: https://epirhandbook.com/en/descriptive-tables.html
{dplyr}: https://dplyr.tidyverse.org/reference/group_by.html
{janitor}: http://sfirke.github.io/janitor/articles/tabyls.html
{summarytools}: https://htmlpreview.github.io/?https://github.com/dcomtois/summarytools/blob/master/doc/introduction.html
La media aritmética es una medida que trata de resumir los datos de una variable numérica en un solo valor.
Propiedad interesante: Es la medida que más cerca está de todos los datos.
“La edad media fue de 34 años (…)”
Ejemplo
El promedio de estas notas es 16.
Cada nota se desvía del promedio en lo siguiente:
notas | promedio_notas | desvio_notas | desvio_promedio |
---|---|---|---|
15 | 16 | -1 | 0 |
20 | 16 | 4 | 0 |
17 | 16 | 1 | 0 |
12 | 16 | -4 | 0 |
Mediana
“La mediana de edad fue de 35 años (…)”
“La mitad de los participantes tuvieron niveles de
hemoglobina por debajo de 10.2 mg/dl (…)“
Percentiles 25 y 75
“La mediana de edad fue de 35 años
(20 años - 54 años) (…)“
“El 25% de los participantes tuvieron menos de 20
años y el 75% menos de 54 años (…)“
Varianza
No se suele interpertar.
Debido a que está en unidades al cuadrado no se suele reportar, se prefiere a la desviación estándar.
Desviación estándar
No se suele interpretar, solo reportar.
Lo que implica que su interpretación/significado es tácito.
Es la medida de dispersión que acompaña por defecto a la media:
“La edad media (desviación estándar) fue de 35
años (23 años) (…)“
Rango
Es preferible reportar los valores mínimo y máximo.
A menudo se parafrasea:
“La edad media (desviación estándar) fue de 35
años (23 años) y varió entre 19 y 54 años (…)“
Rango intercuartílico
Es preferible reportar el percentil 25 y 75, no la diferencia: Da más información.
Se parafrasea como el ejemplo de los percentiles 25 y 75.
También se puede parafrasear de la siguiente manera:
“La mediana de edad fue de 35 años
y la mitad de los participantes tuvo
entre 20 años y 54 años (…)“
Coeficiente de variación
Cuando se reporta, no se suele interpretar (es tácito).
Sin embargo, podemos hacer una valoración ‘cualitativa’ del valor para algun interpretación.
Algunas reglas del pulgar (según INEI, Perú):
Descargue la carpeta denominada taller05 disponible en la carpeta compartida.
Abra el proyecto denominado taller05.Rproj
Complete y ejecute el código faltante en los chunk de código de la PRIMERA PARTE.
Una vez culmine todo el proceso, renderice el archivo .qmd.
Tomemos un descanso de 5 minutos
…
Estire las piernas …
Deje de ver las pantallas …
… cualquier , las del celular también.
05:00
Agenda
Medidas de resumen para variables numéricas
Análisis descriptivo de variables categóricas
Medidas de resumen de variables categóricas con R
Tablas Reproducible
tbl_summary() paso a paso
¿Qué describir de los datos categóricos?
Frecuencia absoluta
Frecuencia relativa
Proporción
Porcentaje
El tamaño importa
Si n es pequeño (< 100, habitualmente)
Mejor solo reportar frecuencias absolutas.
Porcentajes pueden ser contraintuitivos.
Si n es mayor que 100
Algunos proporciones tienen nombres propios
Frecuencias relativas de eventos de interés (problemas de salud, estados de salud, enfermedades, etc.) suelen tener nombres específicas en Epidemiología Clínica y Bioestadística.
El nombre depende de cómo se construye la proporción.
Algunos diseños de estudio permiten su cálculo, otros, los vuelven imposibles.
Proporción de una población específica que está afectada por un evento de salud de interés (típicamente una enfermedad o factor de riesgo, pero también puede ser factor benéfico) en un tiempo específico.
Prevalencia=Nº de eventos en tNº de eventos + Nº sin evento en t
El tiempo específico puede ser un punto, un periodo o toda una vida.
Puede calcularse en una muestra cualquiera, pero a menudo interesan prevalencias de poblaciones relevantes.
Proporción de incidencia o incidencia acumulada es la probabilidad de que ocurra un nuevo evento particular (tal como una enfermedad) antes de un tiempo dado.
Incidencia Acumulada=Nº eventos nuevos durante periodo tNº de individuos sin evento en risgo al inicio del periodo t
Prevalencia versus Incidencia Acumulada
Prevalencia | Incidencia Acumulada | |
---|---|---|
Numerador | Eventos existentes en t | Eventos nuevos durante el periodo t |
Denominador | Todos los individuos (con y sin eventos) en t | Individuos sin evento al inicio del periodo t |
¿Probabilidad de qué...? | Probabilidad de tener el evento | Probabilidad de desarrolalr evento nuevo |
Notas | Solo requiere un punto en el tiempo. A menudo se busca poblaciones relevantes y usa muestras probabilísticas. | Requiere al menos dos puntos de tiempo. Puede estimarse en poblaciones relevantes. A menudo se usan muestras no probabilísticas en las que es factible el seguimiento (p. ej., pacientes) |
Es la razón de la probabilidad del evento entre la probabilidad del no evento.
Odds=Pr(evento)Pr(no evento)=Pr(evento)1−Pr(evento)
Es solo una forma diferente de escribir la probabilidad del evento.
La probabilidad de ganar es 4
veces la probabilidad de perder.
Probabilidad | Odds | Diferencia |
---|---|---|
0.000 | 0.0000000 | 0.0000000 |
0.010 | 0.0101010 | 0.0001010 |
0.020 | 0.0204082 | 0.0004082 |
0.030 | 0.0309278 | 0.0009278 |
0.040 | 0.0416667 | 0.0016667 |
0.050 | 0.0526316 | 0.0026316 |
0.100 | 0.1111111 | 0.0111111 |
0.200 | 0.2500000 | 0.0500000 |
0.300 | 0.4285714 | 0.1285714 |
0.400 | 0.6666667 | 0.2666667 |
0.500 | 1.0000000 | 0.5000000 |
0.800 | 4.0000000 | 3.2000000 |
0.900 | 9.0000000 | 8.1000000 |
0.990 | 99.0000000 | 98.0100000 |
0.999 | 999.0000000 | 998.0010000 |
Los odds no se usan mucho en epidemiología para expresar frecuencias; pero una medida derivada de esta sí se usa mucho para expresar asociación: la razón de odds (OR).
En epidemiología, las proporciones o probabilidades puede ser incidencias acumuladas o prevalencias, por lo que tenemos dos tipos de Odds:
OddsPrevalente=Prevalencia1−Prevalencia
OddsIncidente=Incidencia Acumulada1−Incidencia Acumulada
Agenda
Medidas de resumen para variables numéricas
Análisis descriptivo de variables categóricas
Medidas de resumen de variables categóricas con R
Tablas Reproducible
tbl_summary() paso a paso
Hay varias opciones en R.
Las más personalizables se basan en {dplyr} y {janitor} (funciones summarise()), pero requieren más código.
Usar estas si se necesitan elaborar tablas ad hoc para reportes repropducibles muy sui generis.
También son necesarias para gráficos en {ggplot2}
Las opciones que requieren poco código y son directas tienen el problema de que no son personalizables:
{summarytools}
{DescTools}
Usar estas si solo se requiere inspeccionar los datos pero no se hará ningún reporte reproducibl sui generis.
La función table() y prop.table()es la más usada. Sin embargo, genera tablas “sucias” que requieren mucho código para personalizarse.
Podemos combinar la funcion group_by() con summarise() para generar una tabla de frecuencias de la variable de interés. Podemos también tomar un atajo con count
# A tibble: 3 × 2
sexo n
<fct> <int>
1 Femenino 189
2 Masculino 95
3 <NA> 1
# A tibble: 3 × 2
sexo n
<fct> <int>
1 Femenino 189
2 Masculino 95
3 <NA> 1
El paquete {janitor}, a través de su función [tabyl(){.verde-h3}], ofrece atajos y funciones pre-definidas para realizar tablas basadas en funciones de {dplyr}.
Tabla simple generada por tabyl()
sexo n percent valid_percent
Femenino 189 0.663157895 0.665493
Masculino 95 0.333333333 0.334507
<NA> 1 0.003508772 NA
Puedes “adornar” la tabla usando más funciones de {janitor}
Cambiar formato de porcentaje a %
sexo n percent
Femenino 189 0.665493
Masculino 95 0.334507
Agregar totales
sexo n percent
Femenino 189 66.5%
Masculino 95 33.5%
Total 284 -
Configurar precisión decimal
Si queremos una evaluación rápida de varias variables puede ser obtenida usando la función freq() del paquete {summarytools}
Frequencies
bd_inmuno$sexo
Label: genero
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
--------------- ------ --------- -------------- --------- --------------
Femenino 189 66.55 66.55 66.32 66.32
Masculino 95 33.45 100.00 33.33 99.65
<NA> 1 0.35 100.00
Total 285 100.00 100.00 100.00 100.00
Frequencies
bd_inmuno$sexo
Label: genero
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
--------------- ------ --------- -------------- --------- --------------
Femenino 189 66.55 66.55 66.32 66.32
Masculino 95 33.45 100.00 33.33 99.65
<NA> 1 0.35 100.00
Total 285 100.00 100.00 100.00 100.00
bd_inmuno$comorb
Label: comorbilidad
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
----------- ------ --------- -------------- --------- --------------
No 214 75.09 75.09 75.09 75.09
Sí 71 24.91 100.00 24.91 100.00
<NA> 0 0.00 100.00
Total 285 100.00 100.00 100.00 100.00
Frequencies
bd_inmuno$sexo
Label: genero
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
--------------- ------ --------- -------------- --------- --------------
Femenino 189 66.55 66.55 66.32 66.32
Masculino 95 33.45 100.00 33.33 99.65
<NA> 1 0.35 100.00
Total 285 100.00 100.00 100.00 100.00
bd_inmuno$comorb
Label: comorbilidad
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
----------- ------ --------- -------------- --------- --------------
No 214 75.09 75.09 75.09 75.09
Sí 71 24.91 100.00 24.91 100.00
<NA> 0 0.00 100.00
Total 285 100.00 100.00 100.00 100.00
bd_inmuno$tipo_refuerzo
Label: tipo_refuerzo
Type: Character
Freq % Valid % Valid Cum. % Total % Total Cum.
-------------------- ------ --------- -------------- --------- --------------
(Empty string) 1 0.35 0.35 0.35 0.35
Heterologo 228 80.00 80.35 80.00 80.35
Homologo 56 19.65 100.00 19.65 100.00
<NA> 0 0.00 100.00
Total 285 100.00 100.00 100.00 100.00
bd_inmuno$ant_COV
Label: ant_COV
Type: Factor
Freq % Valid % Valid Cum. % Total % Total Cum.
--------------------- ------ --------- -------------- --------- --------------
No Infection 201 70.53 70.53 70.53 70.53
Prior Infection 84 29.47 100.00 29.47 100.00
<NA> 0 0.00 100.00
Total 285 100.00 100.00 100.00 100.00
bd_inmuno$sexo
Freq %
--------------- ------ -------
Femenino 189 66.55
Masculino 95 33.45
bd_inmuno$comorb
Freq %
-------- ------ -------
No 214 75.09
Sí 71 24.91
bd_inmuno$tipo_refuerzo
Freq %
-------------------- ------ -------
(Empty string) 1 0.35
Heterologo 228 80.00
Homologo 56 19.65
bd_inmuno$ant_COV
Freq %
--------------------- ------ -------
No Infection 201 70.53
Prior Infection 84 29.47
Más información sobre el análisis de variables categóricas con…
Tablas para epi: https://epirhandbook.com/en/descriptive-tables.html
{dplyr}: https://dplyr.tidyverse.org/reference/group_by.html
{janitor}: http://sfirke.github.io/janitor/articles/tabyls.html
{summarytools}: https://htmlpreview.github.io/?https://github.com/dcomtois/summarytools/blob/master/doc/introduction.html
Se estila reportar los resultados como números en tablas.
En el texto, se puede resaltar los resultados de una o más variables de interés.
Un ejemplo de esto sería:
bd_inmuno %>%
select(sexo, ant_COV) %>%
freq(report.nas = FALSE,
totals = FALSE,
cumul = FALSE,
headings= FALSE)
bd_inmuno$sexo
Freq %
--------------- ------ -------
Femenino 189 66.55
Masculino 95 33.45
bd_inmuno$ant_COV
Freq %
--------------------- ------ -------
No Infection 201 70.53
Prior Infection 84 29.47
“El 66.6% de los participantes fueron mujeres. (…)”
“El 66.6% (189 / 284) de los participantes fueron
mujeres. (…)“
prevalencia
o incidencia acumulada
si el diseño lo permite. Por tanto, una interpretación tentativa para antecedente de infección por COVID-19: “La prevalencia de antecedente de infección previa por
COVID-19 fue de 29.47% (84 / 285). (…)“
Agenda
Medidas de resumen para variables numéricas
Análisis descriptivo de variables categóricas
Medidas de resumen de variables categóricas con R
Tablas Reproducible
tbl_summary() paso a paso
No cree la tabla “manualmente”.
Genere las tablas con código:
A la tabla descriptiva menudo se la conoce como tablas tipo 1.
Hay muchos paquetes: {flextable}, {gt},{huxtable}, {kableExtra}, {kable}, etc.
Sugerimos {gtsummary} para comenzar:
Permite crear tablas en formato de revistas biomédicas.
Función tbl_summary() para tablas descriptivas univariadas y comparativas (bivariadas)
id | time | treat | treated | age | race | married2 | procedence | weight | height | e2 |
---|---|---|---|---|---|---|---|---|---|---|
1 | Baseline | Placebo | 0 | 33 | Mestiza | Without couple | Callao | 59.0 | 1.4 | 87.30 |
1 | 3 months | Placebo | 0 | 32 | Mestiza | Without couple | Callao | 59.9 | 1.3 | 210.05 |
2 | Baseline | Dosis 2 | 1 | 27 | Mestiza | Without couple | Santa Anita | 62.0 | 1.5 | 169.01 |
2 | 3 months | Dosis 2 | 1 | 27 | Mestiza | Without couple | Santa Anita | 62.1 | 1.6 | 99.91 |
3 | Baseline | Dosis 1 | 1 | 25 | Mestiza | Without couple | Callao | 62.0 | 1.6 | 78.76 |
3 | 3 months | Dosis 1 | 1 | 25 | Mestiza | Without couple | Callao | 60.0 | 1.6 | 155.04 |
Variable | Label |
---|---|
id | ID participant |
time | Time's measurement |
treat | Treatment's group |
treated | Treated |
age | Age, years |
race | Race |
married2 | Marital status, recat |
procedence | Distrit of procedence |
weight | Weight, kg |
height | Height, m |
e2 | Estradiol |
Agenda
Medidas de resumen para variables numéricas
Análisis descriptivo de variables categóricas
Medidas de resumen de variables categóricas con R
Tablas Reproducible
tbl_summary() paso a paso
Cuarto tipo de resumenes: continuous, continuos2, categorical y dichotomous
Por defecto, los estadísticos son reportadas como mediana (percentil 25, percentil 75) para variables numéricas y n (%) para variables categóricas/dicotómicas.
Las variables codificadas como 0 / 1, TRUE / FALSE o Yes / No son tratadas como dicotómicas.
Los valores NA se listan como “Unknown
Los atributos de etiqueta se imprimen por defecto.
Uno puede realizar más personalizaciones a la tabla.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(height ~ "continuous"),
statistic = list(
c(age, height) ~ "{mean} ({sd})",
c(married2, treated) ~ "{n} / {N} ({p}%)"
)
)
type: Especifica el tipo de variable para el resumen.
statistic: Personaliza los estadísticos reportados.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})",
"{median} ({p25} - {p75})"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
)
)
type: Especifica el tipo de variable para el resumen.
statistic: Personaliza los estadísticos reportados.
Usar c() para varias variables.
Si queremos reportar más estadísticos en variables numéricas usamos continuous2
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})",
"{median} ({p25} - {p75})",
"{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
)
)
type: Especifica el tipo de variable para el resumen.
statistic: Personaliza los estadísticos reportados.
Usar c() para varias variables.
Si queremos reportar más estadísticos en variables numéricas usamos continuous2
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})", "{min} - {max}"),
c(e2) ~ c("{median} ({p25} - {p75})",
"{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
)
)
type: Especifica el tipo de variable para el resumen.
statistic: Personaliza los estadísticos reportados.
Usar c() para varias variables.
Si queremos reportar más estadísticos en variables numéricas usamos continuous2
Podemos ponerle cuantos estadísticos queramos.
Podemos tener diferentes combinaciones de estadísticos.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height, e2) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})", "{min} - {max}"),
c(e2) ~ c("{median} ({p25} - {p75})",
"{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
)
)
type: Especifica el tipo de variable para el resumen.
statistic: Personaliza los estadísticos reportados.
label: Cambia o personaliza la etiqueta de la variable.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height, e2) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})", "{min} - {max}"),
c(e2) ~ c("{median} ({p25} - {p75})",
"{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
digits = list(
c(age) ~ 1, c(height, e2) ~ 2, c(married2, treated) ~ 1
)
)
type: Especifica el tipo de variable para el resumen.
statistic: Personaliza los estadísticos reportados.
label: Cambia o personaliza la etiqueta de la variable.
digit: Especifica el número de decimales de redondeo.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height, e2) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})", "{min} - {max}"),
c(e2) ~ c("{median} ({p25} - {p75})", "{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
digits = list(
c(age) ~ 1, c(height, e2) ~ 2, c(married2, treated) ~ 1
),
missing_text = "Missing data"
)
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height, e2) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})", "{min} - {max}"),
c(e2) ~ c("{median} ({p25} - {p75})", "{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
digits = list(
c(age) ~ 1, c(height, e2) ~ 2, c(married2, treated) ~ 1
),
missing = "always", missing_text = "Missing data"
)
misisng_text: Permite editar la etiqueta de missing (Unknown por defecto).
missing: Por defecto se presentan los datos perdidos solo si la variable los tiene “ifany”.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(c(age, height, e2) ~ "continuous2"),
statistic = list(
c(age, height) ~ c("{mean} ({sd})", "{min} - {max}"),
c(e2) ~ c("{median} ({p25} - {p75})", "{min} - {max}"),
c(married2, treated) ~ "{n} / {N} ({p}%)"
),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
digits = list(
c(age) ~ 1, c(height, e2) ~ 2, c(married2, treated) ~ 1
),
missing = "no"
)
misisng_text: Permite editar la etiqueta de missing (Unknown por defecto).
missing: Por defecto se presentan los datos perdidos solo si la variable los tiene “ifany”.
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(height ~ "continuous"),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
missing = "ifany"
) %>%
bold_labels()
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(height ~ "continuous"),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
missing = "ifany"
) %>%
bold_labels()
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(height ~ "continuous"),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
missing = "ifany"
) %>%
bold_labels() %>%
italicize_levels()
datos %>%
select(age, treated, married2, height, e2) %>%
tbl_summary(
type = list(height ~ "continuous"),
label = list(
treated ~ "Treated with supplement", e2 ~ "Estradiol, UI",
married2 ~ "Marital status"
),
missing = "ifany"
) %>%
bold_labels() %>%
italicize_levels()
bold_labels(): negrita a las etiquetas de las variables
italicize_levels(): cursiva a los niveles (valores) de las variables
Se puede descargar la tabla en formato MS. Word para reporte reproducible.
Primero se guarda como un objeto de R:
Se puede descargar la tabla en formato MS. Word para reporte reproducible.
Primero se guarda como un objeto de R:
Se puede descargar la tabla en formato MS. Word para reporte reproducible.
Primero se guarda como un objeto de R:
Se puede descargar la tabla en formato MS. Word para reporte reproducible.
Primero se guarda como un objeto de R:
Se puede descargar la tabla en formato MS. Word para reporte reproducible.
Primero se guarda como un objeto de R:
Descargue la carpeta denominada taller05 disponible en la carpeta compartida.
Abra el proyecto denominado taller05.Rproj
Complete y ejecute el código faltante en los chunk de código de la SEGUNDA PARTE.
Una vez culmine todo el proceso, renderice el archivo .qmd.
@psotob91
https://github.com/psotob91
percys1991@gmail.comR Aplicado a los Proyectos de Investigación - Sesión 5