Creación de tablas y gráficos para Casos y Controles

Tabla. Factores asociados a mortalidad: análisis crudo y ajustado

Codificación

  • mortalidad = 1: falleció / caso / evento
  • mortalidad = 0: no falleció / control / no evento

Y las exposiciones se codificarán como:

  • 1: exposición presente
  • 0: exposición ausente

Creamos variables dicotomicas para el analisis:

gen byte edad60 = (edad >= 60) if !missing(edad)
gen byte obesidad = (imc >= 30) if !missing(imc)
gen byte pas140 = (presion >= 140) if !missing(presion)
gen byte col200 = (colesterol >= 200) if !missing(colesterol)
gen byte baja_act = (actividad_fisica < 3) if !missing(actividad_fisica) gen byte glucosa200 = (glucosa >= 200) if !missing(glucosa)

Etiquetar variables:

label define sino 0 "No" 1 "Sí", replace
label define sexo 0 "Femenino" 1 "Masculino", replace

label values mortalidad edad60 obesidad pas140 col200 baja_act glucosa200 fumador antecedentes_familiares prueba sino
label values sexo_m sexo

label variable mortalidad "Mortalidad"
label variable edad60 "Edad >=60 años"
label variable obesidad "Obesidad IMC >=30 kg/m2"
label variable pas140 "Presión arterial sistólica >=140 mmHg"
label variable col200 "Colesterol total >=200 mg/dL"
label variable baja_act "Baja actividad física <3 días/semana"
label variable fumador "Fumador"
label variable antecedentes_familiares "Antecedentes familiares"
label variable sexo_m "Sexo masculino"
label variable glucosa200 "Glucosa >=200 mg/dL"
label variable prueba "Prueba positiva"

Revisar que las variables estén bien creadas:

tab1 edad60 obesidad pas140 col200 baja_act fumador antecedentes_familiares sexo_m glucosa200 prueba

Tabla descriptiva general

Para variables numéricas:

summarize edad imc presion colesterol glucosa

Con más detalle:

summarize edad imc presion colesterol glucosa, detail

Para variables categóricas:

tab mortalidad
tab sexo_m
tab edad60
tab obesidad
tab pas140
tab col200
tab baja_act
tab fumador
tab antecedentes_familiares
tab glucosa200
tab prueba

Tabla comparativa segun mortalidad

Por grupos de mortalidad:

tabstat edad imc presion colesterol glucosa, by(mortalidad) stat(n mean sd median p25 p75 min max)

Aplicamos TTest, Chi2 y Fisher segun corresponda:

Comparación de variables numéricas

ttest edad, by(mortalidad)
ttest imc, by(mortalidad)
ttest presion, by(mortalidad)
ttest colesterol, by(mortalidad)
ttest glucosa, by(mortalidad)

Variables categóricas según mortalidad (Chi2 / FIsher)

tab sexo_m mortalidad, col chi2 expected
tab edad60 mortalidad, col chi2 expected
tab obesidad mortalidad, col chi2 expected
tab pas140 mortalidad, col exact
tab col200 mortalidad, col chi2 expected
tab baja_act mortalidad, col chi2 expected
tab fumador mortalidad, col chi2 expected
tab antecedentes_familiares mortalidad, col chi2 expected
tab glucosa200 mortalidad, col chi2 expected
tab prueba mortalidad, col exact

Vamos llenando la tabla:

Análisis bivariado: OR crudo y ajustado

Tabla 3. Factores asociados a mortalidad: análisis crudo y ajustado

cc mortalidad edad60
cc mortalidad obesidad
cc mortalidad pas140
cc mortalidad col200
cc mortalidad baja_act
cc mortalidad fumador
cc mortalidad antecedentes_familiares
cc mortalidad glucosa200
cc mortalidad prueba

Y luego el modelo multivariado:

logistic mortalidad col200 baja_act antecedentes_familiares sexo_m glucosa200

Bondad de ajuste de Hosmer-Lemeshow:

estat gof, group(10) table

Curva ROC / AUC del modelo:

lroc

Clasificación del modelo:

estat classification

Para revisar multicolinealidad de forma exploratoria:

regress mortalidad col200 baja_act antecedentes_familiares sexo_m glucosa200
estat vif

Graficos

Configuración inicial

graph set window fontface "Arial"set scheme s2mono

Figura 1. Mortalidad en la población estudiada

graph bar (percent), over(mortalidad) blabel(bar, format(%4.1f)) ytitle("Porcentaje (%)") title("Mortalidad en la población estudiada")
graph export "figura1_mortalidad.png", replace width(2000)

Figura 2. Colesterol total según mortalidad

graph box colesterol, over(mortalidad) ytitle("Colesterol total (mg/dL)") title("Colesterol total según mortalidad")
graph export "figura2_colesterol_mortalidad.png", replace width(2000)

Figura 3. Glucosa según mortalidad

graph box glucosa, over(mortalidad) ytitle("Glucosa (mg/dL)") title("Glucosa según mortalidad")
graph export "figura3_glucosa_mortalidad.png", replace width(2000)

Figura 4. Glucosa ≥200 mg/dL según mortalidad

preserve
contract mortalidad glucosa200
bysort mortalidad: egen total = total(_freq)
gen porcentaje = 100 * _freq / total
keep if glucosa200 == 1
graph bar porcentaje, over(mortalidad) blabel(bar, format(%4.1f)) ytitle("Porcentaje (%)") title("Glucosa ≥200 mg/dL según mortalidad")
graph export "figura4_glucosa200_mortalidad.png", replace width(2000)
restore

Figura 5. Forest plot de OR ajustados

preserve
clear
input str45 variable double or lb ub
"Colesterol ≥200 mg/dL" 1.779447 0.8021467 3.947449
"Baja actividad física" 1.581200 0.7435023 3.362723
"Antecedentes familiares" 1.455266 0.6834384 3.098743
"Sexo masculino" 0.550854 0.2541050 1.192117
"Glucosa ≥200 mg/dL" 5.130158 0.6571588 40.04896
end
gen y = _n
twoway (rcap lb ub y, horizontal) (scatter y or), xscale(log) xline(1, lpattern(dash)) xlabel(0.5 1 2 5 10 50, grid) ylabel(1 "Colesterol ≥200 mg/dL" 2 "Baja actividad física" 3 "Antecedentes familiares" 4 "Sexo masculino" 5 "Glucosa ≥200 mg/dL", angle(0)) yscale(reverse) xtitle("OR ajustado (escala logarítmica)") ytitle("") legend(off) title("Factores asociados a mortalidad: OR ajustados")
graph export "figura5_forestplot_OR_ajustado.png", replace width(2500)
restore


Descubre más desde Medicina Cardiometabólica

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario