Aplicar e interpretar algoritmo de regresión lineal simple para resolver tareas de predicción.
Interpretar el coeficiente de correlación para utilizarse en regresión lineal simple.
Los datos que se analizan pertenecen Women con variables de Pesos y Estaturas.
Desarrollar el modelo de regresión lineal paso a paso identificar los coeficientes de ecuación por el método de mínimos cuadrados.
Con los coeficientes encontrados se van a realizar predicciones con nuevos valores de la variable dependiente \(x\)
Se recomienda ver el caso https://rpubs.com/rpizarro/834458
Se cargan algunas librerías en caso de no tenerlas, deben instalarse con anticipación con install.packages().
library(ggplot2) # Operaciones con datos
library(dplyr) # Gráficos
library(knitr) # Tablas amigables
library (corrplot) # Para gráficos de correlaciones
library(PerformanceAnalytics) # Para gráficos de correlaciones
library(mosaic) # Para distribución normal
Caso de Women pesos y estaturas de mujeres
Hay que aplicar un modelo de regresión lineal para predecir peso en relación a la estatura de mujeres americanas.
Es un conjunto de datos provistos por los paquetes base de R, se encuentra varios de ellos con la función *data()* y se utilizará el de nombre *women*.
Los datos son promedios pesos y estaturas de mujeres de Estados Unidos.
El ejemplo identifica a
\(x\) como la estatura de las mujeres y
\(y\) el valor del peso.
# Desarrollo
La variable estatura ‘x’ está dada en pulgadas. La variable peso ‘y’ es en libras.
datos <- women
colnames(datos) <- c("estatura", "peso")
datos
## estatura peso
## 1 58 115
## 2 59 117
## 3 60 120
## 4 61 123
## 5 62 126
## 6 63 129
## 7 64 132
## 8 65 135
## 9 66 139
## 10 67 142
## 11 68 146
## 12 69 150
## 13 70 154
## 14 71 159
## 15 72 164
summary(datos)
## estatura peso
## Min. :58.0 Min. :115.0
## 1st Qu.:61.5 1st Qu.:124.5
## Median :65.0 Median :135.0
## Mean :65.0 Mean :136.7
## 3rd Qu.:68.5 3rd Qu.:148.0
## Max. :72.0 Max. :164.0
# graficar con ggplot() la dispersón puntos en color café
ggplot(data = datos, aes(x = estatura, y = peso)) +
geom_point(col="brown")
Cual es la correlación y su interpretación
# Estimar la correlación
correla <- cor(datos$peso, datos$estatura)
correla
## [1] 0.9954948
El valor de la correlación es 0.99 significa que existe una relación muy muy fuerte entre la estatura de las mujeres con respecto al peso de las mismas, en este conjunto de datos.
modelo <- lm(data = datos, formula = peso ~ estatura) # peso depende de estatura
# Asignar a una variable el summary del modelo
sm <- summary(modelo)
sm
##
## Call:
## lm(formula = peso ~ estatura, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.7333 -1.1333 -0.3833 0.7417 3.1167
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
## estatura 3.45000 0.09114 37.85 1.09e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.525 on 13 degrees of freedom
## Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
## F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
Construir el modelo con todos los datos
El valor de R Square es de 0.991 y su significado es que la variable estatura un impacto del 99% sobre la variable dependiente peso.
Si se hubiera establecido que se acepta el modelo con un valor por encima del 98% en R Squared el modelo se acepta para realizar predicciones.
Evaluar las significaciones de las variables ***, so son estadísticamente significativas por debajo de 0.001
Construir la dispersión con la recta de regresión
# graficar con ggplot() la dispersón puntos en color café y recta en color verde
ggplot(data = datos, aes(x = estatura, y = peso)) +
geom_point(col="brown") +
geom_line(aes(x = estatura, y = modelo$fitted.values), color = "green") +
xlab("Estatura") +
ylab("Peso") +
ggtitle("Linea de tendencia sobre datos")
Usar la función predict() para predecir persona con estaturas de 50, 60, 65
est <- c(50, 60, 65)
predicciones <- predict(object = modelo, newdata = data.frame(estatura = est))
predicciones
## 1 2 3
## 84.98333 119.48333 136.73333
Ver las intersecciones de los valores de peso y estaruta visualmente.
# graficar con ggplot() la dispersón puntos en color café y recta en color verde
datos <- cbind(datos, est, predicciones)
## Warning in data.frame(..., check.names = FALSE): row names were found from a
## short variable and have been discarded
ggplot(data = datos, aes(x = estatura, y = peso)) +
geom_point(col="brown") +
geom_line(aes(x = estatura, y = modelo$fitted.values), color = "green") +
# geom_vline(xintercept = ) generar las lineas de intersección pendiente
xlab("Estatura") +
ylab("Peso") +
ggtitle("Linea de tendencia sobre datos")
Se utiliza la función ml() para aplicar un modelo de regresión lineal simple.
Se hicieron predicciones