numeral 1

options(scipen = 99999)
load("C:/Users/gusta_000/Desktop/Econometria/Guia/modelo_ventas.RData")
matriz_X <- model.matrix(modelo_ventas)
matriz_XX <- t(matriz_X)%*%matriz_X
#Calculo de la matriz A
matriz_A <- solve(matriz_XX)%*%t(matriz_X)
matriz_A[1:4,1:4]
##                          1              2             3             4
## (Intercept) -0.01128647020  0.01410377973  0.0350639188  0.0004283381
## tv          -0.00006704103  0.00003094914 -0.0006120193 -0.0002120642
## periodico    0.00139818182 -0.00190724690 -0.0025468816  0.0002293243
## radio       -0.00058002134  0.00064866654 -0.0001093284 -0.0001899710
#Calculo de la matriz P
matriz_P <- matriz_X%*%matriz_A
matriz_P[1:4,1:4]
##            1          2          3          4
## 1 0.03181459 0.00370346 0.01758786 0.02250872
## 2 0.00370346 0.02460480 0.03447285 0.01212022
## 3 0.01758786 0.03447285 0.06766822 0.02641047
## 4 0.02250872 0.01212022 0.02641047 0.02031981
#Calculo de la matriz M
n <- nrow(matriz_X)
matriz_M <- diag(n)-matriz_P
matriz_M[1:4,1:4]
##             1           2           3           4
## 1  0.96818541 -0.00370346 -0.01758786 -0.02250872
## 2 -0.00370346  0.97539520 -0.03447285 -0.01212022
## 3 -0.01758786 -0.03447285  0.93233178 -0.02641047
## 4 -0.02250872 -0.01212022 -0.02641047  0.97968019

numeral 2

library(magrittr)
residuos_modelo_ventas <- modelo_ventas$residuals
datos_modelo <- modelo_ventas$model
residuos_matrices <- matriz_M%*%datos_modelo$ventas
cbind(residuos_matrices,residuos_modelo_ventas, residuos_modelo_ventas-residuos_matrices)%>%round(digits = 2) %>% as.data.frame() -> comparacion
names(comparacion) <- c("Por matrices", "En el modelo", "Diferencias")
head(comparacion, n = 10)
##    Por matrices En el modelo Diferencias
## 1        -15.93       -15.93           0
## 2         19.33        19.33           0
## 3         38.02        38.02           0
## 4        -15.43       -15.43           0
## 5          5.16         5.16           0
## 6         80.22        80.22           0
## 7        -16.35       -16.35           0
## 8        -22.89       -22.89           0
## 9        -34.40       -34.40           0
## 10        46.09        46.09           0

numeral 3

eigen(x = matriz_XX, symmetric = TRUE) -> descomposicion
auto_valores <- descomposicion$values
print(auto_valores)
## [1] 311421698.6388     70252.5341     40973.4590      3714.3627        12.7735
print(auto_valores>0)
## [1] TRUE TRUE TRUE TRUE TRUE