Objetivo

Determinar predicciones de datos bajo el modelo de regresión lineal simple

Descripción

De un conjunto de datos con dos variables (bivariable) en donde una de ellas es X variable independiente y otra de ellas Y variable dependiente, predecir el valor de Y conforme la historia de X.

Paso 1. Cargar librerias

library(dplyr)
library(mosaic)
library(readr)
library(ggplot2)  # Para gráficos
library(knitr)    # Para formateo de datos

Ejercicio 1

Mediciones del cuerpo humano en donde se buscar idntificar el coefieicnte de correlación r, el coeficiente de determinació r2 y el modelo de regresión lineal para predecir alturas en relación a el peso de una persona.

  1. Cargar los datos
  • La variable x independiente será la estatura
  • La variable y dependiente será la peso
datos <- read.table("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/datos/body.dat.txt", quote="\"", comment.char="")

datos <- as.data.frame(datos)

colnames(datos)[23:25] <- c("peso", "estatura", "genero")

# Solo nos interesan las tres últimas columnas
datos <- select(datos, estatura, peso, genero)

kable(head(datos, 10), caption = "Datos de pesos y etaturas de personas")
Datos de pesos y etaturas de personas
estatura peso genero
174.0 65.6 1
175.3 71.8 1
193.5 80.7 1
186.5 72.6 1
187.2 78.8 1
181.5 74.8 1
184.0 86.4 1
184.5 78.4 1
175.0 62.0 1
184.0 81.6 1
  1. Valor de correlación entre las variables
  • Se determina la correlación de Pearson con la función cor(x,y) que establece el grado de relación entre dos variables; ‘x’ son los vlores de sólido y ‘y’ el porcentaje de oxígeno.
r <- cor(datos$estatura, datos$peso)
r
## [1] 0.7173011
  • El coefiente de correlación con valor de 0.7173011 significa el grado de relación entre las variables y su valor se interpreta siendo $ r ≥ 0.75 = $ correlación positiva considerable (Hernández Sampieri et al., 2014).
  1. Gráfica de dispersión
ggplot(data = datos, aes(x = estatura, y = peso)) +
  geom_point(colour = 'blue')

  1. Generar el modelo regresión lineal Y=a+bx
  • Determinar los coeficientes a y b por medio de la función lineal lm()
  • El caracter ‘~’ en la fórmula de la función lm() de regresión se interpreta como que la variable ‘y’ está en función de la variable ‘x’.
modelo <- lm(data = datos, formula = peso~estatura)

modelo
## 
## Call:
## lm(formula = peso ~ estatura, data = datos)
## 
## Coefficients:
## (Intercept)     estatura  
##    -105.011        1.018

Encontrar el coeficiente de determinación r2

summary(modelo)
## 
## Call:
## lm(formula = peso ~ estatura, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -18.743  -6.402  -1.231   5.059  41.103 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -105.01125    7.53941  -13.93   <2e-16 ***
## estatura       1.01762    0.04399   23.14   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.308 on 505 degrees of freedom
## Multiple R-squared:  0.5145, Adjusted R-squared:  0.5136 
## F-statistic: 535.2 on 1 and 505 DF,  p-value: < 2.2e-16
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación :", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación : 0.514520837538849"
  • El coeficiente de determinación r2 con valor de 0.5145 significa que el valor de la estatura de una persona representa el 51.45 % del peso de la misma. Determinar los valores de a y b
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept) 
##   -105.0113
## estatura 
## 1.017617

Gráfica de tendencia

ggplot() + 
  geom_point(data = datos, aes(x = estatura, y = peso), colour='blue') +
  geom_line(aes( x = datos$estatura, y = predict(modelo, datos)), color = "red") +
  xlab("Estarura") + 
  ylab("Peso") + 
  ggtitle("Linea de tendencia sobre Conjunto de Datos")

  1. Predecir conforme al modelo
  • Para predecir se puede usar la ecuación y=a+bx o utilizar la función predict()
  • Predecir para valores 4,3.5,2.0,1
x <- c(150, 160, 170, 175, 185, 190)

prediccion <- predict(object = modelo, newdata = data.frame(estatura = x))
prediccion
##        1        2        3        4        5        6 
## 47.63126 57.80743 67.98360 73.07168 83.24785 88.33593

Ejercicio 2. Medidas de los sólidos y la demanda de oxígeno químico.

Uno de los problemas más desafiantes que se enfrentan en el área del control de la contaminación del agua lo representa la industria de la peletería (dedicada a la elaboración de indumentaria, cuero y piel animal).

Los desechos de ésta tienen una complejidad química. Se caracterizan por valores elevados de demanda de oxígeno bioquímico, sólidos volátiles y otras medidas de la contaminación. (Walpole et al., 2007)

  1. Cargar o generar los datos
seq <- c(1:33)
solido <- c(3,7,11,15,18,27,29,30,30,31,31,32,33,33,34,36,36,36,37,38,39,39,39,40,41,42,42,43,44,45,46,47,50)
oxigeno <- c(5,11,21,16,16,28,27,25,35,30,40,32,34,32,34,37,38,34,36,38,37,36,45,39,41,40,44,37,44,46,46,49,51 )

datos <- data.frame(seq,solido,oxigeno)
kable(datos, caption = "Contaminante oxígeno en función de reducción de sólidos")
Contaminante oxígeno en función de reducción de sólidos
seq solido oxigeno
1 3 5
2 7 11
3 11 21
4 15 16
5 18 16
6 27 28
7 29 27
8 30 25
9 30 35
10 31 30
11 31 40
12 32 32
13 33 34
14 33 32
15 34 34
16 36 37
17 36 38
18 36 34
19 37 36
20 38 38
21 39 37
22 39 36
23 39 45
24 40 39
25 41 41
26 42 40
27 42 44
28 43 37
29 44 44
30 45 46
31 46 46
32 47 49
33 50 51
  1. Valor de correlación entre las variables
  • Se determina la correlación de Pearson con la función cor(x,y) que establece el grado de relación entre dos variables; ‘x’ son los vlores de sólido y ‘y’ el porcentaje de oxígeno.
r <- cor(datos$solido, datos$oxigeno)
r
## [1] 0.9554794
  1. Gráfica de dispersión
ggplot(data = datos, aes(x = solido, y = oxigeno)) +
  geom_point(colour = 'blue')

  1. Generar el modelo regresión lineal Y=a+bx
  • Determinar los coeficientes a y b por medio de la función lineal lm()
  • El caracter ‘~’ en la fórmula de la función lm() de regresión se interpreta como que la variable ‘y’ está en función de la variable ‘x’.
modelo <- lm(data = datos, formula = oxigeno~solido)

modelo
## 
## Call:
## lm(formula = oxigeno ~ solido, data = datos)
## 
## Coefficients:
## (Intercept)       solido  
##      3.8296       0.9036

Encontrar el coeficiente de determinación r2

summary(modelo)
## 
## Call:
## lm(formula = oxigeno ~ solido, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.939 -1.783 -0.228  1.506  8.157 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.82963    1.76845   2.166   0.0382 *  
## solido       0.90364    0.05012  18.030   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.23 on 31 degrees of freedom
## Multiple R-squared:  0.9129, Adjusted R-squared:  0.9101 
## F-statistic: 325.1 on 1 and 31 DF,  p-value: < 2.2e-16
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación :", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación : 0.912940801014387"
  • El coeficiente de determinación r2 con valor de 0.9129 significa que el valor de solido representa el 91.29 % del oxígeno. Determinar los valores de a y b
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept) 
##    3.829633
##    solido 
## 0.9036432

Gráfica de tendencia

ggplot() + 
  geom_point(data = datos, aes(x = solido, y = oxigeno), colour='blue') +
  geom_line(aes( x = datos$solido, y = predict(modelo, datos)), color = "red") +
  xlab("Reducción de sólido") + 
  ylab("% Oxígeno") + 
  ggtitle("Linea de tendencia sobre Conjunto de Datos")

  1. Predecir conforme al modelo
  • Para predecir se puede usar la ecuación y=a+bx o utilizar la función predict()
  • Predecir para valores 4,3.5,2.0,1
x <- c(15,20,35,40,50)

prediccion <- predict(object = modelo, newdata = data.frame(solido = x))
prediccion
##        1        2        3        4        5 
## 17.38428 21.90250 35.45715 39.97536 49.01179

Interpretacion

El caso 21 trata sobre la correlacion y regresion lineal los cuales son métodos estadísticos que estudian la relación lineal existente entre dos variables. En el ejercicio 1 nos piden lo que es el valor de correlacion entre las variables, la cual nos dio un resultado del 0.7173011 y este como podemos ver es el grado de relacion entre las varibales y su valor se interpreta siento $ r ≥ 0.75 = $ En el sigueinte podemos observar lo que es la grafica de dispersion. En el siguiente generamos lo que es el modelo de regresion lineal Y=a+bx, la cual nos piden tambien que determinemos los coeficientes a y b por la funcion lineal, al igual que tambien nos piden lo que es el caracter ‘~’ en la fórmula de la función lm() de regresión se interpreta como que la variable ‘y’ está en función de la variable ‘x’. En lo siguiente nos piden El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación el cual dio 0.514520837538849. Finalmente podemos observar que tenemos que predecir conforme al modelo para lo siguiente: Predecir se puede usar la ecuación y=a+bx o utilizar la función predict() Predecir para valores 4,3.5,2.0,1 y esto nos dan los resultados de 1 2 3 4 5 6 47.63126 57.80743 67.98360 73.07168 83.24785 88.33593

En el ejercicio 2 como podemos ver trata sobre las medidas de los solidos y la demanda de oxígeno químico. El valor de correlación entre el solido y el oxigeno es del 0.95, y sobre el modelo de regresión lineal, sobre el coeficiente de correlación que es del 3.8296 y del solido es del 0.9036, para encontrar el coeficiente de determinación se eleva al cuadrado el de correlación y el resultado es del 0.9129, el coeficiente de determinación, tomando en cuenta que el resultado del de determinación que fue de 0.9129, esto quiere decir que el valor del solido representa el 91.29% de oxígeno. Por último predecimos los valores de 15,20,35,40,50 para comprobar y esto nos dio como resultados: 1 2 3 4 5 17.38428 21.90250 35.45715 39.97536 49.01179