##REGRECION LINEAL SIMPLE La regresión lineal es una técnica de modelado estadístico que se emplea para describir una variable de respuesta continua como una función de una o varias variables predictoras.
##IMPORTAR DATOS
library(readr)
Prodmiel2018muni <- read.csv("Prodmiel2018muni.csv", header = TRUE )
Prodmiel2018muni <- Prodmiel2018muni[,3:4]
View(Prodmiel2018muni)
names(Prodmiel2018muni)
## [1] "Volumen" "Valor"
pairs(Prodmiel2018muni)
podemos definir el coeficiente de correlación de Pearson como un índice que puede utilizarse para medir el grado de relación de dos variables siempre y cuando ambas sean cuantitativas y continuas.
cor(Prodmiel2018muni)
## 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 = Prodmiel2018muni )
summary(regresion)
##
## Call:
## lm(formula = Valor ~ Volumen, data = Prodmiel2018muni)
##
## 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
plot(Prodmiel2018muni$Valor, Prodmiel2018muni$Volumen, xlab="Valor", ylab = "Volumen")
abline(regresion)
## Estimaciones de prediccion
nuevas.valores <- data.frame(Volumen = seq(1, 300))
predict(regresion,nuevas.valores)
## 1 2 3 4 5 6 7
## 224.5003 262.8841 301.2678 339.6516 378.0353 416.4191 454.8028
## 8 9 10 11 12 13 14
## 493.1865 531.5703 569.9540 608.3378 646.7215 685.1053 723.4890
## 15 16 17 18 19 20 21
## 761.8727 800.2565 838.6402 877.0240 915.4077 953.7915 992.1752
## 22 23 24 25 26 27 28
## 1030.5589 1068.9427 1107.3264 1145.7102 1184.0939 1222.4777 1260.8614
## 29 30 31 32 33 34 35
## 1299.2451 1337.6289 1376.0126 1414.3964 1452.7801 1491.1639 1529.5476
## 36 37 38 39 40 41 42
## 1567.9313 1606.3151 1644.6988 1683.0826 1721.4663 1759.8501 1798.2338
## 43 44 45 46 47 48 49
## 1836.6175 1875.0013 1913.3850 1951.7688 1990.1525 2028.5362 2066.9200
## 50 51 52 53 54 55 56
## 2105.3037 2143.6875 2182.0712 2220.4550 2258.8387 2297.2224 2335.6062
## 57 58 59 60 61 62 63
## 2373.9899 2412.3737 2450.7574 2489.1412 2527.5249 2565.9086 2604.2924
## 64 65 66 67 68 69 70
## 2642.6761 2681.0599 2719.4436 2757.8274 2796.2111 2834.5948 2872.9786
## 71 72 73 74 75 76 77
## 2911.3623 2949.7461 2988.1298 3026.5136 3064.8973 3103.2810 3141.6648
## 78 79 80 81 82 83 84
## 3180.0485 3218.4323 3256.8160 3295.1998 3333.5835 3371.9672 3410.3510
## 85 86 87 88 89 90 91
## 3448.7347 3487.1185 3525.5022 3563.8859 3602.2697 3640.6534 3679.0372
## 92 93 94 95 96 97 98
## 3717.4209 3755.8047 3794.1884 3832.5721 3870.9559 3909.3396 3947.7234
## 99 100 101 102 103 104 105
## 3986.1071 4024.4909 4062.8746 4101.2583 4139.6421 4178.0258 4216.4096
## 106 107 108 109 110 111 112
## 4254.7933 4293.1771 4331.5608 4369.9445 4408.3283 4446.7120 4485.0958
## 113 114 115 116 117 118 119
## 4523.4795 4561.8633 4600.2470 4638.6307 4677.0145 4715.3982 4753.7820
## 120 121 122 123 124 125 126
## 4792.1657 4830.5495 4868.9332 4907.3169 4945.7007 4984.0844 5022.4682
## 127 128 129 130 131 132 133
## 5060.8519 5099.2357 5137.6194 5176.0031 5214.3869 5252.7706 5291.1544
## 134 135 136 137 138 139 140
## 5329.5381 5367.9218 5406.3056 5444.6893 5483.0731 5521.4568 5559.8406
## 141 142 143 144 145 146 147
## 5598.2243 5636.6080 5674.9918 5713.3755 5751.7593 5790.1430 5828.5268
## 148 149 150 151 152 153 154
## 5866.9105 5905.2942 5943.6780 5982.0617 6020.4455 6058.8292 6097.2130
## 155 156 157 158 159 160 161
## 6135.5967 6173.9804 6212.3642 6250.7479 6289.1317 6327.5154 6365.8992
## 162 163 164 165 166 167 168
## 6404.2829 6442.6666 6481.0504 6519.4341 6557.8179 6596.2016 6634.5854
## 169 170 171 172 173 174 175
## 6672.9691 6711.3528 6749.7366 6788.1203 6826.5041 6864.8878 6903.2715
## 176 177 178 179 180 181 182
## 6941.6553 6980.0390 7018.4228 7056.8065 7095.1903 7133.5740 7171.9577
## 183 184 185 186 187 188 189
## 7210.3415 7248.7252 7287.1090 7325.4927 7363.8765 7402.2602 7440.6439
## 190 191 192 193 194 195 196
## 7479.0277 7517.4114 7555.7952 7594.1789 7632.5627 7670.9464 7709.3301
## 197 198 199 200 201 202 203
## 7747.7139 7786.0976 7824.4814 7862.8651 7901.2489 7939.6326 7978.0163
## 204 205 206 207 208 209 210
## 8016.4001 8054.7838 8093.1676 8131.5513 8169.9351 8208.3188 8246.7025
## 211 212 213 214 215 216 217
## 8285.0863 8323.4700 8361.8538 8400.2375 8438.6213 8477.0050 8515.3887
## 218 219 220 221 222 223 224
## 8553.7725 8592.1562 8630.5400 8668.9237 8707.3074 8745.6912 8784.0749
## 225 226 227 228 229 230 231
## 8822.4587 8860.8424 8899.2262 8937.6099 8975.9936 9014.3774 9052.7611
## 232 233 234 235 236 237 238
## 9091.1449 9129.5286 9167.9124 9206.2961 9244.6798 9283.0636 9321.4473
## 239 240 241 242 243 244 245
## 9359.8311 9398.2148 9436.5986 9474.9823 9513.3660 9551.7498 9590.1335
## 246 247 248 249 250 251 252
## 9628.5173 9666.9010 9705.2848 9743.6685 9782.0522 9820.4360 9858.8197
## 253 254 255 256 257 258 259
## 9897.2035 9935.5872 9973.9710 10012.3547 10050.7384 10089.1222 10127.5059
## 260 261 262 263 264 265 266
## 10165.8897 10204.2734 10242.6571 10281.0409 10319.4246 10357.8084 10396.1921
## 267 268 269 270 271 272 273
## 10434.5759 10472.9596 10511.3433 10549.7271 10588.1108 10626.4946 10664.8783
## 274 275 276 277 278 279 280
## 10703.2621 10741.6458 10780.0295 10818.4133 10856.7970 10895.1808 10933.5645
## 281 282 283 284 285 286 287
## 10971.9483 11010.3320 11048.7157 11087.0995 11125.4832 11163.8670 11202.2507
## 288 289 290 291 292 293 294
## 11240.6345 11279.0182 11317.4019 11355.7857 11394.1694 11432.5532 11470.9369
## 295 296 297 298 299 300
## 11509.3207 11547.7044 11586.0881 11624.4719 11662.8556 11701.2394
##Inferencia en modelo de regresion lineal simple los datos estan dados por esat ecuacion
\(y = 186.117 + 38.384 x\)
##intervalos de confianza
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
· 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. En el ejemplo, sus valores son 29.638 y 0.724 respectivamente. · 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 · 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ç · El estimador de la desviación típica de los errores σ aparece como Residual standard error y su valor en el ejemplo es 43.5 ·Los intervalos de confianza para los parámetros se obtienen con el comando confint. El parámetro level permite elegir el nivel de confianza (por defecto es 0.95):ç
Los intervalos de confianza para la respuesta media y los intervalos de predicción para la respuesta se pueden obtener usando el comando predict. Por ejemplo, el siguiente código calcula y representa los dos tipos de intervalos para el rango de edades que va de 20 a 60 años (los de predicción en rojo):
nuevas.valores <- data.frame(Volumen = seq(20, 60))
#Grafico de dispersion y recta
plot(Prodmiel2018muni$Volumen, Prodmiel2018muni$Valor, xlab="Volumen", ylab = "Valor")
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.valores, interval = "confidence")
lines(nuevas.valores$Volumen, ic[, 2], lty = 2 ) #lwr
lines(nuevas.valores$Volumen, ic[, 3], lty = 3 ) #upr
# Intervalos de prediccion
ic <- predict(regresion, nuevas.valores, interval = "prediction")
lines(nuevas.valores$Volumen, ic[, 2], lty = 2, col="red" ) #lwr
lines(nuevas.valores$Volumen, ic[, 3], lty = 3, col="red" ) #upr
## tabla de analisis de varianza
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