Determinar predicciones de datos bajo el modelo de regresión lineal simple
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.
\[Y= a+bx\]
Donde: * \(Y\) es el valor a predecir * \(a\) Es el valor del creuce del eje y * \(b\) es el valor de la pendiente o inclinacion * \(x\) el valor de la variable independiete
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(mosaic)
## Warning: package 'mosaic' was built under R version 4.0.3
## Registered S3 method overwritten by 'mosaic':
## method from
## fortify.SpatialPolygonsDataFrame ggplot2
##
## The 'mosaic' package masks several functions from core packages in order to add
## additional features. The original behavior of these functions should not be affected by this.
##
## Attaching package: 'mosaic'
## The following object is masked from 'package:Matrix':
##
## mean
## The following object is masked from 'package:ggplot2':
##
## stat
## The following objects are masked from 'package:dplyr':
##
## count, do, tally
## The following objects are masked from 'package:stats':
##
## binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
## quantile, sd, t.test, var
## The following objects are masked from 'package:base':
##
## max, mean, min, prod, range, sample, sum
library(readr)
library(ggplot2)
library(knitr)
2.1. Cargar o generar los datos
semanas <- c(1:12)
comerciales <- c(2,5,1,3,4,1,5,3,4,2,3,2)
ventas <- c(50,57,41,54,54,38,63,48,59,46, 45, 48 )
datos <- data.frame(semanas,comerciales,ventas)
kable(datos, caption = "Ventas en función de inversión en comerciales")
semanas | comerciales | ventas |
---|---|---|
1 | 2 | 50 |
2 | 5 | 57 |
3 | 1 | 41 |
4 | 3 | 54 |
5 | 4 | 54 |
6 | 1 | 38 |
7 | 5 | 63 |
8 | 3 | 48 |
9 | 4 | 59 |
10 | 2 | 46 |
11 | 3 | 45 |
12 | 2 | 48 |
2.2. Valor de correlación entre las varibles
r <- cor(datos$comerciales, datos$ventas)
r
## [1] 0.9006177
2.3. Gráfica de dispersión
ggplot(data = datos, aes(x = comerciales, y = ventas)) +
geom_point(colour = 'blue')
2.4. Generar el modelo regresión lineal Y=a+bx
Determinar los coeficintes 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 = ventas~comerciales)
modelo
##
## Call:
## lm(formula = ventas ~ comerciales, data = datos)
##
## Coefficients:
## (Intercept) comerciales
## 36.131 4.841
\[r^2\]
summary(modelo)
##
## Call:
## lm(formula = ventas ~ comerciales, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.6534 -2.7331 0.1076 2.8357 4.1873
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 36.1315 2.3650 15.278 2.93e-08 ***
## comerciales 4.8406 0.7387 6.553 6.45e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.378 on 10 degrees of freedom
## Multiple R-squared: 0.8111, Adjusted R-squared: 0.7922
## F-statistic: 42.94 on 1 and 10 DF, p-value: 6.449e-05
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.811112191696598"
Determinar los valores de a y b
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept)
## 36.13147
## comerciales
## 4.840637
Gráfica de tendencia
ggplot() +
geom_point(data = datos, aes(x = comerciales, y = ventas), colour='blue') +
geom_line(aes( x = datos$comerciales, y = predict(modelo, datos)), color = "red") +
xlab("Comerciales") +
ylab("Ventas") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
2.5. Predecir conforme al modelo
x <- c(4,3.5,2,0,1)
prediccion <- predict(object = modelo, newdata = data.frame(comerciales = x))
prediccion
## 1 2 3 4 5
## 55.49402 53.07371 45.81275 36.13147 40.97211
y = a + b * x
y
## [1] 55.49402 53.07371 45.81275 36.13147 40.97211
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)
3.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")
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 |
3.2. Valor de correlación entre las variables
r <- cor(datos$solido, datos$oxigeno)
r
## [1] 0.9554794
3.3. Gráfica de dispersión
ggplot(data = datos, aes(x = solido, y = oxigeno)) +
geom_point(colour = 'blue')
3.4. Generar el modelo regresión lineal Y=a+bx
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"
**** 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")
3.5. Predecir conforme al modelo
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
y = a + b * x
y
## [1] 17.38428 21.90250 35.45715 39.97536 49.01179
En el caso 21 hablaremos sobre la Regresión Lineal Simple, el objetivo importante es Determinar predicciones de datos bajo el modelo de regresión lineal simple, y como en los casos anteriores explicare un poco a detalle con 2 ejercicios de regresión lineal simple.
Ejercicio 1: Este ejercicio trata sobre las ventas en función de comerciales y de un conjunto de datos para cualquier empresa que invierte dinero en comerciales se tiene un historial de ventas de doce semanas, en la variable de semanas se guarda el numero desde la semana 1 hasta la 12, en la de comerciales es la cantidad de comerciales por cada semana y en el de ventas es la cantidad de ventas que se hicieron por semana. Se saca también el valor de la correlación entre “x” que son los comerciales y “y” que son las ventas, se trata de la correlación de Pearson con la función cor(x,y) y la relación que establecen estas dos es del 0.9. Después crearemos el modelo de regresión lineal de Y=a+bx y para determinar los dos coeficientes a y b se utiliza la función lineal lm(), y el Coeficiente de correlación es del 36.131 y el de Comerciales es del 4.81, elevamos dichos coeficientes de correlación y el resultado es del 0.811, el coeficiente de determinación como fue 0.811 significa que el valor del solido es del 81.11% del oxígeno. Por ultimo hacemos una predicción, para hacer dicha predicción se utiliza la función predict() y tenemos que predecir los valores 4,3,5,2,0,1.
Ejercicio 2: En el ejercicio 2 es sobre las medidas de los solidos y la demanda de oxígeno químico, que es específicamente sobre empresas que contaminan el agua. Y el valor de correlación entre el solido y el oxigeno es del 0.95, y sobre el modelo de regresión lineal que ya mencionamos anteriormente sobre el coeficiente de correlación ahora es del 3.8296 y del solido es del 0.90, 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, eso quiere decir que el valor del solido representa el 91.29% de oxígeno. Ya por último predecimos los valores de 15,20,35,40,50 para comprobar.