Vamos a utilizar el conjunto de datos famuss.csv. Uno de los objetivos de este estudio fue examinar la asociación entre las características demográficas, fisiológicas y genéticas y la fuerza muscular. Se midió la fuerza en los brazos dominantes y no dominantes antes y después del entrenamiento de resistencia. El gen de interés es el ACTN3, el «gen del deporte».
# Cargar datos en un objeto llamado famuss
famuss <- read.csv("DATA/famuss.csv") # Asegúrate de que la ruta al archivo sea correcta
# Tipos de variables en famuss
str(famuss)
## 'data.frame': 595 obs. of 9 variables:
## $ ndrm.ch : num 40 25 40 125 40 75 100 57.1 33.3 20 ...
## $ drm.ch : num 40 0 0 0 20 0 0 -14.3 0 0 ...
## $ sex : chr "Female" "Male" "Female" "Female" ...
## $ age : int 27 36 24 40 32 24 30 28 27 30 ...
## $ race : chr "Caucasian" "Caucasian" "Caucasian" "Caucasian" ...
## $ height : num 65 71.7 65 68 61 62.2 65 68 68.2 62.2 ...
## $ weight : num 199 189 134 171 118 120 134 162 189 120 ...
## $ actn3.r577x: chr "CC" "CT" "CT" "CT" ...
## $ bmi : num 33.1 25.8 22.3 26 22.3 ...
Las frecuencias y proporciones son medidas descriptivas que nos permiten resumir y entender la distribución de una variable categórica. La frecuencia es el número de veces que ocurre cada categoría, mientras que la proporción es la frecuencia dividida por el total de observaciones.
# Frecuencias
table(famuss$race)
##
## African Am Asian Caucasian Hispanic Other
## 27 55 467 23 23
table(famuss$sex)
##
## Female Male
## 353 242
table(famuss$actn3.r577x)
##
## CC CT TT
## 173 261 161
# Proporciones
prop.table(table(famuss$race))
##
## African Am Asian Caucasian Hispanic Other
## 0.04537815 0.09243697 0.78487395 0.03865546 0.03865546
prop.table(table(famuss$sex))
##
## Female Male
## 0.5932773 0.4067227
prop.table(table(famuss$actn3.r577x))
##
## CC CT TT
## 0.2907563 0.4386555 0.2705882
library(gt)
# Crear tabla de proporciones con dos decimales
tabla_proporciones <- prop.table(table(famuss$race)) %>%
as.data.frame() %>%
gt() %>%
fmt_number(
columns = c(Freq),
decimals = 3
) %>%
tab_header(
title = "Tabla 1. Proporciones de la variable race"
) %>%
cols_label(
Var1 = "Etnicidad",
Freq = "Proporción"
)
tabla_proporciones
Tabla 1. Proporciones de la variable race | |
Etnicidad | Proporción |
---|---|
African Am | 0.045 |
Asian | 0.092 |
Caucasian | 0.785 |
Hispanic | 0.039 |
Other | 0.039 |
EJERCICIO: Crea tabla de proporciones para la
variable actn3.r577x
en famuss
, utilizando el
paquete gt
para darles un formato atractivo.
Los gráficos de barras son una herramienta visual útil para representar la distribución de una variable categórica. Cada barra representa una categoría, y la altura de la barra corresponde a la frecuencia o proporción de esa categoría.
actn3.r577x
library(ggplot2)
# Gráfico de barras de la variable actn3.r577x con ggplot2
ggplot(famuss, aes(x = actn3.r577x)) +
geom_bar(fill = "steelblue") +
labs(x = "Genotipo ACTN3", y = "Frecuencia")
Figura 1. Gráfico de barras de la frecuencia de la
variable actn3.r577x
.
actn3.r577x
# Gráfico de barras de la variable actn3.r577x con ggplot2
ggplot(famuss, aes(x = actn3.r577x)) +
geom_bar(aes(y = (after_stat(count))/sum(after_stat(count))), fill = "steelblue") +
scale_y_continuous() +
labs(x = "Genotipo ACTN3", y = "Proporción")
Figura 2. Gráfico de barras de la proporción de la
variable actn3.r577x
EJERCICIO: Crea un gráfico de barras de proporciones
para la variable race
en famuss
, utilizando el
paquete ggplot2
. Usa otro color para las barras.
race
Cuando las etiquetas de las categorías son largas, es útil utilizar un gráfico de barras horizontales para mejorar la legibilidad. Además, ordenar las barras de mayor a menor frecuencia puede facilitar la interpretación visual.
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(forcats)
counts <- famuss %>%
count(race, drop = FALSE) %>% # drop = FALSE keeps unused factor levels
arrange(desc(n)) %>%
mutate(race = fct_reorder(race, n, .desc = FALSE))
ggplot(counts, aes(x = race, y = n)) +
geom_col(fill = "#1F78B4") +
coord_flip() +
labs(x = NULL, y = "Frecuencia") +
theme_minimal()
Figura 3. Gráfico de barras horizontales ordenadas
de la variable race
en famuss
.
EJERCICIO: Crea un gráfico de barras horizontales
ordenadas para la variable actn3.r577x
en
famuss
, utilizando el paquete ggplot2
. Usa
otro color para las barras.
actn3.r577x
y
sex
Los gráficos de barras apiladas permiten comparar la distribución de
una variable categórica dentro de las categorías de otra variable
categórica. En este caso, podemos comparar la distribución del genotipo
ACTN3 (actn3.r577x
) entre hombres y mujeres
(sex
).
library(ggplot2)
ggplot(famuss, aes(x = actn3.r577x, fill = sex)) +
geom_bar() +
labs(x = "Genotipo ACTN3 R577X",
y = "Frecuencia",
fill = "Sexo") +
theme_minimal()
Figura 4. Gráfico de barras apiladas de la variable
actn3.r577x
por sex
en
famuss
.
EJERCICIO: Crea un gráfico de barras apiladas para
la variable race
por sex
en
famuss
, utilizando el paquete ggplot2
.
actn3.r577x
y sex
Otra forma de comparar la distribución de una variable categórica
dentro de las categorías de otra variable categórica es utilizar un
gráfico de barras separadas (dodged). En este caso, podemos comparar la
distribución del genotipo ACTN3 (actn3.r577x
) entre hombres
y mujeres (sex
).
library(ggplot2)
ggplot(famuss, aes(x = actn3.r577x, fill = sex)) +
geom_bar(position = position_dodge(width = 0.6)) +
labs(x = "Genotipo ACTN3 R577X", y = "Frecuencia", fill = "Sexo") +
theme_minimal()
Figura 5. Gráfico de barras separadas (dodged) de la
variable actn3.r577x
por sex
en
famuss
.
EJERCICIO: Crea un gráfico de barras separadas
(dodged) para la variable race
por sex
en
famuss
, utilizando el paquete ggplot2
.
actn3.r577x
por sex
library(ggplot2)
library(scales)
ggplot(famuss, aes(x = actn3.r577x, fill = sex)) +
geom_bar(position = "fill") +
scale_y_continuous(labels = percent) +
labs(x = "Genotipo ACTN3 R577X",
y = "Proporción",
fill = "Sexo") +
theme_minimal()
Figura 6. Gráfico de barras de proporciones de la
variable sex
por actn3.r577x
en
famuss
.
Podemos crear un gráfico de barras que muestre las proporciones de
cada categoría de actn3.r577x
dentro de cada categoría de
sex
. Esto nos permitirá ver cómo se distribuyen los
genotipos ACTN3 entre hombres y mujeres.
library(ggplot2)
library(scales)
ggplot(famuss, aes(x = sex, fill = actn3.r577x)) +
geom_bar(position = "fill") +
scale_y_continuous() +
labs(x = "Sexo",
y = "Proporción",
fill = "Sexo") +
theme_minimal()
Figura 7. Gráfico de barras de proporciones de la
variable
sex
por actn3.r577x en
famuss`.
EJERCICIO: Crea un gráfico de barras de proporciones
para la variable race
por sex
en
famuss
, utilizando el paquete ggplot2
.
Una tabla de contingencia es una herramienta que nos permite examinar la relación entre dos variables categóricas. En una tabla de contingencia, las filas representan las categorías de una variable y las columnas representan las categorías de la otra variable. Cada celda en la tabla contiene el conteo o frecuencia de observaciones que pertenecen a la combinación específica de categorías.
actn3.r577x
por
`race``library(dplyr)
library(tidyr)
library(gt)
tabla_actn3_race <- famuss %>%
count(actn3.r577x, race, name = "n") %>%
pivot_wider(names_from = race, values_from = n, values_fill = 0)
gt(tabla_actn3_race) %>%
cols_label(
actn3.r577x = "Genotipo"
) %>%
tab_header(
title = "Tabla de contingencia: Genotipo de ACTN3 R577X vs Race",
subtitle = "Frecuencias"
)
Tabla de contingencia: Genotipo de ACTN3 R577X vs Race | |||||
Frecuencias | |||||
Genotipo | African Am | Asian | Caucasian | Hispanic | Other |
---|---|---|---|---|---|
CC | 16 | 21 | 125 | 4 | 7 |
CT | 6 | 18 | 216 | 10 | 11 |
TT | 5 | 16 | 126 | 9 | 5 |
EJERCICIO: Crea una tabla de contingencia para las
variables sex
y race
en famuss
,
utilizando el paquete gt
para darles un formato
atractivo.
El gráfico de mosaico es una representación visual de una tabla de contingencia que muestra la relación entre dos variables categóricas. En un gráfico de mosaico, el área de cada celda es proporcional a la frecuencia o proporción de observaciones en esa combinación específica de categorías.
library(ggplot2)
library(ggmosaic)
library(dplyr)
# Asegurar que los factores estén (opcionalmente) ordenados por frecuencia
datos_plot <- famuss %>%
mutate(
actn3.r577x = forcats::fct_infreq(actn3.r577x),
race = forcats::fct_infreq(race)
)
ggplot(data = datos_plot) +
geom_mosaic(aes(x = product(actn3.r577x), fill = race), colour = "white", alpha = 0.9) +
scale_fill_brewer(palette = "Set2") +
labs(
x = "Genotipo (ACTN3 R577X)",
y = "Proporción dentro de Etnicidad",
fill = "Etnicidad"
) +
theme_minimal(base_size = 12) +
theme(
panel.grid = element_blank(),
legend.position = "right"
)
Figura 8. Gráfico de mosaico de la tabla de
contingencia entre las variables actn3.r577x
y
race
en famuss
.
EJERCICIO: ¿Cuál genotipo es predominante en cada grupo étnico?