Marzo de 2019

Especificando paquetes y ruta del archivo.

library(readr)
library(dplyr)

ruta_archivo<-
  ("F:/DOCUMENTOS/ejercicioeco/practica_1_ejercicio.csv")
datos<-read_csv(file=ruta_archivo)

Calculando matriz \(Y\).

datos %>% select("Y") %>%
  as.matrix() ->matrizY
print(matrizY)
##        Y
## [1,]  90
## [2,] 100
## [3,] 110
## [4,] 135
## [5,] 145
## [6,] 165

Calculando matriz \(X\).

datos %>% mutate(Cte=1) %>%
  select("Cte", "X1","X2") %>%
  as.matrix() ->matrizX
print(matrizX)
##      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

1. Calcule el producto escalar de la primera y segunda columnas de \(X\).

X1<- as.matrix(matrizX[,1])
X2<- as.matrix(matrizX[,2])
t(X1)%*%(X2) ->producto_col
print(producto_col)
##      [,1]
## [1,]   21

2. Calcule \(X'X\) y \(X'Y\).

XX<- t(matrizX)%*%(matrizX)
print (XX)
##     Cte X1 X2
## Cte   6 21  3
## X1   21 91 15
## X2    3 15  3
XY<- t(matrizX)%*%(matrizY)
print(XY)
##        Y
## Cte  745
## X1  2875
## X2   445

3. Obtenga la inversa de \(X'X\).

XX_inv<- solve(XX)
round (XX_inv, 3)
##        Cte    X1     X2
## Cte  1.333 -0.50  1.167
## X1  -0.500  0.25 -0.750
## X2   1.167 -0.75  2.917

4. Calcule el producto de \([X'X]^{-1}\) y \(X'Y\).

Beta<-(XX_inv)%*%(XY)
colnames(Beta)<- c("parámetros")
round(Beta, 3)
##     parámetros
## Cte     75.000
## X1      12.500
## X2      10.833

5. Calcule la matriz de proyeccción \(P\) compruebe que \(P\) es una matriz idempotente.

  • Calcular matriz de proyección P.
Proy<- (matrizX)%*%(XX_inv)%*%t(matrizX)
#'round'= redondea los elementos de la matriz a n cifras decimales.
round(Proy, digits = 3)
##        [,1]  [,2]   [,3]   [,4]  [,5]   [,6]
## [1,]  0.583 0.333  0.083  0.250 0.000 -0.250
## [2,]  0.333 0.333  0.333  0.000 0.000  0.000
## [3,]  0.083 0.333  0.583 -0.250 0.000  0.250
## [4,]  0.250 0.000 -0.250  0.583 0.333  0.083
## [5,]  0.000 0.000  0.000  0.333 0.333  0.333
## [6,] -0.250 0.000  0.250  0.083 0.333  0.583

5. Continuación.

  • Comprobar que P es una matriz idempotente.
Proy_idemp<-(Proy)%*%(Proy)
round(Proy_idemp, digits = 3)
##        [,1]  [,2]   [,3]   [,4]  [,5]   [,6]
## [1,]  0.583 0.333  0.083  0.250 0.000 -0.250
## [2,]  0.333 0.333  0.333  0.000 0.000  0.000
## [3,]  0.083 0.333  0.583 -0.250 0.000  0.250
## [4,]  0.250 0.000 -0.250  0.583 0.333  0.083
## [5,]  0.000 0.000  0.000  0.333 0.333  0.333
## [6,] -0.250 0.000  0.250  0.083 0.333  0.583

6. Calcule la proyección de \(Y\) sobre \(X\), \(\hat{Y}\) = \(PY\).

Yproy<- Proy%*%(matrizY)
round(Yproy, digits = 3)
##            Y
## [1,]  87.500
## [2,] 100.000
## [3,] 112.500
## [4,] 135.833
## [5,] 148.333
## [6,] 160.833

7. Calcule la diferencia entre \(Y\) e \(\hat{Y}\).

Ydif<- matrizY-(Yproy)
round(Ydif, digits = 3)
##           Y
## [1,]  2.500
## [2,]  0.000
## [3,] -2.500
## [4,] -0.833
## [5,] -3.333
## [6,]  4.167

8. Obtenga los autovalores de la matriz \(X'X\) ¿Son todos positivos? ¿Porqué?

XX_autovalores<- eigen(XX)$values
round(XX_autovalores, digits = 3)
## [1] 98.357  1.378  0.266

Sí, son todos positivos, lo que significa que es una matriz definida positiva, su punto crítico es un mínimo.

9. Obtenga los autovalores de la matriz \(P\). Compruebe que la traza de \(P\) es igual a la suma de sus autovalores.

Proy_autovalores<- eigen(Proy)$values
Suma_PA<- sum(Proy_autovalores)
print(Suma_PA)
## [1] 3
trazaProy<- sum(diag(Proy))
print(trazaProy)
## [1] 3

10. Obtenga los autovalores de la matriz \(I-P\) y \(I+P\).

-Creando matriz I.

matrizI<- diag(1,
           nrow = 6,
           ncol = 6)
print(matrizI)
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    1    0    0    0    0    0
## [2,]    0    1    0    0    0    0
## [3,]    0    0    1    0    0    0
## [4,]    0    0    0    1    0    0
## [5,]    0    0    0    0    1    0
## [6,]    0    0    0    0    0    1

10. Continuación.

-Calculo de la matriz I-P.

ImenosP<- (matrizI)-(Proy)
round(ImenosP, 3)
##        [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
## [1,]  0.417 -0.333 -0.083 -0.250  0.000  0.250
## [2,] -0.333  0.667 -0.333  0.000  0.000  0.000
## [3,] -0.083 -0.333  0.417  0.250  0.000 -0.250
## [4,] -0.250  0.000  0.250  0.417 -0.333 -0.083
## [5,]  0.000  0.000  0.000 -0.333  0.667 -0.333
## [6,]  0.250  0.000 -0.250 -0.083 -0.333  0.417

10. Continuación.

-Autovalores de la matriz I-P.

Autovalores.ImenosP<- eigen(ImenosP)$values
round(Autovalores.ImenosP, digits = 3)
## [1] 1 1 1 0 0 0

10. Continuación.

-Calculo de la matriz I+P.

ImasP<- (matrizI)+(Proy)
round(ImasP, digits = 3)
##        [,1]  [,2]   [,3]   [,4]  [,5]   [,6]
## [1,]  1.583 0.333  0.083  0.250 0.000 -0.250
## [2,]  0.333 1.333  0.333  0.000 0.000  0.000
## [3,]  0.083 0.333  1.583 -0.250 0.000  0.250
## [4,]  0.250 0.000 -0.250  1.583 0.333  0.083
## [5,]  0.000 0.000  0.000  0.333 1.333  0.333
## [6,] -0.250 0.000  0.250  0.083 0.333  1.583

10. Continuación.

-Autovalores de la matriz I+P.

Autovalores.ImasP<- eigen(ImasP)$values
print(Autovalores.ImasP)
## [1] 2 2 2 1 1 1