# Estadisticas de relación de niños, segun la edad en meses, el peso en kilos y la talla en centimetros
Edad=c(1,3,6,9,12,15,18,24,36,48,60,72,84,96)
Peso= c(3.4,6.2,8,9.2,10.2,11.1,11.8,12.9,15.1,16.07,18.03,19.91,22,23.56)
Talla= c(50.3,60,67,72,76,79,82.5,88,96.5,100.13,106.4,112.77,118.5,122.86)
Tabla=data.frame(cbind(Edad,Peso,Talla))
names(Tabla)
## [1] "Edad" "Peso" "Talla"
#Se busca demostrar que conforme aumenta la edad aumenta la talla
#regresion lineal simple para h0
pairs(Tabla)

#tabla de correlacion
cor(Tabla)
## Edad Peso Talla
## Edad 1.0000000 0.9703357 0.9601080
## Peso 0.9703357 1.0000000 0.9977875
## Talla 0.9601080 0.9977875 1.0000000
#recta de minimos
#cuadrados
regresion = lm(Talla ~ Edad, data=Tabla)
summary(regresion)
##
## Call:
## lm(formula = Talla ~ Edad, data = Tabla)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.225 -2.406 1.251 3.864 7.547
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 64.85529 2.60751 24.87 1.08e-11 ***
## Edad 0.66939 0.05628 11.89 5.34e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.495 on 12 degrees of freedom
## Multiple R-squared: 0.9218, Adjusted R-squared: 0.9153
## F-statistic: 141.5 on 1 and 12 DF, p-value: 5.338e-08
#Grafico del ajuste lineal
plot (Tabla$Edad, Tabla$Talla, xlab="Edad", ylab = "Talla")
abline(regresion)

#calculo de predicciones
nuevas.edades = data.frame(Edad=seq(6,42))
predict(regresion, nuevas.edades)
## 1 2 3 4 5 6 7 8
## 68.87165 69.54104 70.21043 70.87983 71.54922 72.21861 72.88800 73.55739
## 9 10 11 12 13 14 15 16
## 74.22679 74.89618 75.56557 76.23496 76.90436 77.57375 78.24314 78.91253
## 17 18 19 20 21 22 23 24
## 79.58193 80.25132 80.92071 81.59010 82.25949 82.92889 83.59828 84.26767
## 25 26 27 28 29 30 31 32
## 84.93706 85.60646 86.27585 86.94524 87.61463 88.28403 88.95342 89.62281
## 33 34 35 36 37
## 90.29220 90.96159 91.63099 92.30038 92.96977
#intervalo de confianza
confint(regresion)
## 2.5 % 97.5 %
## (Intercept) 59.174022 70.5365678
## Edad 0.546769 0.7920156
# Intervalo de confianza: Devuelve un intervalo para el valor promedio de que todos los niños tengan una talla especifico, supóngase lstat=10.
predict(object = regresion, newdata = data.frame(lstat = c(10)),
interval = "confidence", level = 0.95)
## Warning: 'newdata' had 1 row but variables found have 14 rows
## fit lwr upr
## 1 65.52469 59.93432 71.11506
## 2 66.86347 61.45115 72.27579
## 3 68.87165 63.71605 74.02725
## 4 70.87983 65.96680 75.79285
## 5 72.88800 68.20120 77.57481
## 6 74.89618 70.41677 79.37559
## 7 76.90436 72.61079 81.19792
## 8 80.92071 76.92247 84.91895
## 9 88.95342 85.16710 92.73974
## 10 96.98613 92.86096 101.11129
## 11 105.01883 100.11697 109.92070
## 12 113.05154 107.10427 118.99882
## 13 121.08425 113.93985 128.22864
## 14 129.11696 120.68812 137.54579
attach(regresion)
plot(x = Edad, y = Talla, main = "Edad vs Talla", pch = 20, col = "grey30")
abline(regresion, lwd = 3, col = "red")

# Una de las mejores formas de confirmar que las condiciones necesarias para un modelo de regresión lineal simple por mínimos cuadrados se cumplen es mediante el estudio de los residuos del modelo.
par(mfrow = c(1,2))
plot(regresion)


plot(hatvalues(regresion), main = "Medición de leverage", pch = 20)
# Se añade una línea en el threshold de influencia acorde a la regla
# 2.5x((p+1)/n)
abline(h = 2.5*((dim(regresion$talla)[2]-1 + 1)/dim(regresion$talla)[1]),
col = "red")
#Tal como era de suponerse, conforme aumenta la edad, msin importar cuantos meses sean, la talla aumenta proporcionalmente.
