1. Objetivo de los modelos de regresión
- Interesa mucho predecir el valor de una variable numérica \(Y\) que tiene mucha dispersión
- Hay otra variable \(X\) que “casi” determina el valor de \(Y\). Es decir:
- \(Y \approx f(X)\) para cierta función \(f: \mathbb{R} \to \mathbb{R}\) (desconocida)
- \(Y = f(X) + \text{ERROR}\), donde \(\text{ERROR}\) es una cantidad aleatoria y “pequeña”
- A la función \(f\) se le llama función de regresión
- Conocer la fórmula de \(f\) permite predecir \(Y\) a partir de \(X\), con mucha menos incertidumbre
- Ejemplo: predecir \(Y\)= “peso de un individuo”. Si se observa la población completa, se ve mucha dispersión. Si se separa por \(X\) = “altura”, se ve poca dispersión en cada altura (ver figura)

2. El modelo de regresión lineal simple \(Y = \beta_0 + \beta_1 X + \text{N}(0, \sigma^2)\)
- El modelo de regresión lineal simple de \(Y\) sobre \(X\), de parámetros \(\beta_0\), \(\beta_1\) y \(\sigma^2\) se tiene cuando:
- \(Y\) es variable numérica de interés
- \(X\) es otra variable numérica
- Al muestrear \((X,Y)\) resultando \(\begin{array}{|c||c|c|c|} \hline X & x_1 & x_2 & \cdots & x_i & \cdots \\ \hline Y & y_1 & y_2 & \cdots & y_i & \cdots \\ \hline \end{array}\)
- \(X=x_i\) (elegido por el investigador, o aleatorio)
- \(Y = y_i = \beta_0 + \beta_1 x_i + e_i\) donde \(e_i\) es un muestreo del modelo \(\text{N}(0, \sigma^2)\), independiente de los otros muestreos, e independiente del valor que tome la \(X\)
3. El modelo de regresión lineal múltiple \(Y = \beta_0 + \beta_1 X_1 + \cdots + \beta_p X_p + \text{N}(0, \sigma^2)\)
- El modelo de regresión lineal múltiple de \(Y\) sobre \((X_1, \ldots, X_p)\), de parámetros \(\beta_0\), \(\beta_1, \ldots, \beta_p\) y \(\sigma^2\) se tiene cuando:
- \(Y\) es variable numérica de interés
- \(X_1, \ldots, X_p\) son otras variables numéricas
- Al muestrear \((X_1, \ldots, X_p, Y)\) resultando \(\begin{array}{|c||c|c|c|} \hline X_1 & x_{11} & x_{12} & \cdots & x_{1i} & \cdots \\ \hline \vdots & \vdots & \vdots & \ddots & \vdots & \cdots \\ \hline X_p & x_{p1} & x_{p2} & \cdots & x_{pi} & \cdots \\ \hline Y & y_1 & y_2 & \cdots & y_i & \cdots \\ \hline \end{array}\)
- \(X_1=x_{1i}, \ldots, X_p=x_{pi}\) (elegidos por el investigador, o aleatorios)
- \(Y = y_i = \beta_0 + \beta_1 x_{1i} + \cdots + \beta_p x_{pi} + e_i\) donde \(e_i\) es un muestreo del modelo \(\text{N}(0, \sigma^2)\), independiente de los otros muestreos, e independiente de los valores que tomen las \(X_1, \ldots, X_p\)
4. Modelos de regresión no lineal a partir del modelo lineal
- Se pueden “fabricar” fórmulas no lineales (en las \(X\)’s) a partir del modelo lineal (en las \(\beta\)’s).
- El modelo lineal de \(\log Y\) sobre \(\log X\) da lugar a:
- \(\log Y \approx \beta_0 + \beta_1 \log X\)
- \(Y \approx e^{\beta_0 + \beta_1 \log X}\)
- \(Y \approx e^{\beta_0} e^{\beta_1 \log X}\)
- \(Y \approx e^{\beta_0} e^{\log X^{\beta_1}}\)
- \(Y \approx \gamma_0 X^{\beta_1}\) (función potencial) con \(\gamma_0 = e^{\beta_0}\)
- El modelo lineal de \(\log Y\) sobre \(X\) da lugar a:
- \(\log Y \approx \beta_0 + \beta_1 X\)
- \(Y \approx e^{\beta_0 + \beta_1 X}\)
- \(Y \approx e^{\beta_0} \cdot e^{\beta_1 X}\)
- \(Y \approx e^{\beta_0} \cdot (e^{\beta_1})^X\)
- \(Y \approx \gamma_0 \cdot \gamma_1^{X}\) (función exponencial)
- El modelo lineal de \(Y\) sobre \(X\) y \(X^2\) da lugar a:
- \(Y \approx \beta_0 + \beta_1 X + \beta_2 X^2\) (función polinómica de grado 2)
- Se pueden usar más transformaciones de la \(X\) y de la \(Y\) (raíces, cuadrados, etc.)
- Se pueden usar productos mixtos entre las variables independientes
5. El modelo de regresión lineal con R
5.1. Estimación de parámetros (ecuación de la función de regresión)
- Función
lm(formula, data)
:
- Argumentos:
formula
: expresión del tipo y ~ x
o y ~ x1 + x2 + ... + xp
que indica qué variable (y
) depende de cuáles (x
o bien x1
, x2
, etc.)
data
: hoja de datos que contiene las columnas implicadas (o no poner nada si los datos están en vectores)
- Devuelve: un objeto especial de tipo lista, con muchas componentes, entre otras:
$coefficients
: vector etiquetado con los parámetros \(\hat{\beta}_0\), \(\hat{\beta}_1\), etc. Con ellos se puede “escribir” la función de regresión \(\hat{Y} = \hat{\beta}_0 + \hat{\beta}_1 X\), etc.
$fitted.values
: \(\hat{y}_i\), predicciones de \(Y\) para los datos de la muestra
$residuals
: residuos en la muestra (\(y_i - \hat{y}_i\), observadas menos predichas)
- Si se trata de una recta de regresión se puede representar gráficamente junto a los datos, mediante
abline(obj)
, donde obj
es el objeto devuelto por lm()
5.2. Predicción de \(Y\) y estimación de \(E(Y)\), con sus intervalos de confianza
- Función
predict(obj, newdata, interval, level)
:
- Argumentos:
obj
: objeto devuelto por la función lm()
newdata
: hoja de datos con valores de las variables independientes. Debe llevar columnas etiquetadas como las variables independientes usadas en la función lm()
. Por ejemplo, data.frame(x=5)
o bien data.frame(x1=5, x2=3)
interval
: por defecto no lo calcula. Poner confidence
(para el intervalo de confianza para la esperanza de \(Y\)) o bien prediction
(para el intervalo de confianza para la predicción de \(Y\))
level
: nivel de confianza del intervalo de confianza, si se ha pedido
- Devuelve: un vector etiquetado, con las predicciones realizadas, y los intervalos de confianza (si se han pedido)
5.3. Intervalos de confianza para los parámetros \(\beta\)’s del modelo
- Función
confint(obj, parm, level)
:
- Argumentos:
obj
: objeto devuelto por la función lm()
parm
: nombres de los parámetros (omitir para que salgan todos)
level
: nivel de confianza
- Devuelve: una matriz con cada fila correspondiente a un parámetro
5.4. ¿\(\beta_i = 0\)? Contrastes de hipótesis sobre la presunta nulidad de los parámetros (para “sacar” variables innecesarias del modelo lineal, que no afectan significativamente al valor de \(Y\))
- El contraste \(\left\{ \begin{array}{rl} H_0: & \beta_i = 0 \\ H_1: & \beta_i \neq 0 \end{array} \right.\) permite decidir si excluir dicha variable del modelo (ya que si \(\beta_i = 0\), la variable \(X_i\) no produce cambios en \(Y\), al estar multiplicada por \(0\))
- Función
summary(obj)
:
- Argumento:
obj
: el objeto devuelto por la función lm()
- Devuelve: por pantalla, entre otras informaciones, una tabla con una fila para cada parámetro (\(\beta_0 =\)
(Intercept)
, etc.), y una primera columna con la estimación, y la última columna con el \(p\)-valor de cada contraste.
5.5. Bondad de ajuste y adecuación del modelo
- El coeficiente \(R^2\) mide la bondad del ajuste (mejor cuanto más cercano a \(1.00\)), pero no justifica, por sí solo, el uso del modelo lineal
- También se deben comprobar las hipótesis el modelo:
- Normalidad: errores siguen modelo normal
- Homoscedasticidad: errores tienen misma varianza
- Independencia: errores independientes entre sí, y también de los valores de las \(X\)’s
- \(R^2\):
- Función
summary(obj)
:
- Argumento:
obj
: objeto devuelto por la función lm()
- Devuelve: por pantalla, entre otras informaciones, dos versiones del coeficiente R-cuadrado:
Multiple R-squared
: adecuado para la regresión simple
Adjusted R-squared
: adecuado para la regresión múltiple
- Adecuación del modelo: se inspecciona gráficamente
- Función
plot(x)
:
- Argumento:
x
: objeto devuelto por la función lm()
- Devuelve: 4 figuras, de las que interpretamos dos:
Residuals versus Fitted
: Residuos en función de valores predichos. Si el modelo lineal es adecuado, se espera una nube de residuos con forma de banda horizontal, sin grandes diferencias de izquierda a derecha
Normal Q-Q
: gráfica de cuantiles de los residuos respecto de los teóricos bajo normalidad. Si el modelo lineal es adecuado, se espera una nube de puntos ceñida a la diagonal
6. Ejercicios de evaluación
Problema 1: Usando los datos women
, que almacena promedios de pesos de mujeres americanas con alturas determinadas.
- Realiza el gráfico de peso vs altura (peso en función de la altura) e indica si la relación lineal parece razonable o sospechosamente descabellada.
- Escribe la ecuación de la recta de regresión que ajusta los datos.
- Suponiendo correcto el modelo lineal, ¿se puede rechazar, estadísticamente y usando una significación del 5%, que el peso depende de la altura?
- Escribe los intervalos de confianza al 99% para los verdaderos valores de la ordenada en el origen (intercept) y la pendiente.
- Suponiendo correcto el modelo lineal, ¿se puede rechazar, estadísticamente y usando una significación del 5%, que la verdadera ordenada en el origen (intercept) vale 0?
- Suponiendo correcto el modelo lineal, ¿se puede rechazar, estadísticamente y usando una significación del 5%, que la ordenada en el origen vale -100? (Ayuda: haz el IC.)
- Aporta un indicador de la bondad del ajuste de los datos a la recta e interprétalo.
- Pronostica el peso (en libras) de una mujer de 74 pulgadas, y acompáñalo con un intervalo de confianza al 80%.
- ¿Los datos son incompatibles con las hipótesis del modelo de regresión lineal? Usa los dos gráficos habituales, y realiza también el gráfico de los residuos vs la variable independiente. Interprétalos todos.
data(women) # esto carga los datos en variable 'women'
# aquí tu código
AQUÍ TUS COMENTARIOS
Problema 2: Usando los datos mtcars
:
- Escribe la ecuación de regresión de
mpg
sobre el resto de variables (todas) y anota el valor de los dos coefiicentes \(R^2\).
- Reduce el modelo, excluyendo del mismo a la variable que menos parece influir sobre
mpg
(es decir, la de mayor \(p\)-valor de su contraste), siempre que haya alguna con \(p\)-valor superior a \(0.05\). Escribe todas las ecuaciones que vayan saliendo en cada etapa, junto a sus coeficientes de determinación \(R^2\).
- Repite el proceso iterativamente hasta que no se pueda avanzar más, escribiendo la ecuación de cada regresión, y los dos coeficientes \(R^2\)
data(mtcars)
# aquí tu código
AQUÍ TUS COMENTARIOS
Problema 3: Usando los datos mtcars
:
- Haz el estudio de la regresión de
mpg
sobre la potencia (hp
) y el peso (wt
): escribe la ecuación de la regresión, los coeficientes \(R^2\), y las gráficas de diagnóstico de la adecuación del modelo.
- Ahora lo mismo con la regresión de
mpg
sobre la potencia (hp
), el peso (wt
) y el producto de ambos.
- ¿Cuál de los dos modelos parece ser más adecuado atendiendo a todo?
# aquí tu código
AQUÍ TUS COMENTARIOS
Problema 4: Supongamos que se pretende analizar el efecto de un medicamento sobre el nivel de colesterol en sangre. Se experimenta con pacientes de características muy similares, administrando distintas dosis del medicamento a cada uno. Usa el modelo de regresión lineal múltiple para ajustar los datos del fichero colesterol.txt
a un modelo polinómico de hasta grado 4.
- Representa la nube de puntos de los datos.
- Escribe la ecuación del polinomio de regresión de grado 4 por mínimos cuadrados.
- Según los datos y usando una significación del 5%, ¿se puede admitir que el polinomio de la regresión no alcanza el grado máximo, y que por tanto se puede buscar un grado menor? ¿Por qué?
- Repite el apartado 1, bajando el grado del polinomio, mientras el apartado 2 siga teniendo respuesta afirmativa.
- Una vez encontrado el grado para el que no hay argumentos estadísticos que permitan “bajar”, realiza la predicción del posible valor de Y para X = “últimas dos cifras de tu DNI”, y escribe el intervalo de confianza al 90% para dicha predicción.
- Copia las gráficas que permiten evaluar la adecuación del modelo de regresión lineal, e interprétalas.
# aquí tu código
AQUÍ TUS COMENTARIOS
Problema 5: Completa el bloque de código de más abajo (modificando el parámetro eval=TRUE
del bloque) para realizar lo siguiente:
- Define una hoja de datos con 500 datos del modelo de regresión lineal \(Y = 60.5 + 32.1X + N(\mu=0,\sigma^2=50)\), donde \(X\) son datos del modelo uniforme entre \(0.0\) y \(3.0\). Usa una semilla para poder repetir el proceso.
- Escribe la recta de regresión de \(Y\) sobre \(X\) estimada: \(\hat{Y} = \hat{\beta}_0 + \hat{\beta}_1 X\).
- Representa los datos \((X,Y)\), la recta de regresión, y la “verdadera recta” en el mismo plano.
- Calcula la \(R^2\) para estos datos.
- Representa las dos gráficas que sirven para justificar la adecuación del modelo, y comenta en función de lo observado en ellas.
- Escribe el intervalo de confianza al 90% para la predicción de \(Y\) cuando \(X=2\).
- Realiza 1000 predicciones de Y para \(X=2\) y calcula el porcentaje de dichas predicciones que entran dentro del intervalo de confianza calculado en el apartado anterior.
# CAMBIA EL PARÁMETRO eval DE ESTE BLOQUE A TRUE PARA COMPILAR !
# 1er apartado
set.seed(???) # poner semilla
xi = runif(500, 0, 3) # 500 muestreos de la X
ei = # 500 muestreos del error (normal)
yi = # valores de Y a partir de la fórmula del modelo
xx = data.frame(X=xi, Y=yi) # muestra conjunta (en hoja de datos)
# 2o apartado
recta = lm(formula=, data=) # pedir regresión
# 3er apartado
plot(???) # muestra en gráfica
abline(???) # recta de regresión
abline(a=???, b=???) # "verdadera" recta
# continuar con el resto de apartados
AQUÍ COMENTARIO SOBRE LA ADECUACIÓN DEL MODELO