1 Objetivo

Determinar un modelo de regresión lineal simple para estimar y predecir resultados a partir del modelo.

2 Descripción

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 depeiente x

3 Marco teórico

Para construir un modelo de regresión lineal se requiere disponer de datos. Se necesita una variable independiente llamada \(x\) y una variable dependiente llamada \(y\).

Se cargan las librerías necesarias

library(ggplot2) # Operaciones con datos
## Warning: package 'ggplot2' was built under R version 4.0.4
library(dplyr) # Gráficos
## Warning: package 'dplyr' was built under R version 4.0.4
## 
## 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(knitr) # TAblas amigables
## Warning: package 'knitr' was built under R version 4.0.4
# library (corrplot) # Para gráficos de correlaciones
library(PerformanceAnalytics) # Para gráficos de correlaciones
## Warning: package 'PerformanceAnalytics' was built under R version 4.0.5
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.0.5
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.0.5
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend

Ejemplo:

Caso de pizzas cercanas a instituciones educativas. A mayor cantidad de alumnos cerca de un restaurante de pizzas posiblemente las ventas aumentan.

El ejemplo identifica a x como la cantidad de estudiante de una escuela que están cerca de un restaurante pizzas y y el valor de las ventas registradas.

La variable datos significan las ventas registradas por la cantidad de número de estudiantes cerca del restaurante. Los datos que se presentan son valores en miles de estudiantes y ventas en miles. Fuente del ejercicio de (Anderson, Sweeney, and Williams 2008).

Son 10 observaciones.

n <- 10
i <- 1:n
x <- c(2,6,8,8,12,16,20,20,22,26)
y <- c(58,105,88,118,117,137,157,169,149,202)
       
datos <- data.frame(i, x,y)
datos
##     i  x   y
## 1   1  2  58
## 2   2  6 105
## 3   3  8  88
## 4   4  8 118
## 5   5 12 117
## 6   6 16 137
## 7   7 20 157
## 8   8 20 169
## 9   9 22 149
## 10 10 26 202

Se visualiza la relación de los datos mediante un diagrama de dispersión, la pregunta es ¿se observa una relación lineal entre las variables \(x\) y \(y\), es decir entre la cantidad de estudiantes que están cerca del restaurante y las ventas?, es posible aplicar un modelo de regresión lineal simple. Las respuestas a estas preguntas es que SI.

La variable independiente es \(x\) la cantidad de estudiantes y

La variable dependiente es \(y\) las ventas de pizzas.

ggplot(data = datos, aes(x=x, y=y))   +
  geom_point(colour='blue') +
  xlab("Estudiantes") + 
  ylab("Ventas") + 
  ggtitle("Dispersión sobre datos")

3.1 Correlación lineal

La utilidad principal de los análisis correlacionales es saber cómo se puede comportar un concepto o una variable al conocer el comportamiento de otras variables vinculadas, por ejemplo: a mayor estudio mejor rendimiento; a mayor cantidad de sol mayor temperatura de ambiente; a mayor frecuencia de actividad social mayor porcentaje de contagios, entre muchos otros. (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).

La importancia de la correlación es conocer el grado de relación entre variables y ayuda a las técnicas de predicción, es decir, intentar predecir el valor aproximado que tendrá un grupo de individuos o casos en una variable, a partir del valor que poseen en las variables relacionadas (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).

La correlacion puede ser positiva o negativa de entre −1 a 1 y significa que el coeficiente r de Pearson puede variar de −1.00 a +1.00, donde:

\(−1.00\) = correlación negativa perfecta. (“A mayor X, menor Y,” de manera proporcional. Es decir, cada vez que X aumenta una unidad, Y disminuye siempre una cantidad constante). Esto también se aplica “a menor X, mayor Y.”

\(−0.90\) = Correlación negativa muy fuerte.

\(−0.75\) = Correlación negativa considerable.

\(−0.50\) = Correlación negativa media.

\(−0.25\) = Correlación negativa débil.

\(−0.10\) = Correlación neg ativa muy débil.

\(0.00\) = No existe correlación alguna entre las variables.

\(+0.10\) = Correlación positiva muy débil.

\(+0.25\) = Correlación positiva débil.

\(+0.50\) = Correlación positiva media.

\(+0.75\) = Correlación positiva considerable.

\(+0.90\) = Correlación positiva muy fuerte.

\(+1.00\) = Correlación positiva perfecta (“A mayor X, mayor Y” o “a menor X, menor Y,” de manera proporcional. Cada vez que X aumenta, Y aumenta siempre una cantidad constante).

El signo indica la dirección de la correlación (positiva o negativa); y el valor numérico, la magnitud de la correlación (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).

Por otra parte (Walpole, Myers, and Myers 2012), menciona que el análisis de correlación intenta medir la intensidad de tales relaciones entre dos variables por medio de un solo número denominado coeficiente de correlación.

Para determinar el coeficiente de correlación de Pearson de una muestra se utiliza la siguiente fórmula:

3.1.1 Fórmula para correlación de Pearson

\[r=\frac{∑ni=1(xi−x¯)⋅(yi−y)}{\sqrt{∑ni=1(xi−x¯)2⋅∑ni=1(yi−y¯)}}\]

Si se tuviera que determinar manualmente el coeficiente de correlación de Pearson r con los datos sería:

Con cbind() se agregan columnas a un data.frame(), con rbind() se agregan reglones a un data.frame() y con apply() se calculan los totales por cada columna de acuerdo los parámetros que se le indique.

tabla <- datos
tabla <- cbind(datos, datos$x-mean(datos$x),  datos$y-mean(datos$y), (datos$x-mean(datos$x)) * (datos$y-mean(datos$y)))

tabla <- cbind(tabla, (datos$x - mean(datos$x))^2, (datos$y - mean(datos$y))^2)
#tabla
names(tabla) <- c('i', 'x', 'y','(x-mx)', '(y-my)',  '(xi-mx)*(y-my)', '(xi-mx)^2', '(yi-my)^2')

sumas <- apply(X = tabla, 2, FUN = sum)

tabla <- rbind(tabla, sumas)

tabla[nrow(tabla), 1] <- '*'
kable(tabla, caption = paste("Coeficiente de Correlación", "media de x:",mean(datos$x), "media de y", mean(datos$y)))
Coeficiente de Correlación media de x: 14 media de y 130
i x y (x-mx) (y-my) (xi-mx)*(y-my) (xi-mx)^2 (yi-my)^2
1 2 58 -12 -72 864 144 5184
2 6 105 -8 -25 200 64 625
3 8 88 -6 -42 252 36 1764
4 8 118 -6 -12 72 36 144
5 12 117 -2 -13 26 4 169
6 16 137 2 7 14 4 49
7 20 157 6 27 162 36 729
8 20 169 6 39 234 36 1521
9 22 149 8 19 152 64 361
10 26 202 12 72 864 144 5184
* 140 1300 0 0 2840 568 15730

\[r=\frac{∑ni=1(xi−x¯)⋅(yi−y)}{\sqrt{∑ni=1(xi−x¯)2⋅∑ni=1(yi−y¯)}}=\frac{2840}{\sqrt{568 x 15730}}=\frac{2840}{2989.087}=0.950123\]

numerador <- sum((datos$x - mean(datos$x)) * (datos$y - mean(datos$y)))
                 
numerador
## [1] 2840
denominador <- sqrt(sum((datos$x - mean(datos$x))^2) *  sum((datos$y - mean(datos$y))^2))
denominador
## [1] 2989.087
correla <- numerador / denominador 
correla
## [1] 0.950123

En lenguaje de programación R, existe la función cor() que devuelve el valor de la correlación entre dos variables cuantitativas y debe salir el mismo valor.

correla <- cor(datos$x, datos$y)
correla
## [1] 0.950123
# o 

pairs(x = datos[,2:3])

Puede verse mas amigable con la función chart.Correlation de la librería PerformanceAnalytics que previamente se cargó.

chart.Correlation(R = datos[,2:3], histogram = F, pch = 19)

La imagen anterior visualiza el tipo de relación lineal, el valor del coeficiente de correlación de Pearson y con los asteriscos ‘***’ indica si la variable independiente es estadísticamente significativa con respecto a la variable dependiente.

Se entiende que es una correlación lineal positiva muy fuerte

Siendo r el valor del coeficiente de correlación. La correlación de Pearson funciona bien con variables cuantitativas que tienen una distribución normal .

La idea básica del análisis de correlación es identificar la asociación entre dos variables; por lo general, se puede describir la relación graficando o elaborando un diagrama de dispersión entre \(x\) y \(y\).

3.2 Regresión lineal simple

La regresión lineal simple implica aplicar una ecuación matemática de mínimos cuadrados que permite pronosticar o predecir el valor de una variable con base en el valor de otra; este procedimiento se llama análisis de regresión.

El análisis de regresión es un método para examinar una relación lineal entre dos variables; se utiliza el concepto de correlación r, sin embargo, la regresión proporciona mucho más información, además de permitir estimaciones o predicciones de la relación lineal con la ecuación de mínimos cuadrados (Lind, Marchal, and Wathen 2015).

3.2.1 Mínimos cuadrados

Para estimar la recta de regresión se utiliza la fórmula de mínimos cuadrados. A la variable dependiente o respuesta se le identifica como Y y a la variable predictora o independiente como X

\[y^=β^0+β^1x\]

ó

\[Y=a+bx\]

en donde:

\(y^\) o \(Y\) es igual al valor de la predicción, \(β^0\) o a es el coeficiente de la intersección de recta estimada con el eje de las \(y\), \(β^1\) o \(b\) es el valor de la pendiente y \(x\) es cada valor de la variable independiente.

¿cómo determinar los coeficientes \(a\) y \(b\)?

\[b=β^1=\frac{∑ni=1(xi−x¯¯¯)(yi−y¯¯¯)}{∑ni=1(xi−x¯¯¯)^2}=\frac{Sy}{Sx}×r\]

Se requieren las medias de las variables \(x\) y \(y\), es decir \(x¯\) y \(y¯\), y desarrollar la fórmula.

Entonces b se obtiene con la sumatoria de la diferencia de cada valor de x menos su media x¯ multiplicada por la diferencia de cada valor de y menos su media \(y¯\) todo el resultado dividido entre la sumatoria del cuadrado de la diferencia de cada valor de x menos su media \(x¯\), y con ello se obtiene \(b\) o \(b1^\)

De manera alternativa el coeficiente o la pendiente b se puede determinar multiplicando el valor del coeficiente de correlación determinado previamente multiplicado por la división de la desviación estándar Sy de la variable dependiente y entre la desviación estándar Sx de la variable independiente x, es decir: \(r×\frac{Sy}{Sx}\)

y

\[a=β^0=y¯¯¯−β^1x¯¯¯\]

Determinando los coeficientes de \(a\) y \(b\) aplicando la fórmula:

\[b=β^1=\frac{∑ni=1(xi−x¯¯¯)(yi−y¯¯¯)}{∑ni=1(xi−x¯¯¯)^2}\]

b <-  sum((datos$x - mean(datos$x)) * (datos$y - mean(datos$y))) / sum((datos$x - mean(datos$x))^2)
b 
## [1] 5
a = mean(datos$y) - b * mean(x)
a
## [1] 60

Determinando los coeficientes de \(a\) y \(b\) aplicando las fórmula determinando b usando el coeficiente de correlación

b = correla * sd(datos$y) / sd(datos$x)
b
## [1] 5
a = mean(datos$y) - b * mean(x)
a
## [1] 60

En ambos casos se debe generar los mismos valores para los coeficientes \(a\) y \(b\) o \(b\) y \(a\) respectivamente.

Toda vez que se tienen los coeficientes a y b ya se puede determinar la recta de regresión para cada valor de \(x\).

Por ejemplo: para un valor de xi=1 el valor de \(Y=a+bx1= 65\); para un valor de un valor de \(xi=2\) el valor de \(Y=a+bx2= 70\) y para un valor de un valor de \(xi=50\) el valor de \(Y=a+bx50= 310\) y así sucesivamente.

Aquí los valores predecidos de Y por cada valor de la variable independiente \(x\).

A estos valores se les llama también valores de la recta o valores ajustados.

Se presentan los valores de predicción para cada valor de \(x\).

datos$x
##  [1]  2  6  8  8 12 16 20 20 22 26
Y = a + b*(datos$x)
Y
##  [1]  70  90 100 100 120 140 160 160 170 190

Con estos valores ya se puede dibujar la recta en el diagrama de dispersión.

#ggplot(data = datos, aes(x,y), colour = 'blue') +
#  geom_point() +
#  geom_line(aes(x = datos$x, y = Y), color = "red")
  

ggplot(data = datos, aes(x=x, y=y))   +
  geom_point(colour='blue') +
  geom_line(aes(x = x, y = Y), color = "red") +
  xlab("Estudiantes") + 
  ylab("Ventas") + 
  ggtitle("Linea de tendencia sobre datos")

3.3 lm()

Determinando el modelo de regresión lineal simple con la función lm()

modelo <- lm(data = datos, formula = y~x)
summary(modelo)
## 
## Call:
## lm(formula = y ~ x, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -21.00  -9.75  -3.00  11.25  18.00 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  60.0000     9.2260   6.503 0.000187 ***
## x             5.0000     0.5803   8.617 2.55e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.83 on 8 degrees of freedom
## Multiple R-squared:  0.9027, Adjusted R-squared:  0.8906 
## F-statistic: 74.25 on 1 and 8 DF,  p-value: 2.549e-05

4 Desarrollo

Con lo anteriormente descrito, se construyen modelos de regresión lineal simple para cada conjunto de datos en donde se busca encontrar e interpretar aspectos siguientes:

  1. Generar o importar los datos y contextualizar los datos.

  2. Identificar variables independiente y dependiente es decir, x e y.

  3. Visualizar el modelo de dispersión y observar la relación lineal.

  4. Determinar el coeficiente de correlación de Pearson r e interpretar su significado.

  5. Construir el modelo,

  6. Determinar los coeficiente a y b e interpretar su significado.

  7. Determinar la recta de regresión o tendencia e interpretar su significado

  8. Identificar con summary(modelo) el valor del coeficiente de determinación R-Square e interpretar su significado

  9. Predecir con valore nuevos

  10. Establecer conclusiones e interpretaciones finales de cada ejercicio.

4.1 American Women

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.

4.1.1 Datos

datos <- women

names(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
kable(x = datos, caption = "Promedios de estaturas y pesos de mujeres Americanas")
Promedios de estaturas y pesos de mujeres Americanas
estatura peso
58 115
59 117
60 120
61 123
62 126
63 129
64 132
65 135
66 139
67 142
68 146
69 150
70 154
71 159
72 164

4.1.2 Variables

  • La variable idependiente será la estatura height.

  • La variable dependiente será el peso weight.

4.1.3 Gráfico de dispersión

ggplot(data = datos, aes(x=estatura, y=peso))   +
  geom_point(colour='blue') +
  xlab("Estaturas") + 
  ylab("Pesos") + 
  ggtitle("Dispersión de los promedios de alturas y pesos de mujeres Americanas")

Se observa una relación absolutamente lineal, se visualiza el histograma para asegurarse de que las variables se comportan bajo una distribución normal además de no tener datos atípicos por lo que determinar el coeficiente de Pearson es adecuado.

4.1.4 Coeficiente de correlación de Pearson

correla <- cor(datos$estatura, datos$peso)
correla
## [1] 0.9954948
chart.Correlation(R = datos, histogram = T, pch = 19)

Se observa una correlación positiva muy fuerte casi perfecta en los datos.

4.1.5 Modelo de regresión lineal simple

Se construye el modelo con la fórmula peso en función de la estatura de acuerdo a los datos.

modelo <- lm(data = datos, formula = peso~estatura)
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

4.1.6 Coeficientes a y b

Coeficiente del modelo de regresión lineal simple a y b

a <- modelo$coefficients[1]
b <- modelo$coefficients[2]

La ecuación de mínimos cuadrados es de la siguiente manera:

\[Y=a+bxi\]

4.1.7 Linea de tendencia

ggplot(data = datos, aes(x=estatura, y=peso))   +
  geom_point(colour='blue') +
  geom_line(aes(x = estatura, y = modelo$fitted.values), color = "red") +
  xlab("Estaturas") + 
  ylab("Pesos") + 
  ggtitle("Linea de tendencia sobre datos")

¿Cuál debiera ser el peso de una persona que mide aproximadamente 60 70 u 80 pulgadas?

nuevas.estaturas <- c(60, 70, 80)
Y = a + b * nuevas.estaturas
Y
## [1] 119.4833 153.9833 188.4833

o se puede predecir mediante la función predict()

predict(object = modelo, newdata = data.frame(estatura = nuevas.estaturas))
##        1        2        3 
## 119.4833 153.9833 188.4833

5 Interpretación

¿Cuál es el valor de R_Squared y que significa?. 0.991 significa que el peso de las personas es representado en un 99.1% por la estatura de las mismas

6 Referencias bibliográficas

Amat Rodrigo, Joaquín. 2016. “Correlación Lineal y Regresión Lineal Simple.” https://www.cienciadedatos.net/documentos/24_correlacion_y_regresion_lineal. Anderson, David R., Dennis J. Sweeney, and Thomas A. Williams. 2008. Estadística Para Administración y Economía. 10th ed. Australia Brasil Corea España Estados Unidos Japón México Reino Unido Singapur: Cengage Learning,. Hernández Sampieri, Roberto, Carlos Fernández Collado, and María del Pilar Baptista Lucio. 2014. Metodología de La Investigación. Sexta. Lind, Douglas, William Marchal, and Samuel Wathen. 2015. Estadística Aplicada a Los Negocios y La Economía. Decimo Sexta. México, D.F.: McGraw-Hill. Walpole, Ronald E., Raymond H. Myers, and Sharon L. Myers. 2012. Probabilidad y Estadística Para Ingeniería y Ciencias. Novena Edición. México: Pearson.