1. Objetivo de los modelos de regresión

2. El modelo de regresión lineal simple

3. El modelo de regresión lineal múltiple

4. Modelos de regresión no lineal a partir del modelo lineal

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.
    • $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 intervalos de confianza

  • Función predict(obj, newdata, interval):
  • Argumentos:
    • obj: objeto devuelto por la función lm()
    • newdata: hoja de datos que contiene columnas etiquetadas como se usan 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\))
  • 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

  • Función confint(obj, level):
  • Argumentos:
    • obj: objeto devuelto por la función lm()
    • 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

  • Se proporcionan los \(p\)-valores de los contrastes \(\left\{ \begin{array}{rl} H_0: & \beta_i = 0 \\ H_1: & \beta_i \neq 0 \end{array} \right.\) para decidir si excluir variables del modelo por no intervenir en el valor de \(Y\)
  • 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 con el \(p\)-valor

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
  • Se debe 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 lineal
      • 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: Completa el código para realizar lo siguiente:

  1. Define una hoja de datos con 500 datos del modelo de regresión lineal \(Y = 60.5 + 32.1X + N(\mu=0,\sigma^2=2.5)\), donde \(X\) son datos del modelo uniforme entre \(0.0\) y \(3.0\). Usa una semilla para que salga simepre lo mismo
  2. Realiza la recta de regresión de \(Y\) sobre \(X\)
  3. Representa los datos, la recta de regresión, y la “verdadera recta” en el mismo plano
  4. Calcula la \(R^2\) para estos datos
  5. Representa las dos gráficas que sirven para justificar la adecuación del modelo, y comenta en función de lo observado en ellas
# 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

AQUÍ COMENTARIO SOBRE LA ADECUACIÓN DEL MODELO

Problema 2: Completa el código para realizar lo siguiente:

  1. Define una hoja de datos con 500 datos del modelo \(Y = 60.5 + 32.1X + U(-5,5)\), donde \(X\) son datos del modelo uniforme entre \(0.0\) y \(3.0\). Usa una semilla para que salga simepre lo mismo
  2. Realiza la recta de regresión de \(Y\) sobre \(X\)
  3. Representa los datos y la recta de regresión en el mismo plano
  4. Calcula la \(R^2\) para estos datos
  5. Representa las dos gráficas que sirven para justificar la adecuación del modelo, y comenta en función de lo observado en ellas
# 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 (uniforme)
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
# continuar con el resto

AQUÍ COMENTARIO SOBRE LA ADECUACIÓN DEL MODELO

Problema 3: Usando los datos mtcars, haz el estudio de la regresión de mpg sobre el resto de variables (todas). Suprime “secuencialmente” las variables que no parecen influir sobre mpg (por orden de mayor \(p\)-valor), hasta obtener un modelo final con menos variables y una bondad de ajuste suficiente.

data(mtcars)
# aquí tu código

AQUÍ TUS COMENTARIOS

Problema 4: Usando los datos mtcars, haz el estudio de la regresión de mpg sobre la potencia (hp) y el peso (wt), y compáralo 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?

# aquí tu código

AQUÍ TUS COMENTARIOS

Problema 5: Usando los datos women, que almacena promedios de pesos de mujeres americanas con alturas determinadas.

  1. Realiza el gráfico de peso vs altura e indica si la relación lineal parece razonable o sospechosamente descabellada.
  2. Escribe la ecuación de la recta de regresión que ajusta los datos.
  3. Suponiendo correcto el modelo lineal, ¿se puede rechazar, estadísticamente y usando una significación del 5%, que el peso depende de la altura?
  4. Escribe los intervalos de confianza al 99% para los verdaderos valores de la ordenada en el origen (intercept) y la pendiente.
  5. Suponiendo correcto el modelo lineal, ¿se puede rechazar, estadísticamente y usando una significación del 95%, que la verdadera ordenada en el origen (intercept) vale 0?
  6. Suponiendo correcto el modelo lineal, ¿se puede rechazar, estadísticamente y usando una significación del 95%, que la ordenada en el origen vale -100? (Ayuda: haz el IC.)
  7. Aporta un indicador de la bondad del ajuste de los datos a la recta e interprétalo.
  8. Pronostica el peso (en libras) de una mujer de 74 pulgadas, y acompáñalo con un intervalo de confianza al 80%.
  9. ¿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.
# aquí tu código

AQUÍ TUS COMENTARIOS

Problema 6: 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.

  1. Representa la nube de puntos de los datos.
  2. Escribe la ecuación del polinomio de regresión de grado 4 por mínimos cuadrados.
  3. 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é?
  4. Repite el apartado 1, bajando el grado del polinomio, mientras el apartado 2 siga teniendo respuesta afirmativa.
  5. 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.
  6. 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