En el modelo de regresión lineal hay:
Ejercicio evaluable 1: Muestrear 20 datos del modelo lineal representado por la formula \(Y = 2.5 - 0.6 X + E\) con \(E \sim \text{N}(0, 0.5)\). Para ello elige \(X\) que tome 2 veces cada valor entero desde 1 hasta 10.
# CAMBIA EL PARÁMETRO eval DE ARRIBA A TRUE PARA COMPILAR !
xi = rep(x=1:10, each=2) # 20 muestreos de la X
ei = # 20 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)
xx # visualizamos datos
plot(xx, ylim=c(-6,3)) # muestra en gráfica
abline(a=2.5, b=-0.6) # recta "real" del modelo lineal
Observa la muestra en el gráfico, junto a la verdadera recta que relaciona \(Y\) con \(X\) (sin el error aleatorio).
Vuelve a pegar indefinidamente, sin perder de vista la ventana gráfica, para ver el efecto del muestreo. Observa cómo los datos fluctúan de manera aleatoria en torno a la recta \(Y = 2.5 - 0.6X\).
El modelo de regresión lineal se puede adaptar para ajustar datos a muchas familias de funciones. Por ejemplo:
Se procede a estimar los parámetros del modelo, es decir, calcular \(\widehat{\beta}_0^{LS}\), \(\widehat{\beta}_1^{LS}\), …, \(\widehat{\beta}_p^{LS}\) y \(\widehat{\sigma}^2_{ML}\) (por mínimos cuadrados y máxima verosimilitud).
lm( formula, data, subset,... )
data
: hoja de datos con columnas,formula
: expresión de la dependencia usando las etiquetas de las variables: y~x1+x2+...
(los puntos suspensivos indican posibles variables independientes si hay más),subset
: expresión logica para seleccionar la parte de los datos que entran en juego$coefficients
: vector de coeficientes (\(\widehat{\beta}_0^{\text{LS}}\), \(\widehat{\beta}_1^{\text{LS}}\), etc. ).$residuals
: los residuos \(y_i - \widehat{y}_i\) (valor real de \(Y\) menos valor que predice la recta o hiperplano de regresión para las variables independientes).$fitted.values
: \(\widehat{y}_i\) (la predicción de Y para cada dato de variable independiente de la muestra).No devuelve la estimación de \(\sigma^2\), pero recuerda que es la varianza, con denominador \(n\), de los residuos. Así que se puede calcular a partir del objeto que devuelve la función lm()
.
Ejemplo 1: Carga el conjunto de datos con data(iris)
. En ellos hay datos de 150 flores sobre la longitud y anchura de pétalo y sépalo, y la especie a la que pertenece. Supongamos que la “longitud de pétalo” puede depender del resto de variables numéricas según el modelo lineal. Estima todos los parámetros del modelo lineal (recuerda que la estimación de \(\sigma^2\) es la varianza, no la cuasivarianza, de los residuos) en dos casos:
regflores
)versicolor
(guarda el objeto de la función con nombre regversi
)Ejercicio evaluable 2: Usando como datos la última de las simulaciones del ejercicio anterior (variable xx
), supondremos que siguen el modelo lineal (lo cual es cierto porque así se han generado los datos). Escribe las estimaciones de los parámetros del modelo y comenta lo mucho o poco que se parecen a los valores verdaderos de los parametros (ya que en este ejemplo simulado los conocemos realmente).
summary(object)
object
: objeto resultado de aplicar la función lm()
.Ejemplo 2: Calcula el coeficiente de bondad de ajuste R-cuadrado para los dos modelos lineales del Ejemplo 1, y contrasta si es posible, en ambos casos, que la “longitud de pétalo” NO dependa en absoluto de las variables que entraban en el modelo, usando un nivel de significación del 5%.
Ejercicio evaluable 3: Calcula el coeficiente R-cuadrado para el modelo ajustado en el Ejercicio evaluable 2, y contrasta si es posible que \(Y\) NO dependa de \(X\) (a pesar de que sabemos seguro que sí), usando un nivel de significación del 10%.
El p-valor de cada uno de esos contrastes se halla en la fila correspondiente al parámetro, que aparece en la tabla de coeficientes de la salida de la función summary()
. Con dicho p-valor se debe decidir el contraste según el nivel de significación \(\alpha\) utilizado (rechazar \(H_0\) si \(\text{p-valor} < \alpha\)).
Ejemplo 3: Comenta para los modelos del Ejemplo 1, si es posible que alguno de los coeficientes sea nulo, y que la variable a la que multiplica desaparezca del modelo. Usa una significación del 10%.
Ejercicio evaluable 4: ¿Es creible que el término independiente, del modelo lineal que ajusta los datos del Ejercicio evaluable 1, sea \(0\)? Usa una significación del 5% para contestar.
confint(object,param,level)
object
: objeto resultado de aplicar la función lm()
.param
: vector con el nombre de las variables independientes (o etiquetas de columnas) para cuyos coeficientes se desea ver el intervalo de confianza. Si se omite se toman todas las variables independientes.level
: nivel de confianza para el intervalo.Ejercicio evaluable 5: Para el modelo lineal que ajusta los datos del Ejercicio evaluable 1, escribe un intervalo de confianza para el verdadero valor de cada parámetro, con un nivel de confianza del 80%.
predict(object, newdata, interval, level)
object
: objeto resultado de aplicar la función lm()
newdata
: hoja de datos con los nuevos datos de la(s) variable(s) independiente(s) para los que se desea hacer predicciones.interval
: si se quiere obtener el IC para la media (poner confidence
) o para la predicción (poner prediction
level
: nivel de confianza para el intervalo.$coefficients
: vector de coeficientes (\(\widehat{\beta}_0^{\text{LS}}\), \(\widehat{\beta}_1^{\text{LS}}\), etc.)$residuals
: los residuos \(y_i - \widehat{y}_i\).Ejemplo 4: ¿Qué predicción de “longitud de pétalo” corresponde a una flor de especie desconocida, cuya anchura de pétalo es 1.55, longitud de sépalo 5.3 y anchura de sépalo 3.1? ¿Y si se sabe que la flor es de la especie virginica? Haz además un intervalo de confianza para cada predicción usando un nivel de confianza del 95%.
Ejercicio evaluable 6: Para el modelo lineal que ajusta los datos del Ejercicio evaluable 1, realiza una predicción y su intervalo de confianza al 80%, para un dato cuya X sea 5.5.
plot( object )
object
: objeto resultado de aplicar la función lm()
.Ejemplo 7: Muestra los gráficos diagnósticos con comentarios para decidir si los datos parecen cumplir las condiciones del modelo lineal ajustado para cada uno de los casos del Ejemplo 1.
Ejercicio evaluable 7: Muestra los gráficos junto a los comentarios para decidir si los datos parecen cumplir con las hipótesis del modelo lineal (y por tanto nos podemos fiar de los cálculos de los ejercicios anteriores)
Hay un clásico conjunto de datos en R, que se puede cargar con:
data(anscombe)
Es una hoja de datos con columnas para reflexionar sobre el peligro de uso del modelo lineal “a ciegas”. Las gráficas de las cuatro parejas de variables son:
Se observa que se trata de:
Moralejas de este ejemplo:
Por ejemplo, la falta de “patron” en los errores (independencia y varianza común):
descartaría por evidencias de patrón no aleatorio el uso del modelo lineal en los ejemplos 2 y 3, mientras que el 4 quedaría bajo sospecha porque no hay datos suficientes para apreciar patrones. Respecto a la normalidad de los residuos:
## Warning: not plotting observations with leverage one:
## 8
ningún gráfico levanta sospechas, porque la muestra es tan pequeña que lo normal puede oscilar mucho. Únicamente el ejemplo 3 un residuo se aleja mucho de lo normal, pero es sólo uno (puede ser error de medida al tomar el dato o no).
Ejercicio evaluable 8: Abre una sesión de R e introduce la línea
data(women)
women
, que almacena alturas y pesos de mujeres americanas. En realidad no son datos de mujeres, sino promedios de pesos de mujeres con alturas determinadas, pero no se indica de cuántas mujeres por cada altura.Ejercicio evaluable 9: 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.
Ejercicio evaluable 10: Define una función en lenguaje R, con las siguientes características:
modeloLineal
.x
: una matriz u hoja de datos cuyas columnas se puede interpretar como muestras de variables independientes.beta
: un vector de dimensión “número de columnas de x
más 1”, que será el vector de parámetros del modelo lineal.sigma2
: un valor no negativo, que será el parámetro \(\sigma^2\) del modelo.seed
: un valor entero que sirva de semilla para poder replicar las simulaciones que calcule.x
a la que se añade una columna nueva, la de los valores simulados de la \(Y\) (calculados a partir de las x
y los parámetros del modelo).En definitiva, un ejemplo de invocación de esa función puede ser
modeloLineal(x=1:10, beta=c(2,0.5), sigma2=1.5, seed=1000)
# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R