Cargar datos

library(readr)
Practica_2 <- read_csv("Practica_2.csv")
head(Practica_2, n=5)
## # A tibble: 5 x 3
##       Y    X1    X2
##   <dbl> <dbl> <dbl>
## 1   320    50   7.4
## 2   450    53   5.1
## 3   370    60   5.1
## 4   470    63   3.9
## 5   420    69   1.4

Cargar datos desde Excel

library(readxl)
Practica_2 <- read_excel("Practica_2.xlsx")
head(Practica_2,n=6)
## # A tibble: 6 x 3
##       Y    X1    X2
##   <dbl> <dbl> <dbl>
## 1   320    50   7.4
## 2   450    53   5.1
## 3   370    60   4.2
## 4   470    63   3.9
## 5   420    69   1.4
## 6   500    82   2.2

#Correr Modelo

library(stargazer)
modelo_clase<-lm(formula = Y~X1+X2+I(X1*X2), data = Practica_2)
# Usando Summary
summary(modelo_clase)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + I(X1 * X2), data = Practica_2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -108.527  -37.595   -2.745   52.292  102.808 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 303.50401   71.54695   4.242 0.000621 ***
## X1            2.32927    0.47698   4.883 0.000166 ***
## X2          -25.07113   11.48487  -2.183 0.044283 *  
## I(X1 * X2)    0.28617    0.07681   3.726 0.001840 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 67.68 on 16 degrees of freedom
## Multiple R-squared:  0.9634, Adjusted R-squared:  0.9566 
## F-statistic: 140.4 on 3 and 16 DF,  p-value: 1.054e-11
#Usando stargazer
stargazer(modelo_clase,title = "Practica_2",type = "text",digits = 6)
## 
## Practica
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                                  Y             
## -----------------------------------------------
## X1                          2.329275***        
##                             (0.476982)         
##                                                
## X2                         -25.071130**        
##                             (11.484870)        
##                                                
## I(X1 * X2)                  0.286169***        
##                             (0.076813)         
##                                                
## Constant                   303.504000***       
##                             (71.546950)        
##                                                
## -----------------------------------------------
## Observations                    20             
## R2                           0.963414          
## Adjusted R2                  0.956554          
## Residual Std. Error     67.677750 (df = 16)    
## F Statistic         140.440600*** (df = 3; 16) 
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01

Matrices A & P & M

mat_x<-model.matrix(modelo_clase)

#Matriz X'X
mat_xx<-t(mat_x)%*%mat_x
print(mat_xx)
##             (Intercept)        X1        X2 I(X1 * X2)
## (Intercept)        20.0    3036.0    121.20    18754.2
## X1               3036.0  574618.0  18754.20  3537032.8
## X2                121.2   18754.2    999.94   152648.7
## I(X1 * X2)      18754.2 3537032.8 152648.68 27682881.9
# Matriz A
solve(mat_xx)%*%t(mat_x)->mat_A
print(mat_A)
##                         1             2            3             4
## (Intercept) -0.0269643876  2.178606e-01  0.294409235  0.3152011324
## X1           0.0003999215 -1.025487e-03 -0.001444105 -0.0015490795
## X2           0.0388047049 -6.536309e-03 -0.022176619 -0.0266881805
## I(X1 * X2)  -0.0002334413  2.923967e-05  0.000116450  0.0001404267
##                         5             6             7             8
## (Intercept)  0.5227546767  0.3904003745  2.028464e-02  9.313148e-02
## X1          -0.0026669364 -0.0018298820  9.025813e-05 -2.321165e-04
## X2          -0.0659240840 -0.0449422757  1.799521e-02  3.797334e-03
## I(X1 * X2)   0.0003536128  0.0002236575 -9.921704e-05 -3.296119e-05
##                         9            10            11            12
## (Intercept) -0.2653043830 -0.2622967332  0.0443152123 -0.0545535472
## X1           0.0011696748  0.0005835039  0.0002043562  0.0012880664
## X2           0.0665768143  0.0616052800  0.0015591322  0.0122720018
## I(X1 * X2)  -0.0002833581 -0.0001595452 -0.0000370955 -0.0001763267
##                       13            14            15            16
## (Intercept) -0.072917817 -1.500641e-02 -0.2239786763 -0.3262481783
## X1           0.001143413  4.212596e-04  0.0024639940  0.0033485820
## X2           0.010376875 -4.020606e-03  0.0315412720  0.0476387398
## I(X1 * X2)  -0.000121078  2.711295e-05 -0.0003105392 -0.0004487073
##                        17            18            19            20
## (Intercept) -0.1381839072  0.1833273040  0.2993764155  0.0043929480
## X1           0.0015362166 -0.0014987044 -0.0025763624  0.0001734280
## X2           0.0122853632 -0.0478476959 -0.0696793809 -0.0166375793
## I(X1 * X2)  -0.0001273987  0.0004096502  0.0006014359  0.0001280827
# Matriz P
mat_xx%*%mat_A->mat_P
print(mat_P)
##                 1     2     3     4    5     6   7     8      9     10    11
## (Intercept)   1.0   1.0   1.0   1.0  1.0   1.0   1   1.0    1.0    1.0   1.0
## X1           50.0  53.0  60.0  63.0 69.0  82.0 100 104.0  113.0  130.0 150.0
## X2            7.4   5.1   4.2   3.9  1.4   2.2   7   5.7   13.1   16.4   5.1
## I(X1 * X2)  370.0 270.3 252.0 245.7 96.6 180.4 700 592.8 1480.3 2132.0 765.0
##                12    13     14    15    16     17     18     19     20
## (Intercept)   1.0   1.0    1.0   1.0   1.0    1.0    1.0    1.0    1.0
## X1          181.0 202.0  217.0 229.0 240.0  243.0  247.0  249.0  254.0
## X2            2.9   4.5    6.2   3.2   2.4    4.9    8.8   10.1    6.7
## I(X1 * X2)  524.9 909.0 1345.4 732.8 576.0 1190.7 2173.6 2514.9 1701.8
#Martiz M
mat_M<-diag(x=20,nrow = 4,ncol = 20)-mat_P
print(mat_M)
##                  1      2      3      4     5      6    7      8       9
## (Intercept)   19.0   -1.0   -1.0   -1.0  -1.0   -1.0   -1   -1.0    -1.0
## X1           -50.0  -33.0  -60.0  -63.0 -69.0  -82.0 -100 -104.0  -113.0
## X2            -7.4   -5.1   15.8   -3.9  -1.4   -2.2   -7   -5.7   -13.1
## I(X1 * X2)  -370.0 -270.3 -252.0 -225.7 -96.6 -180.4 -700 -592.8 -1480.3
##                  10     11     12     13      14     15     16      17      18
## (Intercept)    -1.0   -1.0   -1.0   -1.0    -1.0   -1.0   -1.0    -1.0    -1.0
## X1           -130.0 -150.0 -181.0 -202.0  -217.0 -229.0 -240.0  -243.0  -247.0
## X2            -16.4   -5.1   -2.9   -4.5    -6.2   -3.2   -2.4    -4.9    -8.8
## I(X1 * X2)  -2132.0 -765.0 -524.9 -909.0 -1345.4 -732.8 -576.0 -1190.7 -2173.6
##                  19      20
## (Intercept)    -1.0    -1.0
## X1           -249.0  -254.0
## X2            -10.1    -6.7
## I(X1 * X2)  -2514.9 -1701.8
Practica_2$Y->mat_Y
print(mat_Y)
##  [1]  320  450  370  470  420  500  570  640  670  780  690  700  910  930  940
## [16] 1070 1160 1210 1450 1220

#Vector de coeficiente estimado β

modelo_clase$coefficients
## (Intercept)          X1          X2  I(X1 * X2) 
## 303.5040143   2.3292746 -25.0711288   0.2861686

#Matriz Varianza-covarianza de los parametros V[β]

var_covar<-vcov(modelo_clase)
print(var_covar)
##             (Intercept)           X1           X2   I(X1 * X2)
## (Intercept)  5118.96645 -31.10997447 -722.8989902  4.493190281
## X1            -31.10997   0.22751204    4.5755139 -0.033223456
## X2           -722.89899   4.57551391  131.9021598 -0.822206343
## I(X1 * X2)      4.49319  -0.03322346   -0.8222063  0.005900226

#Intervalos de confianza

confint(object = modelo_clase,level = .95)
##                   2.5 %      97.5 %
## (Intercept) 151.8312499 455.1767786
## X1            1.3181175   3.3404318
## X2          -49.4179582  -0.7242993
## I(X1 * X2)    0.1233324   0.4490047

#Valores Ajustados Y

plot(modelo_clase$fitted.values,main = "Valores Ajustados",ylab = "Y",xlab = "Casos")

library(dplyr)
modelo_clase$fitted.values %>%as.matrix()
##         [,1]
## 1   340.3238
## 2   376.4442
## 3   410.0762
## 4   422.7825
## 5   456.7683
## 6   490.9729
## 7   561.2516
## 8   572.4839
## 9   661.8956
## 10  805.2546
## 11  743.9514
## 12  802.6063
## 13  921.3246
## 14 1038.5268
## 15  966.3846
## 16  967.1923
## 17 1087.4101
## 18 1280.2249
## 19 1349.9604
## 20 1214.1649

#Residuos del modelo

plot(modelo_clase$residuals,main = "Residuos",ylab = "Residuos",xlab = "casos")

library(dplyr)
modelo_clase$residuals %>%matrix()
##              [,1]
##  [1,]  -20.323767
##  [2,]   73.555820
##  [3,]  -40.076233
##  [4,]   47.217467
##  [5,]  -36.768268
##  [6,]    9.027138
##  [7,]    8.748419
##  [8,]   67.516125
##  [9,]    8.104393
## [10,]  -25.254613
## [11,]  -53.951414
## [12,] -102.606335
## [13,]  -11.324647
## [14,] -108.526815
## [15,]  -26.384626
## [16,]  102.807683
## [17,]   72.589856
## [18,]  -70.224936
## [19,]  100.039646
## [20,]    5.835106