Agenda
Introducción al modelado de regresión
Modelo de Regresión Lineal Simple
Regresión Lineal Simple en R
Regresión Lineal Múltiple
Regresión Lineal Múltiple en R
Evaluación de Supuestos
Conjunto de técnicas estadística para estimar la relación entre variables.
Los modelos de regresión multivariable modelan una sola variable dependiente en función de una o más variables independientes.
Según STRATOS
podemos usar regresión para 3 propósitos diferentes:
Descripción*
Predicción
Explicación
Este curso se centrará solamente en algunas aplicaciones.
No abordaremos modelos de regresión para desarrollar modelos o reglas de predicción clínica.
Tampoco para métodos de inferencia causal robusta.
Agenda
Introducción al modelado de regresión
Modelo de Regresión Lineal Simple
Regresión Lineal Simple en R
Regresión Lineal Múltiple
Regresión Lineal Múltiple en R
Evaluación de Supuestos
Método estadístico que modela la
relación
entre unavariable continua (dependiente)
y otrasvariables (independientes)
.
Y es variable resultado
(outcome), respuesta o dependiente.
X es una variable explicativa
, predictora o regresora.
En la figura, a mayor valor de X, mayor valor de Y.
Podemos tratar de dibujar una línea recta
que resuma
la relación.
Existen infinitas rectas posibles
que podríamos trazar: ¿Cuál elegir?
recta
que pase por el valor más representativo
del yi en cada valor fijo de x1.
recta
que conecte
los promedios condicionados
en x1regresión lineal simple
se puede expresar de la siguiente manera:yi=β0+β1x1i⏟componentesistemático+ϵi⏟componentealeatorio
El componente sistemático
describe la media de yi en cada valor fijo de x1i: Media condicionada de y en x
.
El componente aleatorio
describe la variación de los individuos alrededor de cada media condiciona de y:
observación
i en la población, podemos relacionar
el valor esperado
(media) E[yi] de yi (también llamado μi) con la variable explicativa
x1i mediante la siguiente ecuación lineal
:E[Y|X1=x1i]=E[yi]=μi=β0+β1x1i
variables aleatorias
independientes e idénticamente distribuidas (i.i.d
)parámetros desconocidos
de una superpoblación infinita.x1 es fijo
β0 y β1
coeficientes de regresión
y son una medida de asociación
.queremos estimar
con los datos de la muestra!Advertencia
componente sistemático
solo relaciona
el promedio condicionado
de yi con las variables explicativas
, NO con los valores individuales.ϵi=yi−μi
El problema es que el término de error ϵi no puede predecirse ni estimarse con los datos, se considera que es el componente no explicado
por la variable independiente.
yi=β0+β1x1i+ϵi
yi∼N(β0+β1x1i,σ2)
ϵi∼N(0,σ2)
Usamos métodos numéricos
:
Método de Mínimos Cuadrados Ordinarios (MCO)
Método de Máxima Verosimilitud (MV)
MCO y MV son equivalentes para el caso de la regresión lineal normal.
El estimador MCO
es insesgado
, no importa la distribución de yi o ϵi.
El estimador MCO tiene mínima varianza
si y solo si:
independencia de observaciones
.normalidad
.No es necesario que ϵi o sigan una distribución normal para que los coeficientes de regresión β puedan estimarse de manera puntual.
Sin embargo, para estimar el valor p
o los intervalos de confianza
mediante inferencia clásica
sí se necesita asumir una distribución conocida.
El modelo de regresión lineal normal asume normalidad de yi y ϵi.
Sin embargo, el modelo es robusto a desviaciones leves/moderadas de la normalidad cuando se cumple el TLC (número de observaciones grande).
Otros enfoques para inferencia flexibilizan este supuesto:
Las variables categóricas
no son continuas, en cambio son discretas y asumen solo unos cuantos valores.
¿Cómo estimar una medida de asociación cuando la variable explicativa es categórica?
Veamos el caso binario.
Si la variable es binaria
, asignamos a una categoría el valor de 1
y a otra el valor de 0
.
Asumiremos que la variable categórica es numérica para los efectos de todo cálculo.
Sin embargo, la interpretación se centrará en la comparación de categorías 0 y 1, nunca se interperará valores intermedios porquen o existen.
Agenda
Introducción al modelado de regresión
Modelo de Regresión Lineal Simple
Regresión Lineal Simple en R
Regresión Lineal Múltiple
Regresión Lineal Múltiple en R
Evaluación de Supuestos
Se usa la función lm() de R base. Sin embargo, la salida de esta no es muy informativa:
El modelo puede guardarse para realizar más operaciones sobre este. Por ejemplo, mejorar la salida.
Podemos usar summary() para ver resultados detallados.
Call:
lm(formula = y ~ x1, data = datos)
Residuals:
Min 1Q Median 3Q Max
-3.8666 -1.1168 -0.3487 1.3100 4.1336
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.06666 0.37316 -0.179 0.859
x1Tratamiento Nuevo 4.27094 0.52773 8.093 1.59e-10 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.866 on 48 degrees of freedom
Multiple R-squared: 0.5771, Adjusted R-squared: 0.5683
F-statistic: 65.5 on 1 and 48 DF, p-value: 1.594e-10
Call:
lm(formula = y_peso_final ~ x3_peso_inicial, data = datos2)
Residuals:
Min 1Q Median 3Q Max
-10.0568 -4.7717 -0.8704 5.1824 10.4953
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.4317 2.6574 -2.044 0.0412 *
x3_peso_inicial 1.3447 0.1766 7.615 6.1e-14 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5.535 on 998 degrees of freedom
Multiple R-squared: 0.05491, Adjusted R-squared: 0.05397
F-statistic: 57.99 on 1 and 998 DF, p-value: 6.1e-14
y_pesofinal=−5.4317+1.3447∗x3_pesoinicial+ϵi
ϵi∼Normal(0,5.5352)
{broom}
y su función tidy()
podemos obtener también los intervalos de confianza:β0 o intercepto
: Este viene a ser el valor promedio de y cuando todos los valores de x son 0. En este caso, cuando el peso inicial es cero kg. ¿Esto es posible?, por tal motivo, no se suele interpretar este valor.
β1 o coeficiente de regresión de x3_peso_inicial
: Por cada 1 kg adicional
de peso inicial, el valor promedio
del peso final aumenta 1.43 kg (IC95% 1.00 a 1.69; p < 0.001).
Call:
lm(formula = y_peso_final ~ x1_tto, data = datos2)
Residuals:
Min 1Q Median 3Q Max
-7.7043 -1.6644 -0.0095 1.5849 8.5658
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8771 0.1112 178.67 <2e-16 ***
x1_ttoTratamiento Nuevo -10.2325 0.1573 -65.04 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.488 on 998 degrees of freedom
Multiple R-squared: 0.8091, Adjusted R-squared: 0.8089
F-statistic: 4230 on 1 and 998 DF, p-value: < 2.2e-16
y_pesofinal=19.8771−10.2325∗x3_ttoTratamientoNuevo+ϵi
ϵi∼Normal(0,2.4882)
{broom}
y su función tidy()
podemos obtener también los intervalos de confianza:β0 (Intercept): A menudo no se interpreta. Es el valor promedio de yi cuando los valores de x son cero. En este caso, cuando el tratamien es cero (placebo). ¿Esto es posible?, sí es posible pero no es de ayuda para modelos explicativos, por lo que no se interpreta.
β1 x1Tratamiento Nuevo: El promedio de peso final en quienes recibieron el tratamiento nuevo fue 10.23 kg menor que el de quienes recibieron placebo (Dif. medias = -10.23; IC95% -10.54 a -9.92; p < 0.001).
Agenda
Introducción al modelado de regresión
Modelo de Regresión Lineal Simple
Regresión Lineal Simple en R
Regresión Lineal Múltiple
Regresión Lineal Múltiple en R
Evaluación de Supuestos
El modelo de regresión lineal múltiple generaliza la RLS permitiendo evaluar la relación de varias covariables explicativas x sobre yi.
Componente sistemático:
E[Y|X1=x1i,...,Xp=xpi]=E[yi]=μi=β0+β1x1i+...+βpxpi
Componente aleatoria:
yi∼N(β0+β1x1i+...+βpxpi,Iσ2)
ϵi∼N(0,σ2)
Genera un hiperplano recto.
No podemos imaginarnos una imagen de esto, pero sí podemos analizarlo a nivel estadístico.
Agenda
Introducción al modelado de regresión
Modelo de Regresión Lineal Simple
Regresión Lineal Simple en R
Regresión Lineal Múltiple
Regresión Lineal Múltiple en R
Evaluación de Supuestos
Call:
lm(formula = y_peso_final ~ x1_tto, data = datos2)
Residuals:
Min 1Q Median 3Q Max
-7.7043 -1.6644 -0.0095 1.5849 8.5658
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8771 0.1112 178.67 <2e-16 ***
x1_ttoTratamiento Nuevo -10.2325 0.1573 -65.04 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.488 on 998 degrees of freedom
Multiple R-squared: 0.8091, Adjusted R-squared: 0.8089
F-statistic: 4230 on 1 and 998 DF, p-value: < 2.2e-16
El modelo RLS solo incluye una covariable.
El modelo de RLM incluye 2 o más covariables.
Estas se agregan con un símbolo +
Notar que no se reportan intervalos de confianza al 95%.
Call:
lm(formula = y_peso_final ~ x1_tto + x3_peso_inicial, data = datos2)
Residuals:
Min 1Q Median 3Q Max
-5.5598 -1.4213 0.1343 1.0768 5.4482
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.94719 0.99689 -0.95 0.342
x1_ttoTratamiento Nuevo -10.25530 0.13111 -78.22 <2e-16 ***
x3_peso_inicial 1.38755 0.06614 20.98 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.073 on 997 degrees of freedom
Multiple R-squared: 0.8676, Adjusted R-squared: 0.8673
F-statistic: 3266 on 2 and 997 DF, p-value: < 2.2e-16
El paquete {broom} tiene funciones que facilitan obtener varios estadísticos de interés de los modelos de regresión.
La función tidy() permite obtener intervalos de confianza y otras medidas de interés.
El paquete {broom} tiene funciones que facilitan obtener varios estadísticos de interés de los modelos de regresión.
La función tidy() permite obtener intervalos de confianza y otras medidas de interés.
Además, retorna un tibble()
que puede manipularse y luego embeberse en una tabla.
Primero se carga el paquete:
tibble()
que puede ser manipulado, exportado a excel, y convertido a tabla.# A tibble: 3 × 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) -0.947 0.997 -0.950 3.42e- 1
2 x1_ttoTratamiento Nuevo -10.3 0.131 -78.2 0
3 x3_peso_inicial 1.39 0.0661 21.0 3.10e-81
conf.int = TRUE
mostramos también los intervalos de confianza.# A tibble: 3 × 7
term estimate std.error statistic p.value conf.low conf.…¹
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) -0.947 0.997 -0.950 3.42e- 1 -2.90 1.01
2 x1_ttoTratamiento Nuevo -10.3 0.131 -78.2 0 -10.5 -10.0
3 x3_peso_inicial 1.39 0.0661 21.0 3.10e-81 1.26 1.52
# … with abbreviated variable name ¹conf.high
term | estimate | std.error | statistic | p.value | conf.low | conf.high |
---|---|---|---|---|---|---|
(Intercept) | -0.9471917 | 0.99689433 | -0.9501426 | 3.422701e-01 | -2.903444 | 1.009060 |
x1_ttoTratamiento Nuevo | -10.2553009 | 0.13110928 | -78.2194924 | 0.000000e+00 | -10.512583 | -9.998019 |
x3_peso_inicial | 1.3875541 | 0.06613671 | 20.9800905 | 3.097784e-81 | 1.257771 | 1.517337 |
mod %>%
tidy(conf.int = TRUE) %>%
mutate(estimate = round(estimate, 2),
conf.low = round(conf.low, 2),
conf.high = round(conf.high, 2),
p.value2 = case_when(
p.value < 0.001 ~ "<0.001",
p.value >= 0.001 ~ as.character(round(p.value, 3))
)) %>%
select(term, estimate, conf.low, conf.high, p.value2) %>%
gt()
term | estimate | conf.low | conf.high | p.value2 |
---|---|---|---|---|
(Intercept) | -0.95 | -2.90 | 1.01 | 0.342 |
x1_ttoTratamiento Nuevo | -10.26 | -10.51 | -10.00 | <0.001 |
x3_peso_inicial | 1.39 | 1.26 | 1.52 | <0.001 |
mod %>%
tidy(conf.int = TRUE) %>%
mutate(estimate = round(estimate, 2),
conf.low = round(conf.low, 2),
conf.high = round(conf.high, 2),
p.value2 = case_when(
p.value < 0.001 ~ "<0.001",
p.value >= 0.001 ~ paste("= ", round(p.value, 3))
)) %>%
mutate(
`Coeficiente (IC95%), p valor` =
glue("{estimate} (IC95% {conf.low} a {conf.high}), p {p.value2}"),
Variables = c("Intercepto", "Tratamiento nuevo vs. Placebo", "Peso inicial (kg)")
) %>%
select(Variables, `Coeficiente (IC95%), p valor`) %>%
gt()
Variables | Coeficiente (IC95%), p valor |
---|---|
Intercepto | -0.95 (IC95% -2.9 a 1.01), p = 0.342 |
Tratamiento nuevo vs. Placebo | -10.26 (IC95% -10.51 a -10), p <0.001 |
Peso inicial (kg) | 1.39 (IC95% 1.26 a 1.52), p <0.001 |
Call:
lm(formula = y_peso_final ~ x1_tto + x3_peso_inicial, data = datos2)
Residuals:
Min 1Q Median 3Q Max
-5.5598 -1.4213 0.1343 1.0768 5.4482
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.94719 0.99689 -0.95 0.342
x1_ttoTratamiento Nuevo -10.25530 0.13111 -78.22 <2e-16 ***
x3_peso_inicial 1.38755 0.06614 20.98 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.073 on 997 degrees of freedom
Multiple R-squared: 0.8676, Adjusted R-squared: 0.8673
F-statistic: 3266 on 2 and 997 DF, p-value: < 2.2e-16
y_pesofinal=−0.94719−10.25530∗x1ttoTratamientoNuevo+1.3875∗x3_pesoinicial+ϵi
ϵi∼Normal(0,2.0732)
term | estimate | std.error | statistic | p.value | conf.low | conf.high |
---|---|---|---|---|---|---|
(Intercept) | -0.9471917 | 0.99689433 | -0.9501426 | 3.422701e-01 | -2.903444 | 1.009060 |
x1_ttoTratamiento Nuevo | -10.2553009 | 0.13110928 | -78.2194924 | 0.000000e+00 | -10.512583 | -9.998019 |
x3_peso_inicial | 1.3875541 | 0.06613671 | 20.9800905 | 3.097784e-81 | 1.257771 | 1.517337 |
β0 o intercepto
: Este viene a ser el valor promedio de y cuando todos los valores de x son 0. En este caso, cuando el peso inicial es cero kg y cuando el tratamiento es placebo. ¿Esto es posible?, por tal motivo, no se suele interpretar este valor.
β2 o coeficiente de regresión de x1_ttoTratamiento Nuevo
: El promedio de peso final en quienes recibieron el tratamiento nuevo fue 10.26 kg menor que el de quienes recibieron placebo, luego de ajustar por peso inicial (Dif. medias = -10.26; IC95% -10.51 a -9.99; p < 0.001).
β1 o coeficiente de regresión de x3_peso_inicial
: Por cada 1 kg adicional
de peso inicial, el valor promedio
del peso final aumenta 1.39 kg, luego de ajustar por tatamiento recibido (IC95% 1.26 a 1.52; p < 0.001).
Agenda
Introducción al modelado de regresión
Modelo de Regresión Lineal Simple
Regresión Lineal Simple en R
Regresión Lineal Múltiple
Regresión Lineal Múltiple en R
Evaluación de Supuestos
Los errores
(ϵi) son medidas de la población a la que no tenemos acceso.
Los residuos
(ei) son el análogo a los errores
pero obtenidos de la muestra observada
.
Podemos usar los residuos
para evaluar
algunos supuestos
sobre los errores
.
Supuestos estadísticos del modelo
Linealidad
Independencia de observaciones
Homocedasticidad de los errores ϵi
Normalidad de los errores ϵi o de yi.
No problemas con la regresión:
Supuestos si queremos generalizar a una población finita bien definida
La muestra es representativa de la población.
Cuando no lo tenemos, solo podemos generalizar a una población que sabemos que existe pero no podemos definir. ¿Qué tan relevante puede ser esto?
Hay asignación aleatoria
Cuando no lo tenemos, tenemos que poder asumir (¿ingenuamente?) que se puede emular la asignación aleatoria de alguna manera:
En realidad, los supuestos de los modelos lineales son sobre el comportamiento probabilístico de yi.
Sin embargo, la idea de la existencia de los errores
y de sus valores observados en la muestra, residuos
resulta útil para evaluar supuestos.
Permiten reducir un problema de muchas dimensiones a solo 1 o 2 dimensiones.
Son como las placas radiográficas para el diagnóstico de los modelos.
Se usan los residuos para explorar el comportamiento de los yi o los errores ϵ.
Preferiblemente usar gráficos de residuos.
Pruebas de hipótesis que usan residuos tienen los mismos problemas que discutimos en clases anteriores.
Podríamos usarlas para complementar análisis cuando los tamaños de muestra no son ni muy pequeños ni muy grandes.
La función check_model
del paquete {performance}
genera un panel de gráficos muy útil para evalur estos supuestos.
Podemos complentar el análisis de supuestos con funciones del paquete {car}
.
Podemos observar un panel general con la evaluación de varios supuestos
Primero cargamos el paquete performance:
Luego, la función check_model() aplicada al objeto de modelado genera un panel de gráficos para evaluar diversos supuestos o detectar algunos problemas.
Los gráficos de homogeneidad de varianzas, linealidad y de normalidad de residuos usan residuos estandarizados para el caso de lm()
La función check_model() genera un gráfico de residuos versus valores ajustados que permiten evaluar linealidad.
Podemos graficar los residuos contra cada variable predictora numérica para identificar si alguna de estas variables es causante de no linealidad e incluso tener una idea de qué forma funcional podría ser apropiada.
Los gráficos de residuos crudos, los estandarizados, e incluso los estudentizdos versus cada covariable pueden no generar gráficos donde se visualicen apropiadamente la no linealidad.
Los residuos parciales son un tipo de residuo que genera gráficos de mejor “resolución” para diagnosticar problemas de no linealidad.
Se puede evaluar si la homocedasticidad es consistente según cada variable predictora.
Se sugiere usar residuos estudentizados
.
Test stat Pr(>|Test stat|)
x1_tto
x3_peso_inicial 1.2180 0.2235
Tukey test 0.5429 0.5872
Test stat Pr(>|Test stat|)
x1_tto
x3_peso_inicial 1.2180 0.2235
Tukey test 0.5429 0.5872
Diversas medidas pueden usarse para detectar la existencia de valores extremos y puntos de alto apalancamiento que puedan ser influyentes.
La función influenceIndexPlot() del paquete {car} es muy útil para generar estos gráficos.
En el caso de modelos explicativos, importa determinar si hay un impacto en los coeficientes de regresion.
Los dfbetas
pueden ser útiles para evaluar esto:
El supuesto de linealidad es sobre los coeficientes de regresión β, no sobre las covariables.
Las variables X deben estar en una forma apropiada para que el supuesto se cumpla.
Es bien difícil que exista linealidad en la realidad, pero puede ocurrir en raras y excepcionales ocasiones.
Se sugiere asumir no linealidad y pre-planear un modelamiento no lineal de la forma funcional de los predictores.
Entre los métodos que pueden usarse, tenemos:
Splines
: Bastante usado y sugerido en bioestadística. Útil para ajustar por variables continuas.
Modelamiento Multivariablede polinomios fraccionales
. También usado y recomendado en literatura biomédica. Útil para modelar forma como objetivo principal.
Polinomios
. Menos flexible, puede ser útil si se conoce bien la relación o se busca mejorar ajuste.
Modelos aditivos generalizados
. Útil si se buscar modelar la relación. Complejos y requieren muchos datos.
Evite categorizar la variable continua
Categorizar es muy malo: se pierde información y se corre el riesgo de sesgar resultados.
Si se quiere ajustar por variables continuas, use Splines o Polinomios fraccionales. No requiere interpretar sus resultados, pero si ajsutar bien!
Si se quiere evaluar la relación de la variable continua, planee un método estadístico para modelar la forma sin asumir linealidad.
Presuponga que la relación no es lineal.
Modelo y responda su pregunta. Si la relación es lineal, el modelo más complejo revelerá una línea recta.
No homogeneidad de varianzas: Podemos usar una estimación robusta de la varianza o modelar directamente la varianza.
Los paquetes {sanwich}
y {lmtest}
proporcionan funciones útiles para estimación robusta de varianza.
Es bien difícil de creer que existe homogeneidad de varianzas en la vida real (salvo muy raras y excepcionales ocasiones).
# A tibble: 3 × 7
term estimate std.error statistic p.value conf.low conf.…¹
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) -0.947 1.05 -0.906 3.65e- 1 -3.00 1.10
2 x1_ttoTratamiento Nuevo -10.3 0.131 -78.1 0 -10.5 -10.0
3 x3_peso_inicial 1.39 0.0692 20.0 2.45e-75 1.25 1.52
# … with abbreviated variable name ¹conf.high
Si distribución es normal (cosa que no podemos saber con certeza), podemos dejar de preocuparnos por este supuesto.
Si se cumple TLC, podemos dejar de preocuparnos por este supuesto.
Si no se cumple TLC o hay dudas razonables, podemos optar por alguna de las siguientes alternativas:
https://github.com/psotob91
percys1991@gmail.com
R Aplicado a los Proyectos de Investigación - Sesión 8