El análisis de la regresión lineal se utiliza para predecir el valor de una variable según el valor de otra.
setwd("~/Aplicada")
library(readr)
miel <- read_csv("miel.csv")
## Rows: 1549 Columns: 2
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (2): Volumen, Valor
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(miel)
names(miel)
## [1] "Volumen" "Valor"
pairs(miel)
Es una medida de la relación (covariación) lineal entre dos variables cuantitativas contínuas (x, y). La manera más sencilla de saber si dos variables están correlacionadas es determinar si co-varían (varían conjuntamente).
cor(miel
)
## Volumen Valor
## Volumen 1.0000000 0.9920269
## Valor 0.9920269 1.0000000
El comando básico es lm (linear models). El primer argumento de este comando es una fórmula y ~ x en la que se especifica cuál es la variable respuesta o dependiente (y ) y cuál es la variable regresora o independiente (x). El segundo argumento, llamado data especifica cuál es el fichero en el que se encuentran las variables. El resultado lo guardamos en un objeto llamado regresion. Este objeto es una lista que contiene toda la información relevante sobre el análisis. Mediante el comando summary obtenemos un resumen de los principales resultados:
regresion <- lm(Valor ~ Volumen, data = miel )
summary(regresion)
##
## Call:
## lm(formula = Valor ~ Volumen, data = miel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6163.6 -168.9 -121.8 20.0 7667.8
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 186.117 15.677 11.87 <2e-16 ***
## Volumen 38.384 0.124 309.60 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 582.9 on 1547 degrees of freedom
## Multiple R-squared: 0.9841, Adjusted R-squared: 0.9841
## F-statistic: 9.585e+04 on 1 and 1547 DF, p-value: < 2.2e-16
Los parámetros de la ecuación de la recta de mínimos cuadrados que relaciona la cantidad de grasas en la sangre en función del peso vienen dados por la columna ´Estimate´ de la tabla ´Coefficients´ de la salida anterior. Por lo tanto, en este ejemplo la ecuación de la recta de mínimos cuadrados es:
\[ y = 186.117 + 38.384 x \]
plot(miel$Valor, miel$miel, xlab="Volumen", ylab = "Valor")
## Warning: Unknown or uninitialised column: `miel`.
abline(regresion)
El coeficiente de determinación (es decir, el coeficiente de correlación al cuadrado) mide la bondad del ajuste de la recta a los datos.
nuevas.Volumen <- data.frame(Volumen = seq(20, 220))
predict(regresion, nuevas.Volumen)
## 1 2 3 4 5 6 7 8
## 953.7915 992.1752 1030.5589 1068.9427 1107.3264 1145.7102 1184.0939 1222.4777
## 9 10 11 12 13 14 15 16
## 1260.8614 1299.2451 1337.6289 1376.0126 1414.3964 1452.7801 1491.1639 1529.5476
## 17 18 19 20 21 22 23 24
## 1567.9313 1606.3151 1644.6988 1683.0826 1721.4663 1759.8501 1798.2338 1836.6175
## 25 26 27 28 29 30 31 32
## 1875.0013 1913.3850 1951.7688 1990.1525 2028.5362 2066.9200 2105.3037 2143.6875
## 33 34 35 36 37 38 39 40
## 2182.0712 2220.4550 2258.8387 2297.2224 2335.6062 2373.9899 2412.3737 2450.7574
## 41 42 43 44 45 46 47 48
## 2489.1412 2527.5249 2565.9086 2604.2924 2642.6761 2681.0599 2719.4436 2757.8274
## 49 50 51 52 53 54 55 56
## 2796.2111 2834.5948 2872.9786 2911.3623 2949.7461 2988.1298 3026.5136 3064.8973
## 57 58 59 60 61 62 63 64
## 3103.2810 3141.6648 3180.0485 3218.4323 3256.8160 3295.1998 3333.5835 3371.9672
## 65 66 67 68 69 70 71 72
## 3410.3510 3448.7347 3487.1185 3525.5022 3563.8859 3602.2697 3640.6534 3679.0372
## 73 74 75 76 77 78 79 80
## 3717.4209 3755.8047 3794.1884 3832.5721 3870.9559 3909.3396 3947.7234 3986.1071
## 81 82 83 84 85 86 87 88
## 4024.4909 4062.8746 4101.2583 4139.6421 4178.0258 4216.4096 4254.7933 4293.1771
## 89 90 91 92 93 94 95 96
## 4331.5608 4369.9445 4408.3283 4446.7120 4485.0958 4523.4795 4561.8633 4600.2470
## 97 98 99 100 101 102 103 104
## 4638.6307 4677.0145 4715.3982 4753.7820 4792.1657 4830.5495 4868.9332 4907.3169
## 105 106 107 108 109 110 111 112
## 4945.7007 4984.0844 5022.4682 5060.8519 5099.2357 5137.6194 5176.0031 5214.3869
## 113 114 115 116 117 118 119 120
## 5252.7706 5291.1544 5329.5381 5367.9218 5406.3056 5444.6893 5483.0731 5521.4568
## 121 122 123 124 125 126 127 128
## 5559.8406 5598.2243 5636.6080 5674.9918 5713.3755 5751.7593 5790.1430 5828.5268
## 129 130 131 132 133 134 135 136
## 5866.9105 5905.2942 5943.6780 5982.0617 6020.4455 6058.8292 6097.2130 6135.5967
## 137 138 139 140 141 142 143 144
## 6173.9804 6212.3642 6250.7479 6289.1317 6327.5154 6365.8992 6404.2829 6442.6666
## 145 146 147 148 149 150 151 152
## 6481.0504 6519.4341 6557.8179 6596.2016 6634.5854 6672.9691 6711.3528 6749.7366
## 153 154 155 156 157 158 159 160
## 6788.1203 6826.5041 6864.8878 6903.2715 6941.6553 6980.0390 7018.4228 7056.8065
## 161 162 163 164 165 166 167 168
## 7095.1903 7133.5740 7171.9577 7210.3415 7248.7252 7287.1090 7325.4927 7363.8765
## 169 170 171 172 173 174 175 176
## 7402.2602 7440.6439 7479.0277 7517.4114 7555.7952 7594.1789 7632.5627 7670.9464
## 177 178 179 180 181 182 183 184
## 7709.3301 7747.7139 7786.0976 7824.4814 7862.8651 7901.2489 7939.6326 7978.0163
## 185 186 187 188 189 190 191 192
## 8016.4001 8054.7838 8093.1676 8131.5513 8169.9351 8208.3188 8246.7025 8285.0863
## 193 194 195 196 197 198 199 200
## 8323.4700 8361.8538 8400.2375 8438.6213 8477.0050 8515.3887 8553.7725 8592.1562
## 201
## 8630.5400
Los datos vienen de esta ecuacion:
\[ y_i = \beta_0 + \beta_1 x_i + \epsilon_i, \ \ \ \ i=1,\ldots,n, \] donde los errores aleatorios ϵi son independientes con distribución normal de media 0 y varianza σ2
confint(regresion)
## 2.5 % 97.5 %
## (Intercept) 155.36564 216.86758
## Volumen 38.14056 38.62692
confint(regresion, level=0.90)
## 5 % 95 %
## (Intercept) 160.3143 211.91889
## Volumen 38.1797 38.58779
Bajo este modelo
Los errores típicos de los estimadores de los parámetros β0 y β1 se encuentran en la columna Std Error de la salida anterior.
La columna t value contiene el estadístico t, es decir, cociente entre cada estimador y su error típico. Estos cocientes son la base para llevar a cabo los contrastes H0:β0=0 y H0:β1=0
Los intervalos de confianza para los parámetros se obtienen con el comando confint. El parámetro level permite elegir el nivel de confianza:
nuevas.Volumen <- data.frame(Volumen = seq(20, 220))
# Grafico de dispersion y recta
plot(miel$Valor, miel$miel, xlab="Volumen", ylab = "Valor")
## Warning: Unknown or uninitialised column: `miel`.
abline(regresion)
# Intervalos de confianza de la respuesta media
# ic es una matriz con tres columnas: prediccion, las otras 2 son los extremos del intervalo
ic <- predict(regresion, nuevas.Volumen, interval = "confidence")
lines(nuevas.Volumen$Volumen, ic[, 2], lty = 2 ) #lwr
lines(nuevas.Volumen$Volumen, ic[, 3], lty = 3 ) #upr
# Intervalos de prediccion
ic <- predict(regresion, nuevas.Volumen, interval = "prediction")
lines(nuevas.Volumen$Volumen, ic[, 2], lty = 2, col="red" ) #lwr
lines(nuevas.Volumen$Volumen, ic[, 3], lty = 3, col="red" ) #upr
anova(regresion)
## Analysis of Variance Table
##
## Response: Valor
## Df Sum Sq Mean Sq F value Pr(>F)
## Volumen 1 3.2566e+10 3.2566e+10 95855 < 2.2e-16 ***
## Residuals 1547 5.2558e+08 3.3974e+05
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
residuos <- rstandard(regresion)
valores.ajustados <- fitted(regresion)
plot(valores.ajustados, residuos)