Tabla. Factores asociados a mortalidad: análisis crudo y ajustado
Codificación
mortalidad = 1: falleció / caso / eventomortalidad = 0: no falleció / control / no evento
Y las exposiciones se codificarán como:
1: exposición presente0: 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.