Alisson Samaria Vaquerano Morales
VM17011 Econometría GT02
Primer Paso: cargar las librerias y de donde tomaremos los datos
library(readr)
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
options( sapen= 999 , digits = 3)ruta <- "C:/Users/aliss/Documents/Ciclo 0519/Econometria/practica.csv"
datos <- read_csv(file= ruta)## Parsed with column specification:
## cols(
## Y = col_double(),
## X1 = col_double(),
## X2 = col_double()
## )
# Variable dependiente
datos %>% select("Y") %>% as.matrix() -> mat_y
print(mat_y)## Y
## [1,] 90
## [2,] 100
## [3,] 110
## [4,] 135
## [5,] 145
## [6,] 165
# Variables explicativas y la columna del término independiente
datos %>% mutate(cte = 1) %>% select( "cte", "X1", "X2") %>%
as.matrix() -> mat_x
print(mat_x)## cte X1 X2
## [1,] 1 1 0
## [2,] 1 2 0
## [3,] 1 3 0
## [4,] 1 4 1
## [5,] 1 5 1
## [6,] 1 6 1
Calcule el producto escalar de la primera y segunda columnas de X.
#Columnas 1 y 2 de la matriz X
colum1 <- mat_x [,1] %>% as.matrix()
colum2 <- mat_x [,2] %>% as.matrix()
productoescalar <- t(colum1) %*% colum2print(productoescalar)## [,1]
## [1,] 21
Calcule X’X y X’Y.
# La siguiente operación obtiene la matriz X'X
sigma <- t(mat_x) %*% mat_x
print(sigma)## cte X1 X2
## cte 6 21 3
## X1 21 91 15
## X2 3 15 3
# La siguiente operación obtiene la matriz X'Y
mat_xy <- t(mat_x) %*% mat_y
print(mat_xy)## Y
## cte 745
## X1 2875
## X2 445
Obtenga la inversa de X’X.
inversasigma <- solve(sigma)print(inversasigma)## cte X1 X2
## cte 1.33 -0.50 1.17
## X1 -0.50 0.25 -0.75
## X2 1.17 -0.75 2.92
Calcule el producto de \([X'X]^{-1}\) y X’Y.
estimadormco <- inversasigma %*% mat_xyprint(estimadormco)## Y
## cte 75.0
## X1 12.5
## X2 10.8
Calcule la matriz de proyeccción P compruebe que P es una matriz idempotente.
#Calculamos la matriz P
mat_p <- mat_x %*% inversasigma %*% t(mat_x)
print(mat_p)## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 5.83e-01 3.33e-01 8.33e-02 2.50e-01 -1.11e-16 -2.50e-01
## [2,] 3.33e-01 3.33e-01 3.33e-01 -1.11e-16 -1.67e-16 -2.22e-16
## [3,] 8.33e-02 3.33e-01 5.83e-01 -2.50e-01 0.00e+00 2.50e-01
## [4,] 2.50e-01 2.22e-16 -2.50e-01 5.83e-01 3.33e-01 8.33e-02
## [5,] 2.22e-16 2.22e-16 2.22e-16 3.33e-01 3.33e-01 3.33e-01
## [6,] -2.50e-01 2.22e-16 2.50e-01 8.33e-02 3.33e-01 5.83e-01
# Para comprobar que es una matriz idempotente multiplicamos la matriz P por ella misma y le restamos P
prueba <- (mat_p %*% mat_p) - mat_pprueba %>% round(digits = 3) %*% print(prueba)## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.00e+00 -5.55e-17 0.00e+00 -2.22e-16 -2.22e-16 -1.11e-16
## [2,] -5.55e-17 -5.55e-17 -1.11e-16 -1.11e-16 -9.25e-17 -1.80e-16
## [3,] 2.78e-17 -1.11e-16 -2.22e-16 2.78e-17 -8.33e-17 -1.94e-16
## [4,] 1.11e-16 2.36e-16 3.61e-16 2.22e-16 3.33e-16 3.61e-16
## [5,] 1.80e-16 2.22e-16 2.50e-16 2.78e-16 3.33e-16 3.33e-16
## [6,] 2.78e-16 1.94e-16 1.67e-16 4.02e-16 3.33e-16 3.33e-16
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0
## [6,] 0 0 0 0 0 0
Calcule la proyección de y sobre X, \(\hat{Y}\) = PY.
proyeccion_y <- mat_p %*% mat_yprint(proyeccion_y)## Y
## [1,] 87.5
## [2,] 100.0
## [3,] 112.5
## [4,] 135.8
## [5,] 148.3
## [6,] 160.8
Calcule la diferencia entre Y e \(\hat{Y}\).
matriz_m <- mat_y - proyeccion_yprint(matriz_m)## Y
## [1,] 2.50e+00
## [2,] 1.14e-13
## [3,] -2.50e+00
## [4,] -8.33e-01
## [5,] -3.33e+00
## [6,] 4.17e+00
Obtenga los autovalores de la matriz X’X ¿Son todos positivos? ¿Porqué?
autovalores <- eigen(sigma)print(autovalores$values)## [1] 98.357 1.378 0.266
# Sus autovalores son positivos porque es una matriz equivalenteObtenga los autovalores de la matriz P. Compruebe que la traza de P es igual a la suma de sus autovalores.
# Autovalores de la matriz P
autovalores_p <- eigen(mat_p)
sumautovalores <- sum(autovalores_p$values)
print(sumautovalores)## [1] 3
#Suma de la traza
traza <- sum(diag(mat_p))
print(traza)## [1] 3
Obtenga los autovalores de la matriz I-P y I+P
# Matriz Identidad
identidad <- diag(6)
matriz_ip <- identidad - mat_p
autovalores_matriz_ip <- eigen(matriz_ip)
# Autovalores de la matriz I - P
print(autovalores_matriz_ip$values)## [1] 1.00e+00 1.00e+00 1.00e+00 6.30e-16 2.42e-16 -8.48e-16
matriz_ip2 <- identidad + mat_p
autovalores_matriz_ip2 <- eigen(matriz_ip2)
# Autovalores de la matriz I+P
print(autovalores_matriz_ip2$values)## [1] 2 2 2 1 1 1