2019-02-28

Temario

  1. Introducción (30min)
    • Objetivos
    • Material de clase: Archivos R y Rmarkdown.
  2. Estudios observacionales (85min)
    • Caso-Control, Cohorte, Tiempo a evento
  3. RECESO (20min)

  4. Modelos Lineales Generalizados (55min)
    • Múltiples covariables
    • Distribuciones y funciones de enlace
    • Caso-Control, Cohorte
  5. Transversales (50min)
    • Situación 1: prevalencia < 10%
    • Situación 2: no convergencia
  6. CIERRE

Objetivo

  • Calcular e interpretar medidas de asociación empleadas en Estudios Epidemiológicos.

Objetivos Específicos

  • Conocer las caracaterísticas de R y Rstudio.

  • Importar, describir y ejecutar análisis a partir de bases de datos.

  • Tomar decisiones epidemiológicas y estadísticas en base a la pregunta y tipo de estudio.

Material de clase (1/3)

  • R: Software Libre para el manejo, visualización y análisis de datos.
  • RStudio: ambiente de desarrollo integrado (IDE).
  • Paquete: Conjunto de funciones.
  • Función: Código capaz de resolver un problema específico con datos.

Material de clase (2/3)

  • R: Software Libre para el manejo, visualización y análisis de datos.
  • RStudio: ambiente de desarrollo integrado (IDE).
  • Paquete: Conjunto de funciones.
  • Función: Código capaz de resolver un problema específico con datos.

Material de clase (3/3)

  • Archivo .R: Documento en texto plano con funciones para resolver un problema de análisis amplio.
  • Archivo .Rmd: Documento en texto plano que integra texto, funciones y resultados.

Estudios Observacionales

  • Asociar:
    • condición (expuesto o no-expuesto) y
    • resultado (caso o control)
  • El tipo de análisis depende del tipo de estudio:
    • “Reclutamos \(x_1\) sujetos caso y \(x_2\) sujetos control -> Tipo Caso-Control

    • “Reclutamos \(x_1\) sujetos expuestos y \(x_2\) sujetos no expuestos -> Tipo Cohorte

1.1 Caso-Control

  • El investigador elige el total de casos y controles

  • Si cambiamos el tamaño del grupo (casos x 100), sí cambia el Riesgo Relativo (RR)

  • En estudios caso-control usamos el Odds Ratio (OR)

## # A tibble: 2 x 7
##   ccr2    Yes    No  risk  odds     rr     or
##   <fct> <dbl> <int> <dbl> <dbl>  <dbl>  <dbl>
## 1 Yes    3100    63 0.980  49.2  0.995  0.733
## 2 No    14900   222 0.985  67.1 NA     NA

1.2 Pregunta de investigación

En personas VIH+ ¿el polimorfismo CCR5(Delta-32) está asociado con el desarrollo del SIDA?

  • base: aidsdb.dta
  • exposición: ccr5
  • desenlace: aids
aidsdb_or <- read_dta("data/aidsdb.dta") %>% as_factor() %>% 
  group_by(aids) %>% sample_n(150) %>% ungroup()
  • Simularemos un escenario Caso-Control: muestreo al azar de 150 casos y 150 controles
## Observations: 300
## Variables: 10
## $ studyid       <dbl> 305636, 279772, 322022, 549808, 490172, 328297, 298549, 243450, 104463, 135567, 385200, 20161...
## $ ttoaidsorexit <dbl> 1016, 2209, 607, 936, 2391, 3336, 2066, 1464, 2315, 1428, 2031, 2233, 3345, 1121, 2833, 1770,...
## $ aids          <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes...
## $ age           <dbl> 30, 28, 29, 35, 22, 33, 30, 39, 31, 35, 54, 30, 31, 32, 39, 44, 35, 25, 25, 46, 43, 43, 49, 2...
## $ race          <fct> race2, race1, race1, race1, race1, race1, race1, race1, race1, race3, race1, race1, race1, ra...
## $ loghivrna     <dbl> 12.604708, 9.630694, 12.018091, 12.440480, 9.655026, 8.002359, 10.209169, 5.703783, 10.649203...
## $ cd4           <dbl> 791, 496, 253, 597, 932, 1016, 876, 900, 763, 530, 1096, 696, NA, 804, 662, 882, 853, 360, 63...
## $ ccr2          <fct> No, Yes, No, No, Yes, Yes, No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, N...
## $ ccr5          <fct> No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, Yes, Yes, No, No...
## $ sdf1          <fct> No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, N...

1.3 Estimar e interpretar OR (1)

epi.2by2(with(aidsdb_or,table(ccr5,aids)),
         method = "case.control")
##              Outcome +    Outcome -      Total        Prevalence *        Odds
## Exposed +           33           27         60                55.0       1.222
## Exposed -          117          123        240                48.8       0.951
## Total              150          150        300                50.0       1.000
## 
## Point estimates and 95 % CIs:
## -------------------------------------------------------------------
## Odds ratio (W)                               1.28 (0.73, 2.27)
## Attrib prevalence *                          6.25 (-7.84, 20.34)
## Attrib prevalence in population *            1.25 (-7.24, 9.74)
## Attrib fraction (est) in exposed  (%)        22.11 (-42.73, 57.78)
## Attrib fraction (est) in population (%)      4.88 (-6.54, 15.07)
## -------------------------------------------------------------------
##  X2 test statistic: 0.75 p-value: 0.386
##  Wald confidence limits
##  * Outcomes per 100 population units

1.3 Estimar e interpretar OR (2)

\[OR = \frac{ {Odds}_{(Y: AIDS | CCR5:Yes)} }{ {Odds}_{(Y: AIDS | CCR5:No)} }\]

  • En la población, el odds de tener sida dado que sí poseen CCR5 es
  • 1.28 veces,
  • el odds de tener sida dado que no poseen CCR5,
  • con un intervalo de confianza al 95% de 0.73 a 2.27.
  • Este resultado no es estadísticamente significativo con un valor p = 0.386

1.3 Estimar e interpretar OR (3)

  • segundo método
aidsdb_or_no <- aidsdb_or %>% mutate_if(is.factor,fct_relevel, ... = "No")
compareGroups(aids ~ ccr5 + race,data = aidsdb_or_no,byrow=T) %>% 
  createTable(show.ratio = T)
## 
## --------Summary descriptives table by 'aids'---------
## 
## ____________________________________________________________________ 
##               No          Yes            OR        p.ratio p.overall 
##              N=150       N=150                                       
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 
## ccr5:                                                        0.470   
##     No    123 (51.2%) 117 (48.8%)       Ref.        Ref.             
##     Yes   27 (45.0%)  33 (55.0%)  1.28 [0.73;2.28]  0.392            
## race:                                                        0.156   
##     race1 123 (47.9%) 134 (52.1%)       Ref.        Ref.             
##     race2 18 (66.7%)   9 (33.3%)  0.46 [0.19;1.05]  0.067            
##     race3  9 (56.2%)   7 (43.8%)  0.72 [0.25;2.02]  0.528            
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

1.4 Tu turno 1

En personas VIH+ ¿el polimorfismo SDF1(CXCR12) O CCR2 está asociado con el desarrollo del SIDA?

compareGroups(aids ~ ccr5 + _____ + ______,data = aidsdb_or,byrow=T) %>% 
  createTable(show.ratio = T)
epi.2by2(with(aidsdb_or,table(_____,aids)),
         method = "case.control")

epi.2by2(with(aidsdb_or,table(_____,aids)),
         method = "case.control")
  • Interpretacíón:

2.1 Cohorte

  • El investigador puede elegir el total de expuestos y no expuestos
## # A tibble: 2 x 5
##   ccr5    Yes    No  risk    rr
##   <fct> <int> <int> <dbl> <dbl>
## 1 Yes      35    49 0.417  1.09
## 2 No      145   236 0.381 NA
  • Si cambiamos el tamaño del grupo (no-expuestos x 100), no cambia el Riesgo Relativo (RR)
## # A tibble: 2 x 5
##   ccr5    Yes    No  risk    rr
##   <fct> <dbl> <dbl> <dbl> <dbl>
## 1 Yes      35    49 0.417  1.09
## 2 No    14500 23600 0.381 NA

2.2 Pregunta de investigación (2)

En personas VIH+ ¿el polimorfismo CCR5(Delta-32) protege contra el desarrollo del SIDA?

  • base: aidsdb.dta
  • exposición: ccr5
  • desenlace: aids
aidsdb <- read_dta("data/aidsdb.dta") %>% as_factor()
## Observations: 465
## Variables: 10
## $ studyid       <dbl> 101750, 101780, 103328, 104463, 104525, 107858, 108299, 108831, 109749, 110129, 112245, 11421...
## $ ttoaidsorexit <dbl> 1019, 2809, 1717, 2315, 3764, 2643, 1185, 3636, 2213, 1692, 2950, 3782, 2918, 1061, 1461, 264...
## $ aids          <fct> Yes, No, Yes, Yes, No, Yes, Yes, Yes, Yes, No, No, No, Yes, No, Yes, No, Yes, No, No, No, Yes...
## $ age           <dbl> 22, 25, 32, 31, 39, 39, 32, 36, 43, 39, 28, 30, 28, 28, 38, 36, 37, 32, 44, 38, 33, 33, 32, 3...
## $ race          <fct> race1, race2, race1, race1, race1, race1, race1, race1, race1, race1, race1, race1, race1, ra...
## $ loghivrna     <dbl> 11.786481, 12.916421, 13.169676, 10.649203, 10.834726, 6.790097, 9.098403, NA, 12.690433, NA,...
## $ cd4           <dbl> 434, 391, 819, 763, 520, NA, 711, 2271, 402, 684, 530, 740, 473, 746, 531, 804, 450, 385, 481...
## $ ccr2          <fct> No, Yes, No, No, No, No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No,...
## $ ccr5          <fct> Yes, Yes, No, No, Yes, No, No, No, No, No, No, Yes, No, No, Yes, No, No, No, Yes, Yes, No, No...
## $ sdf1          <fct> No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, ...

2.3 Estimar e interpretar RR (1)

epi.2by2(with(aidsdb,table(ccr5,aids)),
         method = "cohort.count")
##              Outcome +    Outcome -      Total        Inc risk *        Odds
## Exposed +           35           49         84              41.7       0.714
## Exposed -          145          236        381              38.1       0.614
## Total              180          285        465              38.7       0.632
## 
## Point estimates and 95 % CIs:
## -------------------------------------------------------------------
## Inc risk ratio                               1.09 (0.82, 1.45)
## Odds ratio                                   1.16 (0.72, 1.88)
## Attrib risk *                                3.61 (-8.01, 15.22)
## Attrib risk in population *                  0.65 (-5.93, 7.24)
## Attrib fraction in exposed (%)               8.66 (-21.29, 31.22)
## Attrib fraction in population (%)            1.68 (-3.90, 6.97)
## -------------------------------------------------------------------
##  X2 test statistic: 0.378 p-value: 0.539
##  Wald confidence limits
##  * Outcomes per 100 population units

2.3 Estimar e interpretar RR (2)

\[RR = \frac{ {Risk}_{(Y: AIDS | CCR5:Yes)} }{ {Risk}_{(Y: AIDS | CCR5:No)} }\]

  • En la población, el riesgo de tener sida dado que sí poseen CCR5 es
  • 1.09 veces,
  • el riesgo de tener sida dado que no poseen CCR5,
  • con un intervalo de confianza al 95% de 0.82 a 1.45.
  • Este resultado no es estadísticamente significativo con un valor p = 0.378

2.3 Estimar e interpretar RR (2)

  • segundo método
aidsdb_no <- aidsdb %>% mutate_if(is.factor,fct_relevel, ... = "No")
cs(aidsdb_no$aids,aidsdb_no$ccr5)
## 
##           Exposure
## Outcome    Non-exposed Exposed Total
##   Negative 236         49      285  
##   Positive 145         35      180  
##   Total    381         84      465  
##                                     
##            Rne         Re      Rt   
##   Risk     0.38        0.42    0.39 
## 
##                                          Estimate Lower95ci Upper95ci
##  Risk difference (attributable risk)     0.04     -0.08     0.14     
##  Risk ratio                              1.09     0.77      1.54     
##  Attr. frac. exp. -- (Re-Rne)/Re         0.09                        
##  Attr. frac. pop. -- (Rt-Rne)/Rt*100 %   1.68                        
##  Number needed to harm (NNH)             27.71    -12.31    6.91     
##    or 1/(risk difference)

2.4 Tu turno 2

En personas VIH+ ¿el polimorfismo SDF1(CXCR12) o CCR2 protege contra el desarrollo del SIDA?

epi.2by2(with(aidsdb,table(_____,aids)),
         method = "cohort.count")

epi.2by2(with(aidsdb,table(_____,aids)),
         method = "cohort.count")
  • Interpretacíón:

3.1 Tiempo a evento (1)

3.1 Tiempo a evento (2)

3.1 Tiempo a evento (3)

3.2 Pregunta de investigación (3)

En personas VIH+ ¿el polimorfismo CCR5(Delta-32) contribuye con un mayor tiempo al inicio del SIDA?

  • base: aidsdb.dta
  • exposición: ccr5
  • tiempo a evento: ttoaidsorexit
  • desenlace: aids
coxdb <- read_dta("data/aidsdb.dta") %>% as_factor() %>% 
  mutate(aids=as.integer(aids)-1)
## Observations: 465
## Variables: 10
## $ studyid       <dbl> 101750, 101780, 103328, 104463, 104525, 107858, 108299, 108831, 109749, 110129, 112245, 11421...
## $ ttoaidsorexit <dbl> 1019, 2809, 1717, 2315, 3764, 2643, 1185, 3636, 2213, 1692, 2950, 3782, 2918, 1061, 1461, 264...
## $ aids          <dbl> 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, ...
## $ age           <dbl> 22, 25, 32, 31, 39, 39, 32, 36, 43, 39, 28, 30, 28, 28, 38, 36, 37, 32, 44, 38, 33, 33, 32, 3...
## $ race          <fct> race1, race2, race1, race1, race1, race1, race1, race1, race1, race1, race1, race1, race1, ra...
## $ loghivrna     <dbl> 11.786481, 12.916421, 13.169676, 10.649203, 10.834726, 6.790097, 9.098403, NA, 12.690433, NA,...
## $ cd4           <dbl> 434, 391, 819, 763, 520, NA, 711, 2271, 402, 684, 530, 740, 473, 746, 531, 804, 450, 385, 481...
## $ ccr2          <fct> No, Yes, No, No, No, No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No,...
## $ ccr5          <fct> Yes, Yes, No, No, Yes, No, No, No, No, No, No, Yes, No, No, Yes, No, No, No, Yes, Yes, No, No...
## $ sdf1          <fct> No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, ...

3.3 Generar tabla Kaplan Meier

fit <- survfit(Surv(ttoaidsorexit, aids) ~ ccr5, data =  coxdb)
#summary(fit)
fit %>% broom::tidy() #revisa el estrato!
## # A tibble: 451 x 9
##     time n.risk n.event n.censor estimate std.error conf.high conf.low strata  
##    <dbl>  <dbl>   <dbl>    <dbl>    <dbl>     <dbl>     <dbl>    <dbl> <chr>   
##  1    33     84       1        0    0.988    0.0120     1        0.965 ccr5=Yes
##  2   482     83       0        1    0.988    0.0120     1        0.965 ccr5=Yes
##  3   731     82       0        1    0.988    0.0120     1        0.965 ccr5=Yes
##  4   796     81       1        0    0.976    0.0173     1        0.943 ccr5=Yes
##  5   815     80       0        1    0.976    0.0173     1        0.943 ccr5=Yes
##  6   879     79       0        1    0.976    0.0173     1        0.943 ccr5=Yes
##  7   885     78       0        1    0.976    0.0173     1        0.943 ccr5=Yes
##  8   954     77       1        0    0.963    0.0216     1        0.923 ccr5=Yes
##  9  1006     76       1        0    0.951    0.0254     0.999    0.904 ccr5=Yes
## 10  1019     75       0        1    0.951    0.0254     0.999    0.904 ccr5=Yes
## # ... with 441 more rows
#(1-(1/84)) * (1-(1/81))

3.3 Generar gráfico e interpretar (1)

3.3 Generar gráfico e interpretar (2)

survdiff(Surv(ttoaidsorexit, aids) ~ ccr5, data =  coxdb)
## Call:
## survdiff(formula = Surv(ttoaidsorexit, aids) ~ ccr5, data = coxdb)
## 
##            N Observed Expected (O-E)^2/E (O-E)^2/V
## ccr5=Yes  84       49     63.7     3.400      4.44
## ccr5=No  381      236    221.3     0.979      4.44
## 
##  Chisq= 4.4  on 1 degrees of freedom, p= 0.04
  • Interpretación

  • En la población,
  • (la sobrevida) el tiempo a desarrollar AIDS en sujetos CCR5+
  • es mayor a
  • (la sobrevida) el tiempo a desarrollar AIDS en sujetos CCR5-.
  • Este resultado es estadísticamente significativo con un p < 0.05

3.4 Tu turno 3

En personas VIH+ ¿el polimorfismo SDF1(CXCR12) o CCR2 contribuyen con un mayor tiempo al inicio del SIDA?

fit <- survfit(Surv(ttoaidsorexit, aids) ~ ____, data =  coxdb)

fit %>% broom::tidy() #revisa el estrato!

survdiff(Surv(ttoaidsorexit, aids) ~ _____, data =  coxdb)

ggsurvplot(fit, data = coxdb, risk.table = TRUE,
           conf.int = T,ggtheme = theme_bw(),#ggtheme = theme_minimal(),
           pval = T,censor=FALSE,tables.theme = theme_cleantable())
  • Interpretación

RECESO

Múltiples covariables

características

  • dos o más variables independientes (múltiple)
  • una variable dependiente

objetivo

  • Epidemiológico: controlar confusión en el análisis.
    • estandarización (directa/indirecta),
    • estratificación,
    • puntajes de propensión,
    • regresión multivariable
  • Estadístico: emplear múltiples predictores
    • lineales, no-lineales, segmentadas

GLM: verosimilitud

  • GLM = Modelos Lineales Generalizados

  • La estimación de parámetros se da por un proceso de optimización llamado máxima verosimilitud (o likelihood)

  • GLM ajusta modelos lineales de \(g(y)\) con covaribles \(x\)

\[ g(Y) = \beta_0 + \sum_{n=1}^{n} \beta_n X_n \enspace , \enspace y \sim F \]

Donde:

  • \(F\) es la familia de distribución
  • \(g(\space)\) es la función de enlace

4.1 Caso-Control

  • OR: familia: binomial, link: logit

\[ logit(p) = log(odds) = log\left(\frac{p}{1-p}\right) \\ logit(p) = \beta_0 + \beta_1 X_1 + . . . + \beta_n X_n + \epsilon \enspace ; \enspace y \sim Binomial \]

  • El valor exponenciado de los coeficientes se pueden interpretar como Odds Ratio (OR)

\[ Y = \beta_0 + \beta_1 X_1 \\ \begin{cases} Y_{x=1} = log(odds_{x=1}) = \beta_0 + \beta_1(1) \\ Y_{x=0} = log(odds_{x=0}) = \beta_0 + \beta_1(0) \end{cases} \\ Y_{x=1} - Y_{x=0} = \beta_1 \\ log(odds_{x=1}) - log(odds_{x=0}) = \beta_1 \\ log \left(\frac{odds_{x=1}}{odds_{x=0}}\right) = \beta_1 \\ OR = exp(\beta_1) \]

4.2 Pregunta de investigación

En personas VIH+, ajustando por raza ¿el polimorfismo CCR5 está asociado con el desarrollo del SIDA?

  • base: aidsdb.dta
  • covariable: race
  • exposición: ccr5
  • desenlace: aids
## Observations: 300
## Variables: 10
## $ studyid       <dbl> 305636, 279772, 322022, 549808, 490172, 328297, 298549, 243450, 104463, 135567, 385200, 20161...
## $ ttoaidsorexit <dbl> 1016, 2209, 607, 936, 2391, 3336, 2066, 1464, 2315, 1428, 2031, 2233, 3345, 1121, 2833, 1770,...
## $ aids          <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes...
## $ age           <dbl> 30, 28, 29, 35, 22, 33, 30, 39, 31, 35, 54, 30, 31, 32, 39, 44, 35, 25, 25, 46, 43, 43, 49, 2...
## $ race          <fct> race2, race1, race1, race1, race1, race1, race1, race1, race1, race3, race1, race1, race1, ra...
## $ loghivrna     <dbl> 12.604708, 9.630694, 12.018091, 12.440480, 9.655026, 8.002359, 10.209169, 5.703783, 10.649203...
## $ cd4           <dbl> 791, 496, 253, 597, 932, 1016, 876, 900, 763, 530, 1096, 696, NA, 804, 662, 882, 853, 360, 63...
## $ ccr2          <fct> No, Yes, No, No, Yes, Yes, No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, N...
## $ ccr5          <fct> No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, Yes, Yes, No, No...
## $ sdf1          <fct> No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, N...

4.3 Interpretar variables categóricas

wm1 <- glm(aids ~ ccr5 + race, data = aidsdb_or_no, family = binomial(link = "logit"))
## # A tibble: 4 x 6
##   term         log.or    or conf.low conf.high p.value
##   <chr>         <dbl> <dbl>    <dbl>     <dbl>   <dbl>
## 1 (Intercept)  0.0445 1.05     0.794      1.38  0.751 
## 2 ccr5Yes      0.186  1.20     0.679      2.15  0.525 
## 3 racerace2   -0.752  0.471    0.195      1.07  0.0797
## 4 racerace3   -0.308  0.735    0.255      2.04  0.555
  • \(\beta_0\)
  • En la población, el odds de tener sida dado que no poseen CCR5 es 1.05,
  • con un intervalo de confianza al 95% de 0.79 a 1.38, ajustando por raza.

  • \(\beta_{CCR2:Yes}\)
  • En la población, el odds de tener sida dado que sí poseen CCR5 es
  • 1.2 veces,
  • el odds de tener depresión dado que no poseen CCR5,
  • con un intervalo de confianza al 95% de 0.68 a 2.15, ajustando por raza.
  • Este resultado no es estadísticamente significativo con un valor p = 0.525

4.3 Interpretar variables contínuas

wm1 <- glm(aids ~ ccr5 + age, data = aidsdb_or_no, family = binomial(link = "logit"))
## # A tibble: 3 x 6
##   term         log.or    or conf.low conf.high p.value
##   <chr>         <dbl> <dbl>    <dbl>     <dbl>   <dbl>
## 1 (Intercept)  0.725  2.07     0.723      5.99   0.178
## 2 ccr5Yes      0.245  1.28     0.724      2.27   0.399
## 3 age         -0.0222 0.978    0.949      1.01   0.138
  • \(\beta_{edad}\)
  • En la población, por cada incremento en un año de edad,
  • el odds de sida cambia en 1.28, con un intervalo de confianza AL 95% de 0.72 a 2.27,
  • ajustando por presencia de CCR5.
  • Este resultado no es estadísticamente significativo con un valor p = 0.399

4.4 Tu turno 4

En adultos ¿la obesidad está asociada con la enfermedad cardiovascular?

  • usar base: cardio
cardio <- read_dta("data/cardio.dta") %>% as_factor()

5.1 Cohorte

  • RR: familia: binomial, link: log

\[ log(p) = \beta_0 + \beta_1 X_1 + . . . + \beta_n X_n + \epsilon \enspace ; \enspace y \sim Binomial \]

  • El valor exponenciado de los coeficientes se pueden interpretar como Risk Ratio (RR)

\[ Y = \beta_0 + \beta_1 X_1 \\ \begin{cases} Y_{x=1} = log(p_{x=1}) = \beta_0 + \beta_1(1) \\ Y_{x=0} = log(p_{x=0}) = \beta_0 + \beta_1(0) \end{cases} \\ Y_{x=1} - Y_{x=0} = \beta_1 \\ log(p_{x=1}) - log(p_{x=0}) = \beta_1 \\ log \left(\frac{p_{x=1}}{p_{x=0}}\right) = \beta_1 \\ RR = exp(\beta_1) \]

5.2 Pregunta de investigación

En personas VIH+, ajustando por raza, ¿el polimorfismo CCR5(Delta-32) protege contra el desarrollo del SIDA?

  • base: aidsdb.dta
  • covariable: race
  • exposición: ccr5
  • desenlace: aids
## Observations: 465
## Variables: 10
## $ studyid       <dbl> 101750, 101780, 103328, 104463, 104525, 107858, 108299, 108831, 109749, 110129, 112245, 11421...
## $ ttoaidsorexit <dbl> 1019, 2809, 1717, 2315, 3764, 2643, 1185, 3636, 2213, 1692, 2950, 3782, 2918, 1061, 1461, 264...
## $ aids          <fct> Yes, No, Yes, Yes, No, Yes, Yes, Yes, Yes, No, No, No, Yes, No, Yes, No, Yes, No, No, No, Yes...
## $ age           <dbl> 22, 25, 32, 31, 39, 39, 32, 36, 43, 39, 28, 30, 28, 28, 38, 36, 37, 32, 44, 38, 33, 33, 32, 3...
## $ race          <fct> race1, race2, race1, race1, race1, race1, race1, race1, race1, race1, race1, race1, race1, ra...
## $ loghivrna     <dbl> 11.786481, 12.916421, 13.169676, 10.649203, 10.834726, 6.790097, 9.098403, NA, 12.690433, NA,...
## $ cd4           <dbl> 434, 391, 819, 763, 520, NA, 711, 2271, 402, 684, 530, 740, 473, 746, 531, 804, 450, 385, 481...
## $ ccr2          <fct> No, Yes, No, No, No, No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No,...
## $ ccr5          <fct> Yes, Yes, No, No, Yes, No, No, No, No, No, No, Yes, No, No, Yes, No, No, No, Yes, Yes, No, No...
## $ sdf1          <fct> No, No, No, No, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, ...

5.3 Interpretar coeficientes

wm1 <- glm(aids ~ ccr5 + race, data = aidsdb, family = binomial(link = "log"))
## # A tibble: 4 x 6
##   term         log.rr    rr conf.low conf.high       p.value
##   <chr>         <dbl> <dbl>    <dbl>     <dbl>         <dbl>
## 1 (Intercept) -0.539  0.583    0.477     0.685 0.00000000286
## 2 ccr5No       0.0196 1.02     0.844     1.27  0.846        
## 3 racerace2    0.285  1.33     1.08      1.56  0.00163      
## 4 racerace3    0.0568 1.06     0.736     1.37  0.713
  • \(\beta_0\)
  • En la población, el riesgo de sida dado que no poseen CCR2 es 0.58,
  • con un intervalo de confianza AL 95% de 0.48 a 0.69, ajustando por raza.

  • \(\beta_{ccr5:yes}\)
  • En la población, el riesgo de tener sida dado que sí poseen CCR2 es 1.02 veces,
  • el riesgo de tener sida dado que no poseen CCR2,
  • con un intervalo de confianza AL 95% de 0.84 a 1.27, ajustando por raza.
  • Este resultado no es estadísticamente significativo con un valor p = 0.846

5.4 Tu turno 5

En personas VIH+, ajustando por edad, ¿el polimorfismo CCR5(Delta-32) protege contra el desarrollo del SIDA?

  • base: aidsdb.dta
  • covariable: age
  • exposición: ccr5
  • desenlace: aids

  • interpretar edad.

Transversales

En adultos ¿la baja estatura está asociada con la depresión?

depres <- read_sav("data/depres.sav") %>% as_factor()
wm1 <- glm(depress ~ short, data = depres, family = binomial(link = "log"))
## # A tibble: 2 x 6
##   term        log.pr    pr conf.low conf.high p.value
##   <chr>        <dbl> <dbl>    <dbl>     <dbl>   <dbl>
## 1 (Intercept) -2.23  0.107    0.103     0.112 0      
## 2 shortYes     0.121 1.13     1.04      1.23  0.00526
  • \(\beta_{estatura:baja}\)
  • En la población, la prevalencia de tener depresión dado que se es de estatura baja es 1.13 veces,
  • el prevalencia de tener depresión dado que se es de estatura alta,
  • con un intervalo de confianza AL 95% de 1.04 a 1.23.
  • Este resultado es estadísticamente significativo con un valor p = 0.005

6.1 Situación 1: prevalencia < 10%

En adultos ¿la depresión está asociada con el evento cerebrovascular?

  • base: depress.sav
  • exposición: depress
  • desenlace: cvd
  • prevalencia del desenlace: 8.96%
depres %>% count(cvd) %>% mutate(prev=n/sum(n))
## # A tibble: 2 x 3
##   cvd       n   prev
##   <fct> <int>  <dbl>
## 1 No    20033 0.910 
## 2 Yes    1972 0.0896

6.1 Situación 1: prevalencia < 10%

En adultos ¿la depresión está asociada con el evento cerebrovascular?

wm1 <- glm(cvd ~ depress, data = depres, family = binomial(link = "logit"))
## # A tibble: 2 x 6
##   term        log.or     or conf.low conf.high  p.value
##   <chr>        <dbl>  <dbl>    <dbl>     <dbl>    <dbl>
## 1 (Intercept) -2.42  0.0886   0.0841    0.0932 0.      
## 2 depressYes   0.736 2.09     1.85      2.35   7.21e-33
wm1 <- glm(cvd ~ depress, data = depres, family = binomial(link = "log"))
## # A tibble: 2 x 6
##   term        log.pr     pr conf.low conf.high  p.value
##   <chr>        <dbl>  <dbl>    <dbl>     <dbl>    <dbl>
## 1 (Intercept) -2.51  0.0813   0.0776    0.0852 0.      
## 2 depressYes   0.651 1.92     1.73      2.12   7.40e-35

6.2 Situación 2: no convergencia

En adultos ¿la actividad física está asociada con la hipercolesterolemia?

cronic <- read_rds("data/cronic.rds")
cronic %>% count(tcho2,tcho2_n,tcho2_nn) %>% mutate(prev=n/sum(n))
## # A tibble: 2 x 5
##   tcho2 tcho2_n tcho2_nn     n  prev
##   <fct>   <dbl>    <dbl> <int> <dbl>
## 1 No          1        0   613 0.697
## 2 Yes         2        1   266 0.303
#no convergencia
glm(tcho2 ~ age + sex + group + bmi_cat + diab + hba1c + ht + pa2 + smoke2 + alcohol2 + ndrug, 
    data = cronic, family = binomial(link = "log"))
## Error: no valid set of coefficients has been found: please supply starting values

6.2 Situación 2: no convergencia

  • Cambiar la familia de distribución binomial a poisson.
  • Poisson es una caso especial de la distribución binomial.
#alternativa: poisson
wm1 <- glm(tcho2_nn ~ age + sex + group + diab + hba1c + ht + pa2 + smoke2 + alcohol2 + ndrug, 
    data = cronic, family = poisson(link = "log"))
## # A tibble: 13 x 7
##    term               log.pr    se    pr conf.low conf.high p.value
##    <chr>               <dbl> <dbl> <dbl>    <dbl>     <dbl>   <dbl>
##  1 (Intercept)         -4.21  0.65  0.01     0         0.05   0    
##  2 age                  0.02  0.01  1.02     1         1.03   0.007
##  3 sexMale             -0.17  0.13  0.85     0.65      1.1    0.221
##  4 groupMigrant         1.58  0.27  4.85     2.95      8.62   0    
##  5 groupUrban           1.48  0.3   4.38     2.5       8.15   0    
##  6 diabYes             -0.28  0.66  0.75     0.19      2.5    0.666
##  7 hba1c                0.14  0.1   1.15     0.95      1.4    0.158
##  8 htYes                0.02  0.19  1.02     0.7       1.45   0.915
##  9 pa2low pa            0.04  0.14  1.05     0.79      1.37   0.755
## 10 smoke2Former >6mo    0.02  0.25  1.02     0.61      1.61   0.943
## 11 smoke2Current <6mo  -0.19  0.21  0.82     0.53      1.23   0.362
## 12 alcohol2Yes          0.04  0.24  1.04     0.63      1.62   0.88 
## 13 ndrug                0.19  0.07  1.21     1.06      1.38   0.004

6.2 Situación 2: no convergencia

  • Calcular errores estandar robustos
  • Objetivo: controlar por violaciones en el supuesto de varianza igual a media en la regresión de Poisson.
cov.m1 <- sandwich::vcovHC(wm1, type="HC0")
std.err <- sqrt(diag(cov.m1))
##                    Estimate Robust SE Pr(>|z|)    LL   UL
## (Intercept)            0.01      1.71     0.00 -3.33 3.36
## age                    1.02      1.00     0.00 -0.95 2.98
## sexMale                0.85      1.11     0.11 -1.33 3.02
## groupMigrant           4.85      1.29     0.00  2.31 7.39
## groupUrban             4.38      1.32     0.00  1.79 6.97
## diabYes                0.75      1.75     0.61 -2.67 4.18
## hba1c                  1.15      1.08     0.08 -0.97 3.28
## htYes                  1.02      1.17     0.90 -1.26 3.30
## pa2low pa              1.05      1.12     0.70 -1.15 3.24
## smoke2Former >6mo      1.02      1.23     0.93 -1.38 3.42
## smoke2Current <6mo     0.82      1.20     0.29 -1.53 3.18
## alcohol2Yes            1.04      1.22     0.86 -1.36 3.43
## ndrug                  1.21      1.05     0.00 -0.85 3.28

6.3 Tu turno 6

  • Situación 1: Genera un modelo múltiple entre depresión y ECV tomando en cuenta estatura como confusor.

  • Situación 2: Interpretar los coeficientes de la variable categórica grupo.

Referencias

Libro

  • Szklo M. & FJ Nieto. Epidemiology. Beyond the basics. Third Edition. 2014.

Presentaciones

  • Curso de Bioestadística. Maestría en Ciencias de la Investigación Epidemiológica. UPCH 2018.
  • Zavala JA. Regresión Lineal. 2018
  • Akehurst H. Bioestadística con R. Julio 2016

Enlaces web

  • Statistics for Biologist: Points of Significance. Link: https://www.nature.com/collections/qghhqm/pointsofsignificance
  • Association of gene polymorphism of SDF1(CXCR12) with susceptibility to HIV-1 infection and AIDS disease progression: A meta-analysis. PLoS One. 2018 Feb 8. https://www.ncbi.nlm.nih.gov/pubmed/29420545
  • Protective effect of CCR5 Delta-32 allele against HIV-1 in Mexican women. Curr HIV Res. 2013 Sep https://www.ncbi.nlm.nih.gov/pubmed/24382026

CIERRE: ¿Qué no hemos podido ver?

  • Regresión de Cox (Hazard Ratio):
    • http://www.sthda.com/english/wiki/cox-proportional-hazards-model
  • Selección de predictores en regresión múltiple por LRT:
    • https://rstudio-pubs-static.s3.amazonaws.com/2899_a9129debf6bd47d2a0501de9c0dc583d.html
  • Análisis y visualización de DAGs: https://ggdag.netlify.com/
  • Manipulación, limpieza y visualización de datos: http://r4ds.had.co.nz/

CIERRE: Ciencia Reproducible

CIERRE: Ciencia Reproducible