1. Objetivo de los modelos de regresión

2. El modelo de regresión lineal simple \(Y = \beta_0 + \beta_1 X + \text{N}(0, \sigma^2)\)

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)\)

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. 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.

  1. 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.
  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 5%, 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 5%, 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.
data(women) # esto carga los datos en variable 'women'
# aquí tu código

AQUÍ TUS COMENTARIOS

Problema 2: Usando los datos mtcars:

  1. 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\).
  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\).
  3. 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:

  1. 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.
  2. Ahora lo mismo con la regresión de mpg sobre la potencia (hp), el peso (wt) y el producto de ambos.
  3. ¿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.

  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

Problema 5: Completa el bloque de código de más abajo (modificando el parámetro eval=TRUE del bloque) 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=50)\), donde \(X\) son datos del modelo uniforme entre \(0.0\) y \(3.0\). Usa una semilla para poder repetir el proceso.
  2. Escribe la recta de regresión de \(Y\) sobre \(X\) estimada: \(\hat{Y} = \hat{\beta}_0 + \hat{\beta}_1 X\).
  3. Representa los datos \((X,Y)\), 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.
  6. Escribe el intervalo de confianza al 90% para la predicción de \(Y\) cuando \(X=2\).
  7. 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