Visualización de Datos

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.