Trabajo de econometria
Enviado por Laura Salazar • 18 de Agosto de 2020 • Trabajo • 928 Palabras (4 Páginas) • 142 Visitas
Nota: Todo lo que este antecedido de # se entiende como un comentario y no es ejecutable en R.
# Para comenzar utilizamos el comando rm() para limpiar la memoria; lm(x,y) borra los elementos x e y. A continuación, se estable una carpeta de trabajo desde la cual se importan los datos y la que podemos exportar resultado, para ello se usa el comando setwd("RUTA"). Nota: c:/ para la raíz. A continuación importamos los datos para el trabajo, si están en formato cvs para importarlos se usa el comando read.csv() que tiene 4 argumentos: el nombre del archivo entre comillas, header = T para indicar que el nombre de las variables está en la cabecera de los datos, sep = ";" para indicar que las columnas están separada por “;”, y dec para indicar el separado de decimales. NOTA: Otra forma para importar datos es usar un paquete que permite leer datos en formato Excel .xls, para ello instalamos el paquete “readxl” , una vez cargado se instala con el comando library() Para importar los datos en formato Excel usamos el comando read_excel () cuyo argumento es el nombre del archivo entre comillas. NOTA: Si alguna de las variables no se asume como numérica con el comando as.numeric(Datos$X4t) le indicamos cual se debe asumir como tal
rm(list=ls())
setwd("c:/econometria1/capitulo1")
E1<-read.csv("Datos_Ejemplo1_Consumo_Cerveza.csv",header = T,sep = ";",dec = ".")
head(E1) # Muestra algunas filas de los datos con encabezado
#install.packages("readxl")
library(readxl) #Carga el paquete
Datos <- read_excel("Datos_Ejemplo1_Consumo_Cerveza.xls")
Datos$X4t <- as.numeric(Datos$X4t)
head(Datos)
# A continuación vamos cargar e instalar un paquete para pruebas de normalidad.
#install.packages("normtest")
library(normtest)
# A continuación creamos las matrices de datos, para ello procedemos así: El comando cbind() concatena elementos, en este caso la columna de unos con las columnas 3 a 6 de los datos que son las variables explicativas. x2t, x3t, x4t y x5t, y generamos el vector y0 con las 54 observaciones. Después se obtienen las matrices X y y con las 52 observaciones completas. Otra forma para las matrices: Genera una matriz con una columna de 1 y las columnas 3 a 6 de los datos con todas las filas, es decir con las variables x2t, x3t, x4t y x5t
X0 <- as.matrix(cbind(1,Datos[,3:6]))
y0 <- as.matrix(Datos[,2])
X <- X0[1:52,]
y <- y0[1:52,]
X1 <- as.matrix(cbind(1,Datos[1:52,3:6]))
Y1 <- as.matrix(Datos[1:52,2])
# OBTENEMOS LAS VARIABLES x2t, x3t, x4t y x5t y las VARIABLES EN DESVIACIONES
yta <- y-mean(y)
x2t <- X1[,2:2]
x2ta <- x2t-mean(x2t)
x3t <- X1[,3:3]
x3ta <- x3t-mean(x3t)
x4t <- X1[,4:4]
x4ta <- x4t-mean(x4t)
x5t <- X1[,5:5]
x5ta <- x5t-mean(x5t)
# Estimación por OLS paso a paso. Generamos xtx: t(A) da la transpuesta de la matriz A; %*% es la operación. Obtenemos xtx inversa: comando solve(A) da la inversa de la matriz A
XtX <- t(X)%*%X
XtX
XtX_inv <- solve(XtX)
XtX_inv
Xty <- t(X)%*%y
Xty
b <- XtX_inv%*%Xty #
b
yte <- X%*%b #Calcula yt estimado
# Diagrama de dispersión Grafica y vs y estimado
plot(y,yte)
# Calculo de los errores de estimación. Prueba de normalidad JB para et. Prueba QQ. Histograma de residuales y estadísticas descriptivas y cajas y bigotes
et <- y - yte
jb.norm.test(et)
g1_qq <- qqnorm(et,col="black")
qqline(et,col="red")
summary(et)
hist(et, seq(-12.0, 8.0, by=2.0), prob=TRUE)
lines(density(et, bw=1.5))
#rug(et)
qqnorm(et)
qqline(et)
boxplot(et)
#Obtenemos las sumas de cuadrados y el R2
TSS=t(y)%*%y-length(y)*mean(y)^2
TSS
ESS=t(b)%*% XtX %*%b-length(y)*mean(y)^2
ESS
RSS=t(et)%*%et
RSS
TSS_e13=ESS+RSS
TSS_e13
R_2<-ESS[1,1]/TSS[1,1]
R_2
# Otra forma para el grafico y estimado vs el observado
plot(y,t="l")
lines(yte,lty=3)
legend(x=30,y=70,legend = c("observado","estimado"),lty = c(1,3))
# Se ajusta el modelo por OLS por Comandos. El comando summary() edita el resultado del modelo estimado, en este caso eq1. Se obtiene el vector de coeficientes estimados, los errores de estimación, y yte de eq1.
eq1 <- lm(y~X[,2:5])
summary(eq1)
b1 <- coef(eq1)
et1 <- resid(eq1)
ytest <- fitted(eq1)
# Pronostico. Generamos la matrix Xf con las filas 53 y 54 de los datos. El vector ytf que contiene los pronósticos para los años 2012 y 2013
Xf <- X0[53:54,]
Xf
ytf <- Xf%*%b
ytf
# Por comandos
Ytf_lm <- Xf%*%eq1$coefficients
Ytf_lm
# MODELO EN DESVIACIONES: Obtenemos la MATRIZ IDENTIDAD DE ORDEN 52. El comando diag() genera una matriz diagonal; los argumentos son nrow=, ncol= , formula de elementos de la diagonal. NOTA: si solo se especifica un escalar entero en los argumentos, el resultado es una matriz diagonal con 1 en la diagonal de dimensión del escalar entero.
...