Operaciones con matrices en R

MSF Ademir Pérez

Práctica 1 uso de R, y RStudio; Econometría UES

Ingreso de matrices

En esta práctica se aborda, de manera sencilla, como se pueden realizar las operaciones con matrices en R

# los siguientes datos, se han obtenido de la tabla 4.1 del libro de Maddalla, Introducción a la Econometría:
#Variable dependiente
Y<-matrix(data = c(30,20,36,24,40),
          nrow = 5,
          ncol = 1,byrow = TRUE)
colnames(Y) <-c("Y")
print(Y)
##       Y
## [1,] 30
## [2,] 20
## [3,] 36
## [4,] 24
## [5,] 40
#Variables Explicativas y la columna del término independiente

X<-cbind(rep(x = 1,5),
         matrix(data = c(4,10,3,8,6,11,4,9, 8,12),
                nrow = 5,
                ncol = 2,
                byrow = TRUE))
colnames(X)<-c("Cte","X1","X2")
print(X)
##      Cte X1 X2
## [1,]   1  4 10
## [2,]   1  3  8
## [3,]   1  6 11
## [4,]   1  4  9
## [5,]   1  8 12

Importando los datos de un archivo csv (separado por comas)

Descargue el siguiente archivo practica_1.csv

library(readr)
library(dplyr)
# la ruta cambiará en su maquina
archivo<-"D:/practicas/practica_1.csv"
datos<-read_csv(file = archivo)
Y_<-datos %>% select("Y") %>% as.matrix()
temp<-
X_<-datos %>%  mutate(Cte=1) %>% select("Cte","X1","X2") %>% as.matrix()
print(X_)
##      Cte X1 X2
## [1,]   1  4 10
## [2,]   1  3  8
## [3,]   1  6 11
## [4,]   1  4  9
## [5,]   1  8 12
print(Y_)
##       Y
## [1,] 30
## [2,] 20
## [3,] 36
## [4,] 24
## [5,] 40

Calculando el producto de matrices

Para multiplicar matrices se usará el comando %*%, para transponer se usará el comando t()

#Se usarán las matrices X & Y creadas previamente
#la siguiente operación obtiene la matriz X'X
XX<-t(X)%*%X
print(XX)
##     Cte  X1  X2
## Cte   5  25  50
## X1   25 141 262
## X2   50 262 510
#La siguiente operación obtiene la matriz X'Y
XY<-t(X)%*%Y %>% as.matrix()
print(XY)
##        Y
## Cte  150
## X1   812
## X2  1552

Calculando la inversa de matrices

En el caso de la obtención de inversas, se utilizará el comando solve()

XX_inv<-solve(XX)
print(XX_inv)
##        Cte     X1    X2
## Cte 40.825  4.375 -6.25
## X1   4.375  0.625 -0.75
## X2  -6.250 -0.750  1.00

Obtención del Estimador MCO \(\widehat{\beta}\):

Beta<-XX_inv%*%XY
colnames(Beta)<-c("parámetros")
print(Beta)
##     parámetros
## Cte     -23.75
## X1       -0.25
## X2        5.50
Beta_<-solve(a = XX,b = XY)
colnames(Beta_)<-c("parámetros")
print(Beta_)
##     parámetros
## Cte     -23.75
## X1       -0.25
## X2        5.50

obtención de autovalores y autovectores

autovalores<-eigen(XX)
#Muestra los autovalores y los autovectores
print(autovalores)
## eigen() decomposition
## $values
## [1] 650.78185037   5.19448432   0.02366531
## 
## $vectors
##             [,1]       [,2]       [,3]
## [1,] -0.08623239  0.1629390  0.9828606
## [2,] -0.45874789 -0.8822205  0.1060061
## [3,] -0.88437229  0.4417441 -0.1508239
#Muestra sólo los autovalores
print(autovalores$values)
## [1] 650.78185037   5.19448432   0.02366531

Ejercicios práctica 1

datos ejercicio práctica 1

  1. Calcule el producto escalar de la primera y segunda columnas de \(X\).
  2. Calcule \(X'X\) y \(X'Y\).
  3. Obtenga la inversa de \(X'X\).
  4. Calcule el producto de \([X'X]^{-1}\) y \(X'Y\).
  5. Calcule la matriz de proyeccción \(P\) compruebe que \(P\) es una matriz idempotente.
  6. Calcule la proyección de y sobre \(X\), \(\widehat{Y}\) = \(PY\).
  7. Calcule la diferencia entre \(Y\) e \(\widehat{Y}\).
  8. Obtenga los autovalores de la matriz \(X'X\) ¿Son todos positivos? ¿Porqué?
  9. Obtenga los autovalores de la matriz \(P\). Compruebe que la traza de \(P\) es igual a la suma de sus autovalores.
  10. Obtenga los autovalores de la matriz \(I − P\) y \(I + P\)
Datos del Prof. Dr. José Luis Gallego Gómez, Departamento de Economía. Universidad de Cantabria, Apuntes de Econometría. LADE y LE. Curso 2008-2009, Reproducido para fines de docencia