Dentro del ámbito de la estadística, uno de los tópicos más importantes son las regresiones lineales (simples o múltiples), las cuales tienen como objetivo predecir valores futuros en base a aquellos valores ya existentes con anterioridad, por lo que el método más comunmente utilizado para esto es el conocido como mínimos cuadrados ordinarios.
Este método de estimación se basa en la idea de que hay una variable dependiente y otra(s) variable(s) independiente(s), la cual puede explicar en cierta medida los comportamientos de la variable dependiente, teniendo como resultado la siguiente expresión matemática:
Y=α+βX1 Esta función nos estaría diciendo que la variable dependiente Y cambiará β veces cada que la variable independiente X se modifique en una unidad. Mátematicamente hablando esto es correcto, sin embargo, recordemos que en el ámbito de la estadística los valores (casi) nunca se cumplen a la perfección, siempre existe un margen de error que debe ser considerado, por lo que en econometría se suele usar el término de error ε o μ para denotar el componente aleatorio de la función, o mejor dicho, el margen de error de la función, teniendo finalmente la siguiente expresión:
Y=α+βX1+ε
Un modelo de regresión lineal debe cumplir con ciertos supuestos, los cuales son los siguientes:
Ahora, ya que conocemos dichos supuestos, podemos pasar a estimar los respectivos valores de α y β para un modelo de regresión lineal, de lo cual sabemos que α es la ordenada al origen y β la pendiente de la función. Si no se tienen los valores entonces hay que estimarlos, teniendo que ˆα y ˆβ → ˆY, por lo que ˆε=Y−ˆY. El método de mínimos cuadrados ordinarios se basa en-valga la redundancia-minimizar los errores al cuadrado, por lo que aplicando lo anterior a las funciones de los errores estimados y la función de Y estimada, tendríamos lo siguiente:
∑(εi)2=∑(Yi−ˆY)2
Donde:
ˆY=ˆα+ˆβXi
Ahora, derivamos ˆα y ˆβ e igualamos a 0. Para poder estimar ˆα debemos comenzar por ˆβ, teniendo dos posibles métodos para ello los cuales están desarrollados a continuación:
Sabiendo que ∑ε2i=∑(Yi−ˆY)2 y despejando ˆα de la función original ˆα=ˆY−ˆβXi, entonces tendríamos:
∑(εi)2=∑(Yi−ˉY+ˆβˉX−ˆβXi)2
Reagrupando y factorizando:
∑(εi)2=∑[(Yi−ˉY)−ˆβ(Xi−ˉX)]2
Después, quitamos el exponente de la ecuación anterior:
∑(εi)2=∑[(Yi−ˉY)2−2ˆβ(Yi−ˉY)(Xi−ˉX)+ˆβ2(Xi−ˉX)2] Derivamos con respecto a ˆβ, tal que:
∂∑(εi)2∂ˆβ=−2∑(Xi−ˉX)(Yi−ˉY)+2ˆβ∑(Xi−ˉX)2=0
y, finalmente, despejando ˆβ:
−2ˆβ∑(Xi−ˉX)2=−2∑(Xi−ˉX)(Yi−ˉY) ˆβ∑(Xi−ˉX)2=∑(Xi−ˉX)(Yi−ˉY)
ˆβ=∑(Xi−ˉX)(Yi−ˉY)∑(Xi−ˉX)2
Lo que en esencia es la covarianza de X y Y entre la varianza de X, es decir:
ˆβ=Cov(X,Y)Var(X)
Si tenemos la derivada siguiente:
∂∑(Yi−ˆα−ˆβXi)ˆβ=−2∑(Yi−ˆα−ˆβXi)Xi=0
Entonces podemos despejar el -2 para cancelarlo, ya que 0X=0, tal que:
ˆβ′=∑(Yi−ˆα−ˆβXi)Xi=0 ˆβ′=∑(YiXi−ˆαXi−ˆβX2i)=0 Considerando la propiedad distributiva de ∑ en estadística:
ˆβ′=∑YiXi−ˆα∑Xi−ˆβ∑X2i=0
Despejamos $ Y_i X_i$:
ˆβ′=∑YiXi=ˆα∑Xi+ˆβ∑X2i
Ahora, sabemos que ˆα=ˉY−ˉβˉX, por lo que podemos reemplazar en la ecuación, teniendo:
(ˉY−ˆβˉX)∑Xi+ˆβ∑X2i=∑YiXi
Desarrollando y despejando ˆβ:
∑XiˉY−∑XiˆβˉX+ˆβ∑X2i=∑YiXi −∑XiˆβˉX+ˆβ∑X2i=∑YiXi−∑XiˉY
Factorizamos ˆβ y la despejamos:
ˆβ(−ˉX∑Xi+∑X2i)=∑YiXi−∑XiˉY
ˆβ=∑YiXi−∑XiˉYˉX∑Xi−∑X2i
Finalmente, aplicando la propiedad ∑Xi=nˉX y redistribuyendo la expresión, tenemos:
ˆβ=∑(Xi−ˉX)(Yi−ˉY)∑(Xi−ˉX)2
Llegando al mismo resultado que en el método anterior.
Ahora bien, para calcular el valor de ˆα simplemente hay que derivar lo siguiente e igualar a 0:
∂∑(Yi−ˆα−ˆβXi)2∂ˆα=−2∑(Yi−ˆα−ˆβXi)=0 Despejamos −2 y desarrollamos la expresión, teniendo:
∑Yi−nˆα−ˆβ∑Xi=0
Finalmente, despejamos a ˆα para calcularla, tal que:
nˆα=∑Yi−ˆβ∑Xi ˆα=∑Yin−ˆβ∑Xin
Por lo que el valor final de ˆα estaría dado por la expresión:
ˆα=ˉY−ˆβˉX
La lógica de los valores de ˆα y ˆβ es que encontremos una función que pueda explicar de la mejor manera posible la tendencia que hay entre la relación de dos variables, suponiendo que están relacionadas. La forma de interpretar dichos valores es la siguiente: Sabiendo que Y es la variable dependiente o endógena y X la variable independiente o exógena, si X incrementa en una unidad (sea el caso de lo que estamos midiendo) entonces Y va a tender a variar en ˆβ unidades, pero si X se mantiene constante (no varía en el tiempo) entonces Y mantendrá un valor de ˆα.
Ahora, para ver de manera más clara lo que hemos hecho hasta ahora de manera matemática entonces haremos un ejercicio rápido con la base cars
, la cual ya viene instalada en Rstudio por default. Esta base nos da una serie de observaciones sobre velocidad y distancia. Para hacer una regresión en R no es necesario usar ningún paquete, pero usaremos las siguientes librerias para la gráfica hecha al final:
library(echarts4r)
library(tidyverse)
library(lubridate)
library(prophet)
Ahora, para hacer una regresión de manera sencilla simplemente usaremos el siguiente comando:
# Leemos los datos de "cars"
attach(cars)
head(cars)
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
# Creamos un objeto que incluya el modelo lineal "lm", con "speed" como la variable independiente y "dist" como variable dependiente
Modelo <- lm(dist ~ speed)
# Obtenemos los principales estadísticos del modelo
summary(Modelo)
##
## Call:
## lm(formula = dist ~ speed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.069 -9.525 -2.272 9.215 43.201
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.5791 6.7584 -2.601 0.0123 *
## speed 3.9324 0.4155 9.464 1.49e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.38 on 48 degrees of freedom
## Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
## F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12
Lo que nos estaría diciendo el modelo anterior es que por cada unidad de aumento en la velocidad la distancia tenderá a aumentar en 3.9324 unidades (metros, kilometros, según sea el caso), pero si la velocidad se mantiene constante, la distancia será de -17.5791 unidades (este último valor no tiene mucho sentido, por lo que en este caso probablemente convenga hacer una regresión sin constante, aunque eso será analizado en otro caso). El coeficiente R2 fue de 0.6438, lo que significa que la varianza del modelo estaría explicada en un 64%, es decir, el modelo es capaz de explicar el valor del 64% de las observaciones. Finalmente, encontramos que las probabilidades individuales “Pr(>|t|)” son menores a un nivel de significancia de 0.05, por lo que cada coeficiente puede ser tomado como válido (En otra entrada veremos más a fondo los niveles de significancia y su relevancia en un modelo lineal).
Para denotar de manera más clara la lógica de lo que hemos hecho hasta ahora, vamos a hacer un gráfico, representando las observaciones individuales y la linea de tendencia que representa al modelo.
cars %>%
e_charts(x = speed) %>%
e_scatter(dist, name = "Observaciones") %>%
e_lm(dist ~ speed, name = "MCO") %>%
e_axis_labels(x = "Velocidad", y = "Distancia") %>%
e_title(
text = "Ejemplo de MCO",
subtext = "Distancia vs velocidad"
) %>%
e_x_axis(
nameLocation = "center",
splitArea = list(show = FALSE),
axisLabel = list(margin = 3),
axisPointer = list(
show = TRUE,
lineStyle = list(
color = "#999999",
width = 0.75,
type = "dotted"
)
)
) %>%
e_y_axis(
nameLocation = "center",
splitArea = list(show = FALSE),
axisLabel = list(margin = 0),
axisPointer = list(
show = TRUE,
lineStyle = list(
color = "#999999",
width = 0.75,
type = "dotted"
)
)
)