Guía de Ejercicios MCO

Haciendo uso de sus conocimientos de econometría, y del software estadístico R1, resuelva los siguientes ejercicios:

Ejercicio 1.

Para una empresa se ha estimado un modelo que relaciona las ventas de 200 empresas, con su gasto en tv, radio, periodicos y la interacción entre tv y periodicos. Dicho modelo se encuentra en “modelo_ventas.RData.

Archivo con el que se trabajara.

options(scipen = 99999999)
load("C:/Users/50372/Desktop/Fatima U/Econometria/Guia de ejercicios MCO/modelo_ventas.RData")

1. Calcule las matrices A, P, M

# Construccion de Matrices 
matriz_X<-model.matrix(modelo_ventas)
matriz_XX<-t(matriz_X)%*%matriz_X

# Calculo de Matriz A 
matriz_A<-solve(matriz_XX)%*%t(matriz_X)
head(matriz_A[1:5, 1:5])
##                          1               2              3              4
## (Intercept) -0.01128647020  0.014103779728  0.03506391877  0.00042833810
## tv          -0.00006704103  0.000030949142 -0.00061201930 -0.00021206420
## periodico    0.00139818182 -0.001907246902 -0.00254688165  0.00022932432
## radio       -0.00058002134  0.000648666541 -0.00010932839 -0.00018997103
## tv:radio     0.00001481990  0.000001945347  0.00003260788  0.00001485919
##                          5
## (Intercept) -0.02802264005
## tv           0.00156830834
## periodico    0.00023142788
## radio        0.00061595623
## tv:radio    -0.00003937064
# Calculo de Matriz P
matriz_P<-matriz_X%*%matriz_A
n<-nrow(matriz_X)
head(matriz_P[1:10, 1:10])
##             1             2           3            4             5           6
## 1 0.031814594  0.0037034602  0.01758786  0.022508722  0.0059178537  0.01974129
## 2 0.003703460  0.0246048049  0.03447285  0.012120221 -0.0004597074  0.04154714
## 3 0.017587861  0.0344728495  0.06766822  0.026410473 -0.0141470892  0.08506815
## 4 0.022508722  0.0121202208  0.02641047  0.020319815 -0.0016776287  0.03138114
## 5 0.005917854 -0.0004597074 -0.01414709 -0.001677629  0.0483724641 -0.02300480
## 6 0.019741287  0.0415471420  0.08506815  0.031381139 -0.0230047960  0.10805317
##              7             8             9           10
## 1 -0.003964913 -0.0016071128 -0.0058291615  0.001421804
## 2  0.015101307  0.0024432890  0.0063462287 -0.003663155
## 3  0.012176441 -0.0003834528  0.0220657545 -0.003394744
## 4  0.003373267  0.0006504267  0.0009492958 -0.001311471
## 5  0.001419930 -0.0036539819 -0.0241326482  0.007110009
## 6  0.013397526 -0.0005956252  0.0324090899 -0.003700809
# Calculo de Matriz M
matriz_M<-diag(n)-matriz_P
head(matriz_M[1:10,1:10])
##              1             2           3            4             5           6
## 1  0.968185406 -0.0037034602 -0.01758786 -0.022508722 -0.0059178537 -0.01974129
## 2 -0.003703460  0.9753951951 -0.03447285 -0.012120221  0.0004597074 -0.04154714
## 3 -0.017587861 -0.0344728495  0.93233178 -0.026410473  0.0141470892 -0.08506815
## 4 -0.022508722 -0.0121202208 -0.02641047  0.979680185  0.0016776287 -0.03138114
## 5 -0.005917854  0.0004597074  0.01414709  0.001677629  0.9516275359  0.02300480
## 6 -0.019741287 -0.0415471420 -0.08506815 -0.031381139  0.0230047960  0.89194683
##              7             8             9           10
## 1  0.003964913  0.0016071128  0.0058291615 -0.001421804
## 2 -0.015101307 -0.0024432890 -0.0063462287  0.003663155
## 3 -0.012176441  0.0003834528 -0.0220657545  0.003394744
## 4 -0.003373267 -0.0006504267 -0.0009492958  0.001311471
## 5 -0.001419930  0.0036539819  0.0241326482 -0.007110009
## 6 -0.013397526  0.0005956252 -0.0324090899  0.003700809

2. Compruebe que los residuos en el objeto “modelo_ventas” son iguales al producto de M*y, donde “y” es la variable endogena en el modelo (“ventas”)

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_modelo","Diferencia")
head(comparacion)
##   por_matrices En_modelo Diferencia
## 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

3. Muestre que los autovalores de x’x son positivos (use el comando eigen)

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

Ejercicio 2.

Para una empresa se desea estimar un modelo que relaciona el tiempo (en minutos) en acomodar cajas en una bodega, en funciOn de la distancia (en metros) y del número de cajas nota: las cajas son todas iguales. Los datos se encuentra en “datos_cajas.RData”.

Archivo con el que se trabajara.

options(scipen = 999999999)
load("C:/Users/50372/Desktop/Fatima U/Econometria/Guia de ejercicios MCO/datos_cajas.RData")
View(datos_cajas)

1. Estime el modelo propuesto, y colOquele el nombre de “modelo_cajas”

modelos_cajas<-lm(formula= Tiempo~ Distancia+N_cajas,data = datos_cajas)
summary(modelos_cajas)
## 
## Call:
## lm(formula = Tiempo ~ Distancia + N_cajas, data = datos_cajas)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.2716 -0.5405  0.5212  1.4051  2.9381 
## 
## Coefficients:
##             Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)   2.3112     5.8573   0.395   0.70007    
## Distancia     0.4559     0.1468   3.107   0.00908 ** 
## N_cajas       0.8772     0.1530   5.732 0.0000943 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.141 on 12 degrees of freedom
## Multiple R-squared:  0.7368, Adjusted R-squared:  0.6929 
## F-statistic:  16.8 on 2 and 12 DF,  p-value: 0.0003325

2. Calcule las matrices A, P, M

# Construccion de matriz X
matrizz_X<-model.matrix(modelos_cajas)
matrizz_XX<-t(matrizz_X)%*%matrizz_X

# Matriz A
matrizz_A<-solve(matrizz_XX)%*%t(matrizz_X)
print(matrizz_A)
##                        1            2            3            4            5
## (Intercept)  0.459747079  0.505626389 -0.317731768  0.707001469  0.053149816
## Distancia   -0.003015297 -0.009318829  0.018819615 -0.019989342 -0.006641453
## N_cajas     -0.017147338 -0.009890695 -0.007919488 -0.004479623  0.011082085
##                        6            7            8             9          10
## (Intercept) -0.166576988  0.633594572 -0.125532551  0.1260628274 -0.90735239
## Distancia    0.006550474 -0.009903692  0.009409808  0.0003379213  0.02334256
## N_cajas      0.002768355 -0.016090251 -0.003959744 -0.0038254420  0.01780152
##                       11           12           13            14          15
## (Intercept)  0.277217608  0.368482344  0.487274665 -0.3674581822 -0.73350489
## Distancia   -0.011931220 -0.007473259 -0.006797416  0.0001559637  0.01645417
## N_cajas      0.006862401 -0.005142468 -0.012793352  0.0238754370  0.01885861
# Matriz P
matrizz_P<-matrizz_X%*%matrizz_A
n<-nrow(matrizz_X)
print(matrizz_P)
##              1            2           3            4           5           6
## 1   0.19781478  0.127154573  0.16766180  0.062524965 -0.03527291 0.057620774
## 2   0.12715457  0.124295239  0.03396629  0.140073563  0.05334477 0.038710181
## 3   0.16766180  0.033966286  0.35585795 -0.137368460 -0.10168744 0.123125512
## 4   0.06252497  0.140073563 -0.13736846  0.257600846  0.15524536 0.006698639
## 5  -0.03527291  0.053344771 -0.10168744  0.155245361  0.18408997 0.046742309
## 6   0.05762077  0.038710181  0.12312551  0.006698639  0.04674231 0.086318088
## 7   0.17558129  0.144648497  0.07654437  0.133523089  0.01345706 0.036955589
## 8   0.11716423  0.050316476  0.21126231 -0.035350897 -0.01751039 0.094896089
## 9   0.09794605  0.077129229  0.10132526  0.055636570  0.03786105 0.067680430
## 10 -0.02906036 -0.056765574  0.20436525 -0.131155907  0.05122193 0.136694350
## 11 -0.01209498  0.081873124 -0.13140718  0.199703669  0.18629079 0.030873007
## 12  0.09285990  0.104513848  0.01812731  0.131114317  0.07550894 0.044246890
## 13  0.15541865  0.125438973  0.08744449  0.109054124  0.01789770 0.046274418
## 14 -0.12402490 -0.005427535 -0.12246527  0.112857904  0.23285894 0.067134558
## 15 -0.05129385 -0.039271650  0.11324781 -0.060157783  0.09995191 0.116029165
##              7           8          9          10          11           12
## 1   0.17558129  0.11716423 0.09794605 -0.02906036 -0.01209498  0.092859897
## 2   0.14464850  0.05031648 0.07712923 -0.05676557  0.08187312  0.104513848
## 3   0.07654437  0.21126231 0.10132526  0.20436525 -0.13140718  0.018127310
## 4   0.13352309 -0.03535090 0.05563657 -0.13115591  0.19970367  0.131114317
## 5   0.01345706 -0.01751039 0.03786105  0.05122193  0.18629079  0.075508940
## 6   0.03695559  0.09489609 0.06768043  0.13669435  0.03087301  0.044246890
## 7   0.18301556  0.07160552 0.08894348 -0.08682757  0.04935470  0.112467995
## 8   0.07160552  0.13896449 0.08399596  0.13551596 -0.03237026  0.042396988
## 9   0.08894348  0.08399596 0.07465547  0.05440619  0.04101064  0.069478345
## 10 -0.08682757  0.13551596 0.05440619  0.34795579 -0.01326471 -0.021162536
## 11  0.04935470 -0.03237026 0.04101064 -0.01326471  0.20329083  0.095597926
## 12  0.11246799  0.04239699 0.06947834 -0.02116254  0.09559793  0.094228911
## 13  0.15702161  0.07705558 0.08545596 -0.04568349  0.04428588  0.099852268
## 14 -0.07689788 -0.02789930 0.01907176  0.16357209  0.20867158  0.042323339
## 15 -0.07939330  0.08995724 0.04540362  0.29018859  0.04818497 -0.001554438
##             13           14           15
## 1   0.15541865 -0.124024902 -0.051293849
## 2   0.12543897 -0.005427535 -0.039271650
## 3   0.08744449 -0.122465266  0.113247813
## 4   0.10905412  0.112857904 -0.060157783
## 5   0.01789770  0.232858944  0.099951911
## 6   0.04627442  0.067134558  0.116029165
## 7   0.15702161 -0.076897883 -0.079393301
## 8   0.07705558 -0.027899299  0.089957240
## 9   0.08545596  0.019071756  0.045403621
## 10 -0.04568349  0.163572088  0.290188586
## 11  0.04428588  0.208671580  0.048184973
## 12  0.09985227  0.042323339 -0.001554438
## 13  0.13743085 -0.052866482 -0.044080529
## 14 -0.05286648  0.352392093  0.210699107
## 15 -0.04408053  0.210699107  0.262089133
# Matriz M 
matrizz_M<-diag(n)-matrizz_P
print(matrizz_M)
##              1            2           3            4           5            6
## 1   0.80218522 -0.127154573 -0.16766180 -0.062524965  0.03527291 -0.057620774
## 2  -0.12715457  0.875704761 -0.03396629 -0.140073563 -0.05334477 -0.038710181
## 3  -0.16766180 -0.033966286  0.64414205  0.137368460  0.10168744 -0.123125512
## 4  -0.06252497 -0.140073563  0.13736846  0.742399154 -0.15524536 -0.006698639
## 5   0.03527291 -0.053344771  0.10168744 -0.155245361  0.81591003 -0.046742309
## 6  -0.05762077 -0.038710181 -0.12312551 -0.006698639 -0.04674231  0.913681912
## 7  -0.17558129 -0.144648497 -0.07654437 -0.133523089 -0.01345706 -0.036955589
## 8  -0.11716423 -0.050316476 -0.21126231  0.035350897  0.01751039 -0.094896089
## 9  -0.09794605 -0.077129229 -0.10132526 -0.055636570 -0.03786105 -0.067680430
## 10  0.02906036  0.056765574 -0.20436525  0.131155907 -0.05122193 -0.136694350
## 11  0.01209498 -0.081873124  0.13140718 -0.199703669 -0.18629079 -0.030873007
## 12 -0.09285990 -0.104513848 -0.01812731 -0.131114317 -0.07550894 -0.044246890
## 13 -0.15541865 -0.125438973 -0.08744449 -0.109054124 -0.01789770 -0.046274418
## 14  0.12402490  0.005427535  0.12246527 -0.112857904 -0.23285894 -0.067134558
## 15  0.05129385  0.039271650 -0.11324781  0.060157783 -0.09995191 -0.116029165
##              7           8           9          10          11           12
## 1  -0.17558129 -0.11716423 -0.09794605  0.02906036  0.01209498 -0.092859897
## 2  -0.14464850 -0.05031648 -0.07712923  0.05676557 -0.08187312 -0.104513848
## 3  -0.07654437 -0.21126231 -0.10132526 -0.20436525  0.13140718 -0.018127310
## 4  -0.13352309  0.03535090 -0.05563657  0.13115591 -0.19970367 -0.131114317
## 5  -0.01345706  0.01751039 -0.03786105 -0.05122193 -0.18629079 -0.075508940
## 6  -0.03695559 -0.09489609 -0.06768043 -0.13669435 -0.03087301 -0.044246890
## 7   0.81698444 -0.07160552 -0.08894348  0.08682757 -0.04935470 -0.112467995
## 8  -0.07160552  0.86103551 -0.08399596 -0.13551596  0.03237026 -0.042396988
## 9  -0.08894348 -0.08399596  0.92534453 -0.05440619 -0.04101064 -0.069478345
## 10  0.08682757 -0.13551596 -0.05440619  0.65204421  0.01326471  0.021162536
## 11 -0.04935470  0.03237026 -0.04101064  0.01326471  0.79670917 -0.095597926
## 12 -0.11246799 -0.04239699 -0.06947834  0.02116254 -0.09559793  0.905771089
## 13 -0.15702161 -0.07705558 -0.08545596  0.04568349 -0.04428588 -0.099852268
## 14  0.07689788  0.02789930 -0.01907176 -0.16357209 -0.20867158 -0.042323339
## 15  0.07939330 -0.08995724 -0.04540362 -0.29018859 -0.04818497  0.001554438
##             13           14           15
## 1  -0.15541865  0.124024902  0.051293849
## 2  -0.12543897  0.005427535  0.039271650
## 3  -0.08744449  0.122465266 -0.113247813
## 4  -0.10905412 -0.112857904  0.060157783
## 5  -0.01789770 -0.232858944 -0.099951911
## 6  -0.04627442 -0.067134558 -0.116029165
## 7  -0.15702161  0.076897883  0.079393301
## 8  -0.07705558  0.027899299 -0.089957240
## 9  -0.08545596 -0.019071756 -0.045403621
## 10  0.04568349 -0.163572088 -0.290188586
## 11 -0.04428588 -0.208671580 -0.048184973
## 12 -0.09985227 -0.042323339  0.001554438
## 13  0.86256915  0.052866482  0.044080529
## 14  0.05286648  0.647607907 -0.210699107
## 15  0.04408053 -0.210699107  0.737910867

3. Compruebe que los residuos en el objeto “modelo_ventas” son iguales al producto de M*y, donde “y” es la variable endógena en el modelo (“Tiempo”)

library(magrittr)
residuos_modelos<-modelos_cajas$residuals
matriz_y<-datos_cajas$Tiempo
residuos_por_matrices<-matrizz_M%*%matriz_y

cbind(residuos_modelos,residuos_por_matrices,residuos_modelos-residuos_por_matrices) %>% as.data.frame() %>% round(digits = 2) -> comparativa

names(comparativa)<-c("residuos_modelo","residuos_matrices","diferencia")
head(comparativa)
##   residuos_modelo residuos_matrices diferencia
## 1           -0.76             -0.76          0
## 2            0.13              0.13          0
## 3           -0.32             -0.32          0
## 4            2.94              2.94          0
## 5           -9.27             -9.27          0
## 6            0.77              0.77          0

4. Muestre que los autovalores de x’x son positivos (use el comando eigen)

descomposicion<-eigen(matrizz_XX)
autovalores<-descomposicion$values
print(autovalores)
## [1] 16976.7781334   709.9345923     0.2872743
print(autovalores>0)
## [1] TRUE TRUE TRUE

Ejercicio 3.

Para los EEUU se ha estimado un modelo que relaciona el “número de crímenes” en un estado con el “Nivel de pobreza” y la cantidad de solteros en el mismo. Dicho modelo se encuentra en “modelo_estimado.RData”

Archivo con el que se trabajara.

modelo_estimado<-load("C:/Users/50372/Desktop/Fatima U/Econometria/Guia de ejercicios MCO/modelo_estimado.RData")
View(modelo_estimado)

1. Calcule las matrices A, P, M

# Construccion de Matriz X
X <- model.matrix(modelo_estimado_1)
y <- modelo_estimado_1$model$crime

# Matriz A
A <- solve(t(X) %*% X) %*% t(X)


# Matriz P
P <- X %*% solve(t(X) %*% X) %*% t(X)

# Matriz M 
n <- nrow(X)
M<-diag(n)-P

2. Compruebe que los residuos en el objeto “modelo_estimado” son iguales al producto de M*y, donde “y” es la variable endógena en el modelo (“crime”) 3. Muestre que los autovalores de x’x son positivos (use el comando eigen)

residuos_modelo <- residuals(modelo_estimado_1)

residuos_M <- M%*%y

all.equal(as.vector(residuos_modelo), as.vector(residuos_M))
## [1] TRUE

Ejercicio 4.

Dentro del archivo “Investiment_Equation.xlsx” se encuentran datos para estimar una función de inversión, para un país, y contiene las siguientes variables.

Archivo con el que se trabajara.

library(readxl)
investment_equation <- read_excel("C:/Users/50372/Downloads/Investiment_Equation.xlsx")
View(investment_equation)

a) Estima la ecuacion de inversion, presenta sus resultados en formato APA.

# Calculo de Ecuacion de Inversion

ecuacion_inversion<-lm(formula = InvReal~Trend+Inflation+PNBr+Interest, data = investment_equation)

# Resultados en formato APA

library(stargazer)
stargazer(ecuacion_inversion, title = "Ecuacion de Inversion", type = "text")
## 
## Ecuacion de Inversion
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                               InvReal          
## -----------------------------------------------
## Trend                        -0.016***         
##                               (0.002)          
##                                                
## Inflation                     0.00002          
##                               (0.001)          
##                                                
## PNBr                         0.665***          
##                               (0.054)          
##                                                
## Interest                      -0.240*          
##                               (0.120)          
##                                                
## Constant                     -0.503***         
##                               (0.054)          
##                                                
## -----------------------------------------------
## Observations                    15             
## R2                             0.973           
## Adjusted R2                    0.962           
## Residual Std. Error       0.007 (df = 10)      
## F Statistic           90.089*** (df = 4; 10)   
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01

b) Calcule los residuos a traves de la matriz M

# Matriz M
model.matrix(ecuacion_inversion)->matrz_X
n<-nrow(matrz_X)
M<-diag(n)-matrz_X%*%solve(t(matrz_X)%*%matrz_X)%*%t(matrz_X)
Y<-investment_equation$InvReal
residuos<-M%*%Y
print(residuos)
##             [,1]
## 1  -0.0100602233
## 2  -0.0009290882
## 3   0.0029656679
## 4   0.0078576839
## 5   0.0028109133
## 6   0.0006259732
## 7   0.0075909286
## 8  -0.0055352778
## 9  -0.0037254127
## 10  0.0006953129
## 11  0.0019904770
## 12 -0.0001288433
## 13 -0.0101976729
## 14  0.0068712384
## 15 -0.0008316770

c) Calcule un intervalo de confianza del 93% para el impacto del PNBr en la Inversion, e interpretelo.

intervalo_confianza<-confint(object = ecuacion_inversion, parm = "PNBr", level = .93)
intervalo_confianza
##         3.5 %   96.5 %
## PNBr 0.554777 0.774317

Ejercicio 5.

Dentro del archivo “consumption_equation.RData” se encuentran objetos relacionados a una función de consumo, que se construyó usando las variables:

Archivo con el que se trabajara.

load("C:/Users/50372/Desktop/Fatima U/Econometria/Guia de ejercicios MCO/consumption_equation.RData")

a) Calcule los residuos del modelo.

consumo_estimado<-P%*%C
residuo_consumption<-C-consumo_estimado
head(residuo_consumption)
##         [,1]
## 1  -5.859103
## 2   2.605057
## 3  45.765735
## 4  31.102448
## 5 -21.037889
## 6   7.008120

b) Calcule la varianza del error del modelo.

# Varianza del error.

numero_obsrv<-length(C)
numero_parametros<-ncol(XX)
varianza_error<-as.numeric(t(residuo_consumption)%*%residuo_consumption/(numero_obsrv-numero_parametros))
varianza_error
## [1] 1428.746

c) Obtenga la matriz de Var-Cov del modelo.

# Matriz Var-Cov del modelo
var_cov<-varianza_error*solve(XX)
var_cov
##               (Intercept)             Yd               W             I
## (Intercept) 164.522304918 -0.09333539523  0.009670913575 10.5186890800
## Yd           -0.093335395  0.00018911268 -0.000032769561 -0.0072901023
## W             0.009670914 -0.00003276956  0.000006165749  0.0004193421
## I            10.518689080 -0.00729010228  0.000419342092  5.3203789879

d) Obtenga las estimaciones del Consumo, del modelo propuesto.

# Estimaciones del consumo
estimacion_consumo<-P%*%C
head(estimacion_consumo)
##        [,1]
## 1  982.2591
## 2  995.4949
## 3  979.5343
## 4 1059.7976
## 5 1128.1379
## 6 1135.3919

Ejercicio 6.

Dentro del archivo “datos_ventas.RData” se encuentran los datos para estimar una función de ventas, para una empresa, y contiene las siguientes variables:

Archivo con el que se trabajara.

load("C:/Users/50372/Desktop/Fatima U/Econometria/Guia de ejercicios MCO/datos_ventas.RData")
View(datos_ventas)

a) Estima la ecuación de ventas, presenta sus resultados en formato APA.

# Ecuacion de Ventas

ecuacion_ventas<-lm(ventas~tv+radio+periodico, data = datos_ventas)
summary(datos_ventas)
##        tv             radio          periodico         ventas      
##  Min.   :  0.30   Min.   : 0.000   Min.   : 1.60   Min.   :  0.70  
##  1st Qu.: 12.75   1st Qu.: 9.975   1st Qu.:10.38   1st Qu.: 74.38  
##  Median : 25.75   Median :22.900   Median :12.90   Median :149.75  
##  Mean   : 30.55   Mean   :23.264   Mean   :14.02   Mean   :147.04  
##  3rd Qu.: 45.10   3rd Qu.:36.525   3rd Qu.:17.40   3rd Qu.:218.82  
##  Max.   :114.00   Max.   :49.600   Max.   :27.00   Max.   :296.40
# Resultados en formato APA
library(stargazer)
stargazer(ecuacion_ventas, title = "Ecuacion de Ventas", type = "text")
## 
## Ecuacion de Ventas
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                               ventas           
## -----------------------------------------------
## tv                             0.045           
##                               (0.118)          
##                                                
## radio                        -3.450***         
##                               (0.206)          
##                                                
## periodico                    18.485***         
##                               (0.563)          
##                                                
## Constant                    -33.289***         
##                               (7.172)          
##                                                
## -----------------------------------------------
## Observations                    200            
## R2                             0.847           
## Adjusted R2                    0.844           
## Residual Std. Error      33.875 (df = 196)     
## F Statistic          360.758*** (df = 3; 196)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01

b) Calcule los residuos a través de la matriz M

# Matriz M

matrizX <- model.matrix(ecuacion_ventas)
y <- datos_ventas$ventas

n <- nrow(matrizX)
I <- diag(n)

M<- I - matrizX %*% solve(t(matrizX) %*% matrizX) %*% t(matrizX)
residuos_M <- M %*% y
head(residuos_M)
##        [,1]
## 1 -17.85246
## 2  19.08216
## 3  33.79319
## 4 -17.35090
## 5  10.25721
## 6  74.20385

c) Calcule un intervalo de confianza del 96.8% para el impacto del gasto de publicidad en TV, en las ventas, e interprételo.

# Intervalo de Confianza de TV

intervalo_de_tv<-confint(object = ecuacion_ventas, parm = "tv", level = 0.968)
intervalo_de_tv
##         1.6 %    98.4 %
## tv -0.2097376 0.2998052
# Interpretacion: Con un nivel de confianza del 96.8%, se estima que el verdadero impacto del gasto en publicidad en televisión sobre las ventas se encuentra entre −0.2097.