Como cargar la serie de datos

Para iniciar nuestros estudios en econometría, lo primero que aprenderemos es el uso de la carga de una serie de datos cualquiera, si bien existen herramientas en R que nos ayudan a hacerlo más rápido, siempre una solución más eficiente es sobre la programación, por ello usaremos el siguiente código:

data = read.table(file.choose(), header = T)

En el código anterior, se entenderá que data es el nombre que tomará de ahora en adelante la base de datos, y obviamente podemos cambiar el nombre data por otro que el usuario guste, siempre y cuando tenga presente el cambio que está ejerciendo.

Este código, nos ayudará a cargar la base de datos desde cualquier parte del sistema, lo más recomendable siempre es trabajar con datos en formatos .txt o .csv, por su facilidad de manejo y bajo peso, lo que permite una carga rapida.

NOTA

RECUERDE: USE SIEMPRE NOMBRES EN MINUSCULA, R DISCRIMINA SIEMPRE LAS MAYUSCULAS CONFUNDIENDO EL USO DE LAS VARIABLES

Procedimiento adicional: Attach y Scipen

Al momento de cargar los datos, siempre es importante tener en cuenta que estos datos se verán como una hoja plana de información, es decir, el programa leerá los datos, pero asumirá que es una impresión, se pueden ver, pero no se pueden manipular; para contrarrestar este inconveniente el código:

attach(data)

nos ayudará a seccionar la información, dándole la opción al programa de transformar la información como si fuera una serie cargada en Excel, brindándonos completa manipulación.

Otro problema identificable en R es el hecho que por defecto los resultados del programa siempre serán vistos en formato de notación cientifica, cuando los resultados presentan muchos decimales.

Entonces, para modificar los resultados, a fin de obtener el resultado con los decimales completos usaremos la función:

options(scipen = 999)

Creación del primer Modelo Lineal

Para crear nuestro primer modelo debemos tener en cuenta que estos obedecerán a la ecuación:

\[\begin{aligned} \hat Y = X\hat\beta+e_i \end{aligned}\]

Este es un modelo lineal simple, el cual muestra la relación de las variables de la función Y y X, pero, a fin de cuentas, las variables Y y X son series de información conocidas, realmente quien nos interesa es el valor \(\beta\), que se obtiene por la siguiente formula:

\[\begin{aligned} \beta = (X^TX)^{-1}*(X^TY) \end{aligned}\]


Crear un modelo lineal a mano… con R

Para ello usaremos el procedimiento que nos indica la formula con los siguientes pasos:

  1. Creamos una serie de datos semillas que nos ayuden a identificar el valor del intercepto \(\alpha\), para ello:
x1 = rep(1,length(data[,1]))

Llamaremos entonces X1 a aquel vector de datos repetidos semilla. Como podemos ver la función rep es una función de repetición, al cual le solicitamos que repita muchas veces el valor 1, y como tal, para no estar contando a mano cuantos unos necesitamos con la función length(data[,1]) que nos va a tomar el largo de la información de una columna cualquiera de la serie de datos.

  1. Creamos la matriz X

Aqui mezclamos la información del vector de valores x1 y las variables que deseemos poner en función para evaluar.

x = as.matrix(data.frame(x1,x2,x3,...,xk))
  1. Multiplicamos… \(X^TX\)

Para R las operaciones matematicas tienen una formulación especial, por ejemplo, para hacer una transpuesta le diremos que use la función t(), y para multiplicar matrices usamos \(%*%\).

xtx = t(x)%*%x
  1. Obtenemos el valor inverso de \(X^TX\)

Para este caso, la función de matriz inversa para R es solve, por lo tanto:

xtxi = solve(xtx)
  1. Multiplicamos \(X^TY\)

Asi mismo, como hicimos en el paso 3, repetimos el procedimiento, pero cambiamos a variable Y.

xty = t(x)%*%y
  1. Obtenemos el estimador \(\beta\)

Usamos exactamente el mismo formato:

b = xtxi%*%xty

Como obtener los valores estimados de Y

Recordemos entonces que la formula para hallar Y estimado es:

\[\begin{aligned} \hat Y= X*\hat\beta \end{aligned}\]

Para R, este procedimiento se efectuará de la siguiente manera:

yest = x%*%b

Como obtener los errores del modelo frente al valor de Y

Recordemos tambien que los residuales o errores se veran como la diferencia que hay entre mi realidad \(Y\) y mi modelo \(\hat Y\), por lo tanto:

\[\begin{aligned} e_i = Y_i - \hat Y_i \end{aligned}\]

Que en R se ve tal que asi:

error = y-yest

Crear un modelo lineal facilmente… con R

Para R, este procedimiento se efectuará de la siguiente manera:

rel = y ~ x
model = lm(rel)
summary(model)

Donde:

  • rel = Y~X, es la relación de las variables X con Y
  • lm = linear model (modelo lineal)
  • summary = es el resumen estadístico del modelo
  • model = nombre del modelo (puede ser cualquiera, sin ser el nombre de una variable

Realidad vs el modelo estimado

Una primera forma de revisión de nuestro modelo frente a la realidad de la variable analizada Y, nos da una pequeña visión de que tan eficiente fue nuestro modelo, para ello usaremos el siguiente código:

pmodel = predict(model)
plot(y, ylab = "", xlab = "")
par(new = TRUE)
plot(pmodel,pch = 8,col="red", axes = FALSE, bty = "n", xlab = "observaciones", ylab = "Y Vs Yest")

Esto nos ayuda a comprender que tan alejados quedaron los puntos de nuestro modelo frente a los datos reales.

Grafica de Errores: Que tan disperso fue nuestro modelo

Otra forma de verificar la eficiencia de nuestro modelo de forma gráfica, es verificando que tan dispersos fueron nuestros errores de su valor esperado; recuerde que el método EMCO nos indica que todos los estimadores serán BLUE (Best Linear Unbiased Estimators), mejores estimadores lineales insesgados, significando que son los estimadores óptimos sin errores, y por lo tanto:

\[\begin{aligned} E(e_i)=0 \end{aligned}\]

Si la gráfica nos arroja que los puntos de los valores de \(\hat Y_i\), están muy dispersos o alejados de cero, significará que el modelo no es el más eficiente, para ello usaremos el siguiente codigo:

error = residuals(model)
plot(error,xlab="observaciones",ylab="errores del modelo")
abline(h=0,col="red")

Formas funcionales alternativas

Teniendo en cuenta las diferentes formas de tomar la información para los modelos lineales, los códigos para verificar las formas funcionales alternativas de los modelos lineales son:

Modelo Lin - Lin (Lineal - Lineal)

Forma Ecuacional \[\begin{aligned} \hat Y_i=\alpha + \hat \beta X_i+e_i \end{aligned}\]

Codigo en R

model = lm(y ~ x)
summary(model)

Modelo Log - Log (logaritmo - Logaritmo)

Forma Ecuacional \[\begin{aligned} Log \hat Y_i=\alpha + \hat \beta\, Log X_i+e_i\\ \end{aligned}\]

Codigo en R

model = lm(log(y)~log(x)
summary(model)

Modelo Lin - Log (lineal - Logaritmo)

Forma Ecuacional \[\begin{aligned} \hat Y_i=\alpha + \hat \beta\, Log X_i+e_i\\ \end{aligned}\]

Codigo en R

model = lm(y~log(x))
summary(model)

Modelo Log - Lin (Logaritmo - lineal)

Forma Ecuacional \[\begin{aligned} Log \hat Y_i=\alpha + \hat \beta X_i+e_i\\ \end{aligned}\]

Codigo en R

model = lm(log(y)~x)
summary(model)

Bondad de Ajuste

Para verificar la eficiencia de nuestro modelo usaremos los indicadores de bondad de ajuste, que nos permiten revisar la perfección que hay en la comparación de los datos \(Y\) y los datos de \(\hat Y\). Los indicadores de Bondad de ajuste más usados en los modelos lineales son:


Coeficiente de determinación R^2

Tomando la formula considerada para hallar el coeficiente de determinación:

\[\begin{aligned} R^2 = 1- \frac{SSE}{SST};\qquad R^2 \in\, \mathbb R\: [0,1] \end{aligned}\]

Que tambien puede ser entendida como

\[\begin{aligned} R^2 = \frac{SSR}{SST};\qquad R^2 \in\, \mathbb R\: [0,1] \end{aligned}\]

Los cuales pueden ser programados como:

r2 = 1-(sse/sst)

O bien

r2 = ssr/sst

Para ello, se requiere entonces conocer los valores de \(SSR\), \(SSE\) y \(SST\).

Sumatoria al cuadrado de la regresión \(SSR\)

Teniendo en cuenta la fórmula:

\[\begin{aligned} SSR = \sum_{i=1}^{n} {(\hat Y_i - \bar Y)}^2 \end{aligned}\]

El código en R nos muestra que:

ssr = sum((y-mean(y))^2)
Sumatoria al cuadrado de los errores \(SSE\)

Teniendo en cuenta la fórmula:

\[\begin{aligned} SSE = \sum_{i=1}^{n} {(Y_i - \hat Y_i)}^2 \end{aligned}\]

El código en R nos muestra que:

sse = deviance(model)
Sumatoria al cuadrado de los totales \(SST\)

Teniendo en cuenta la fórmula:

\[\begin{aligned} SSE = \sum_{i=1}^{n} {(Y_i - \bar Y_i)}^2 \end{aligned}\]

El código en R nos muestra que:

sst = ssr + sse

O bien

sst = sum((y-mean(y))^2)

Coeficiente de determinación R^2 ajustado

Al encontrar que los modelos lineales múltiples tienen problemas de ajuste, la corrección propuesta de la formula \(R^2\) es:

\[\begin{aligned} R^2aj = 1-\frac{n-1}{n-k}*(1-R^2) \end{aligned}\]

En R esta fórmula queda formulada como:

r2a1 = 1-((NROW(y)-1)/(NROW(y)-NROW(coef(model1)))*(1-r2))

Análisis de criterios de información

Respecto a los criterios de revisión sobre modificar un modelo con una o más variables, los análisis presentados son Criterio de información Akaike y Criterio de Información Schwartz.

Para R, los criterios son:

AIC(model,model1)
BIC(model,model1)

Donde:

  • Model representará al modelo original
  • Model1 representará al modelo modificado