Relación entre actividad física, variables antropométricas y diagnóstico en un grupo control e intervención
Guía completa de gráficos básicos en Stata
1. Cargar el conjunto de datos
Si el archivo está en Excel:
import excel "ruta/graficos_basicos_stata.xlsx", sheet("Sheet1") firstrow clear
describe
Si quieres ver rápidamente la estructura:
codebook
summarize
2. Etiquetado inicial de variables
Esto es importante para que en tablas y gráficos no salgan solo 0 y 1.
a) Diagnóstico
Asumiendo:
- 0 = No
- 1 = Sí
label define diag_lbl 0 "No" 1 "Sí"
label values diagnostico diag_lbl
b) Género
Si genero está como texto (str), conviene convertirlo a variable categórica etiquetada:
encode genero, gen(genero_num)
drop genero
rename genero_num genero
Puedes verificar cómo quedó:
tab genero
label list
c) Grupo
Si grupo está en texto (Control, Intervención):
encode grupo, gen(grupo_num)
drop grupo
rename grupo_num grupo
Verificación:
tab grupo
3. Crear variables derivadas útiles
IMC
Muy recomendable porque tienes peso y altura:
gen imc = peso/(altura^2)
label variable imc "Índice de masa corporal"
4. Histogramas
Los histogramas permiten evaluar la distribución de variables continuas.
a) Peso
histogram peso, bin(10) normal title("Distribución del peso")
Interpretación:
- Muestra la frecuencia de pesos en intervalos.
- La curva normal permite comparar visualmente con una distribución aproximadamente gaussiana.
b) Edad
histogram edad, bin(15) title("Distribución de la edad")
c) Altura
histogram altura, bin(10) normal title("Distribución de la altura")
d) IMC
histogram imc, bin(10) normal title("Distribución del IMC")
e) Actividad física
histogram actividad_fisica, bin(8) title("Distribución de la actividad física")
5. Diagramas de caja (boxplots)
Útiles para comparar distribución, mediana, dispersión y valores atípicos.
a) Peso por género
graph box peso, over(genero) title("Distribución del peso por género")
b) Altura por grupo
graph box altura, over(grupo) title("Altura por grupo de estudio")
c) Edad por grupo
graph box edad, over(grupo) title("Edad por grupo")
d) IMC por grupo
graph box imc, over(grupo) title("IMC por grupo")
e) IMC por género
graph box imc, over(genero) title("IMC por género")
f) Actividad física por grupo
graph box actividad_fisica, over(grupo) title("Actividad física por grupo")
g) Peso según diagnóstico
graph box peso, over(diagnostico) title("Peso según diagnóstico")
6. Gráficos de dispersión (scatter plots)
Muestran asociación entre dos variables continuas.
a) Peso y altura
scatter peso altura, title("Relación peso vs altura")
b) Peso y altura con línea de ajuste
twoway (scatter peso altura) (lfit peso altura), ///
title("Relación peso vs altura con ajuste lineal")
c) Edad y actividad física
scatter actividad_fisica edad, title("Edad vs actividad física")
d) IMC y edad
scatter imc edad, title("IMC vs edad")
e) IMC y edad con línea de ajuste
twoway (scatter imc edad) (lfit imc edad), ///
title("IMC vs edad con ajuste lineal")
f) Peso y edad
scatter peso edad, title("Peso vs edad")
7. Gráficos de barras
Ideales para variables categóricas o para resumir medias/proporciones.
a) Frecuencia de diagnósticos
graph bar (count), over(diagnostico) title("Frecuencia de diagnósticos")
b) Frecuencia por género
graph bar (count), over(genero) title("Frecuencia por género")
c) Frecuencia por grupo
graph bar (count), over(grupo) title("Frecuencia por grupo")
d) Diagnóstico por grupo
graph bar (count), over(diagnostico) over(grupo) ///
title("Diagnóstico según grupo")
e) Actividad física promedio por grupo
graph bar (mean) actividad_fisica, over(grupo) ///
title("Actividad física promedio por grupo")
f) Peso promedio por grupo
graph bar (mean) peso, over(grupo) ///
title("Peso promedio por grupo")
g) IMC promedio por grupo
graph bar (mean) imc, over(grupo) ///
title("IMC promedio por grupo")
h) Edad promedio por género
graph bar (mean) edad, over(genero) ///
title("Edad promedio por género")
8. Visualización de distribuciones
a) Densidad del peso
kdensity peso, title("Densidad del peso")
b) Densidad del IMC
kdensity imc, title("Densidad del IMC")
c) Densidad comparada por grupo
Primero, si grupo ya está codificado:
twoway (kdensity peso if grupo=="Control") (kdensity peso if grupo=="Intervención"), title("Densidad del peso por grupo") legend(order(1 "Control" 2 "Intervención"))
-------------------------------------------------------------
- decode grupo, gen(grupo_txt)
- twoway (kdensity peso if grupo_txt=="Control") (kdensity peso if grupo_txt=="Intervención"), title("Densidad del peso por grupo") legend(order(1 "Control" 2 "Intervención"))
d) Gráfico de puntos de altura por género
graph dot altura, over(genero) title("Altura por género")
e) Gráfico de puntos de IMC por grupo
graph dot imc, over(grupo) title("IMC por grupo")
9. Gráficos especialmente útiles para tu base
Dado el tipo de variables que tienes, estos son particularmente pertinentes:
a) IMC por grupo
graph box imc, over(grupo) title("IMC por grupo")
b) IMC por diagnóstico
graph box imc, over(diagnostico) title("IMC según diagnóstico")
c) Actividad física por diagnóstico
graph box actividad_fisica, over(diagnostico) ///
title("Actividad física según diagnóstico")
d) Diagnóstico por grupo
graph bar (count), over(diagnostico) over(grupo) ///
title("Diagnóstico por grupo")
e) Relación peso-altura
twoway (scatter peso altura) (lfit peso altura), ///
title("Peso y altura")
10. Flujo mínimo recomendado para tu base
Si quieres hacer un análisis gráfico inicial bien presentado, yo haría estos primero:
import excel "ruta/graficos_basicos_stata.xlsx", sheet("Sheet1") firstrow clearlabel define diag_lbl 0 "No" 1 "Sí"
label values diagnostico diag_lblencode genero, gen(genero_num)
drop genero
rename genero_num generoencode grupo, gen(grupo_num)
drop grupo
rename grupo_num grupogen imc = peso/(altura^2)
label variable imc "Índice de masa corporal"histogram peso, bin(10) normal title("Distribución del peso")
histogram edad, bin(15) title("Distribución de la edad")
graph box peso, over(genero) title("Distribución del peso por género")
graph box altura, over(grupo) title("Altura por grupo de estudio")
graph box imc, over(grupo) title("IMC por grupo")
twoway (scatter peso altura) (lfit peso altura), title("Peso vs altura")
scatter actividad_fisica edad, title("Edad vs actividad física")
graph bar (count), over(diagnostico) title("Frecuencia de diagnósticos")
graph bar (mean) actividad_fisica, over(grupo) title("Actividad física por grupo")
kdensity peso, title("Densidad del peso")
graph dot altura, over(genero) title("Altura por género")
twoway (scatter Glucosa IMC, mcolor(blue)) (lfit Glucosa IMC, lcolor(red)), title("IMC vs Glucosa con línea de regresión")

En el gráfico que compartiste, la línea de regresión (en rojo) muestra una pendiente levemente negativa, lo que indica que a medida que el IMC aumenta, la glucosa tiende a disminuir ligeramente. Sin embargo, la nube de puntos está bastante dispersa, lo que sugiere que la relación no es muy fuerte.
La palabra twoway se usa para indicar que vas a hacer un gráfico bidimensional, es decir, un gráfico en dos dimensiones que combina uno o más tipos de visualizaciones.
¿Por qué usar twoway?
Porque te permite:
- Combinar varios tipos de gráficos (como
scatter,line,lfit,qfit, etc.). - Superponer una línea de regresión (
lfit) sobre un gráfico de dispersión (scatter). - Tener más control sobre el diseño y presentación del gráfico.