library(haven)
hprice1<-read_dta("C:/Users/Walter Alemán/Desktop/UES V/ECONOMETRIA/Ejercicios/hprice1.dta")
head(hprice1, n=6)
## # A tibble: 6 × 10
##   price assess bdrms lotsize sqrft colonial lprice lassess llotsize lsqrft
##   <dbl>  <dbl> <dbl>   <dbl> <dbl>    <dbl>  <dbl>   <dbl>    <dbl>  <dbl>
## 1  300    349.     4    6126  2438        1   5.70    5.86     8.72   7.80
## 2  370    352.     3    9903  2076        1   5.91    5.86     9.20   7.64
## 3  191    218.     3    5200  1374        0   5.25    5.38     8.56   7.23
## 4  195    232.     3    4600  1448        1   5.27    5.45     8.43   7.28
## 5  373    319.     4    6095  2514        1   5.92    5.77     8.72   7.83
## 6  466.   414.     5    8566  2754        1   6.14    6.03     9.06   7.92

Ejercicio 1: Estimar el Modelo

library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
Estima_HP1<-lm(formula = price~lotsize+sqrft+bdrms, data=hprice1)
stargazer(Estima_HP1, title = "Estimador de Hprice1", type = "text")
## 
## Estimador de Hprice1
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                                price           
## -----------------------------------------------
## lotsize                      0.002***          
##                               (0.001)          
##                                                
## sqrft                        0.123***          
##                               (0.013)          
##                                                
## bdrms                         13.853           
##                               (9.010)          
##                                                
## Constant                      -21.770          
##                              (29.475)          
##                                                
## -----------------------------------------------
## Observations                    88             
## R2                             0.672           
## Adjusted R2                    0.661           
## Residual Std. Error      59.833 (df = 84)      
## F Statistic           57.460*** (df = 3; 84)   
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01

Ejercicio 2: Verifique si hay evidencia de la independencia de los regresores (no colinealidad).

2.1 Indice de Condición

2.1.1 Calculo manual

library(stargazer)
X_mat<-model.matrix(Estima_HP1)
stargazer(head(X_mat, n=6), type = "text")
## 
## =================================
##   (Intercept) lotsize sqrft bdrms
## ---------------------------------
## 1      1       6,126  2,438   4  
## 2      1       9,903  2,076   3  
## 3      1       5,200  1,374   3  
## 4      1       4,600  1,448   3  
## 5      1       6,095  2,514   4  
## 6      1       8,566  2,754   5  
## ---------------------------------
XX_mat<-t(X_mat)%*%X_mat
stargazer(XX_mat, type = "text")
## 
## ==============================================================
##             (Intercept)    lotsize         sqrft       bdrms  
## --------------------------------------------------------------
## (Intercept)     88         793,748        177,205       314   
## lotsize       793,748   16,165,159,010 1,692,290,257 2,933,767
## sqrft         177,205   1,692,290,257   385,820,561   654,755 
## bdrms           314       2,933,767       654,755      1,182  
## --------------------------------------------------------------
library(stargazer)
options(scipen = 9999)
Sn<-solve(diag(sqrt(diag(XX_mat))))
stargazer(Sn, type = "text")
## 
## ==========================
## 0.107    0      0      0  
## 0     0.00001   0      0  
## 0        0    0.0001   0  
## 0        0      0    0.029
## --------------------------
library(stargazer)
XX_norm<-(Sn%*%XX_mat)%*%Sn
stargazer(XX_norm, type = "text", digits = 4)
## 
## ===========================
## 1      0.6655 0.9617 0.9736
## 0.6655   1    0.6776 0.6712
## 0.9617 0.6776   1    0.9696
## 0.9736 0.6712 0.9696   1   
## ---------------------------
library(stargazer)

#Autovalores

lambdas<-eigen(XX_norm, symmetric = TRUE)
stargazer(lambdas$values, type = "text")
## 
## =======================
## 3.482 0.455 0.039 0.025
## -----------------------
k<-sqrt(max(lambdas$values)/min(lambdas$values))
print(k)
## [1] 11.86778

Como κ(x)<20 la multicolinealidad es leve, no se considera un problema.

la multicolinealidad es leve y no se considera un problema. Esto significa que la correlación entre las variables independientes en el modelo no es muy alta y no hay una presencia significativa de multicolinealidad que pueda afectar las estimaciones de los coeficientes de regresión.

Cuando la multicolinealidad es leve, los coeficientes de regresión aún pueden ser interpretados con cierta confianza y pueden proporcionar información válida sobre la relación entre las variables independientes y la variable dependiente.

2.1.2 Calculo del Indice de Condición usando librería “mctest”

library(mctest)
X_mat<-model.matrix(Estima_HP1)
mctest(mod = Estima_HP1)
## 
## Call:
## omcdiag(mod = mod, Inter = TRUE, detr = detr, red = red, conf = conf, 
##     theil = theil, cn = cn)
## 
## 
## Overall Multicollinearity Diagnostics
## 
##                        MC Results detection
## Determinant |X'X|:         0.6918         0
## Farrar Chi-Square:        31.3812         1
## Red Indicator:             0.3341         0
## Sum of Lambda Inverse:     3.8525         0
## Theil's Method:           -0.7297         0
## Condition Number:         11.8678         0
## 
## 1 --> COLLINEARITY is detected by the test 
## 0 --> COLLINEARITY is not detected by the test

2.1.3 Calculo del Indice de Condición usando librería “olsrr”

library(olsrr)
## 
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
## 
##     rivers
ols_eigen_cindex(model = Estima_HP1)
##   Eigenvalue Condition Index   intercept      lotsize       sqrft       bdrms
## 1 3.48158596        1.000000 0.003663034 0.0277802824 0.004156293 0.002939554
## 2 0.45518380        2.765637 0.006800735 0.9670803174 0.006067321 0.005096396
## 3 0.03851083        9.508174 0.472581427 0.0051085488 0.816079307 0.016938178
## 4 0.02471941       11.867781 0.516954804 0.0000308514 0.173697079 0.975025872

2.2 Prueba de Farrar Glaubar

library(stargazer)
Zn<-scale(X_mat[,-1])
stargazer(head(Zn, n=6), type = "text")
## 
## =======================
##   lotsize sqrft  bdrms 
## -----------------------
## 1 -0.284  0.735  0.513 
## 2  0.087  0.108  -0.675
## 3 -0.375  -1.108 -0.675
## 4 -0.434  -0.980 -0.675
## 5 -0.287  0.867  0.513 
## 6 -0.045  1.283  1.702 
## -----------------------

2.2.1 Calculo Matiz R

library(stargazer)
n<-nrow(Zn)
R<-(t(Zn)%*%Zn)*(1/(n-1))
stargazer(R, type = "text", digits = 4)
## 
## =============================
##         lotsize sqrft  bdrms 
## -----------------------------
## lotsize    1    0.1838 0.1363
## sqrft   0.1838    1    0.5315
## bdrms   0.1363  0.5315   1   
## -----------------------------

2.2.2 Calcular R

determinante_R<-det(R)
print(determinante_R)
## [1] 0.6917931

2.2.3 Aplicando la prueba de Farrer Glaubar (Bartlett)

m<-ncol(X_mat[,-1])
n<-nrow(X_mat[,-1])
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 31.38122

Valor critico

gl<-m*(m-1)/2
VC<-qchisq(p = 0.95, df = gl)
print(VC)
## [1] 7.814728

Regla de decision:

Como χ2FG≥V.C. se rechaza H0 , por lo tanto hay evidencia de colinealidad en los regresores. Esto significa que existe evidencia estadística para concluir que hay colinealidad en los regresores del modelo, lo que indica una relación fuerte y lineal entre algunas de las variables independientes utilizadas en la regresión.

Grafica

library(fastGraph)
alpha_sig<-0.05
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
gl<-m*(m-1)/2
VC<-qchisq(p = 0.95, df = gl)
shadeDist(chi_FG, ddist = "dchisq",
          parm1 = gl,
          lower.tail = FALSE,xmin = 0,
          sub=paste("VC:", round(VC,2)," ","chi_FG:", round(chi_FG,2)))

### Como se oberva en la grafica

2.2.4 Cálculo de FG usando “mctest”

library(mctest)
mctest::omcdiag(mod = Estima_HP1)
## 
## Call:
## mctest::omcdiag(mod = Estima_HP1)
## 
## 
## Overall Multicollinearity Diagnostics
## 
##                        MC Results detection
## Determinant |X'X|:         0.6918         0
## Farrar Chi-Square:        31.3812         1
## Red Indicator:             0.3341         0
## Sum of Lambda Inverse:     3.8525         0
## Theil's Method:           -0.7297         0
## Condition Number:         11.8678         0
## 
## 1 --> COLLINEARITY is detected by the test 
## 0 --> COLLINEARITY is not detected by the test

2.2.5 Cálculo de FG usando la “psych”

library(psych)
FG_test<-cortest.bartlett(X_mat[,-1])
## R was not square, finding R from data
print(FG_test)
## $chisq
## [1] 31.38122
## 
## $p.value
## [1] 0.0000007065806
## 
## $df
## [1] 3

Ejercicio 3: Factores inflacionarios de la varianza.

3.1 Factores Inflacionarios de la Varianza (FIV)

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
R.cuadrado.regresores<-c(0,0.5,.8,.9)
as.data.frame(R.cuadrado.regresores) %>% mutate(VIF = 1/(1-R.cuadrado.regresores))
##   R.cuadrado.regresores VIF
## 1                   0.0   1
## 2                   0.5   2
## 3                   0.8   5
## 4                   0.9  10
print(R)
##           lotsize     sqrft     bdrms
## lotsize 1.0000000 0.1838422 0.1363256
## sqrft   0.1838422 1.0000000 0.5314736
## bdrms   0.1363256 0.5314736 1.0000000
inversa_R<-solve(R)
print(inversa_R)
##             lotsize      sqrft       bdrms
## lotsize  1.03721145 -0.1610145 -0.05582352
## sqrft   -0.16101454  1.4186543 -0.73202696
## bdrms   -0.05582352 -0.7320270  1.39666321
VIFs<-diag(inversa_R)
print(VIFs)
##  lotsize    sqrft    bdrms 
## 1.037211 1.418654 1.396663

3.2 Cálculo de los VIF’s usando “performance”

library(performance)
VIFs<-multicollinearity(x = Estima_HP1, verbose = FALSE)
VIFs
## # Check for Multicollinearity
## 
## Low Correlation
## 
##     Term  VIF    VIF 95% CI Increased SE Tolerance Tolerance 95% CI
##  lotsize 1.04 [1.00, 11.02]         1.02      0.96     [0.09, 1.00]
##    sqrft 1.42 [1.18,  1.98]         1.19      0.70     [0.51, 0.85]
##    bdrms 1.40 [1.17,  1.95]         1.18      0.72     [0.51, 0.86]
plot(VIFs)
## Variable `Component` is not in your data frame :/

## 3.3 Cálculo de los VIF’s usando “car”

library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:psych':
## 
##     logit
ViFs_car<-vif(Estima_HP1)
print(ViFs_car)
##  lotsize    sqrft    bdrms 
## 1.037211 1.418654 1.396663

Si el IVF de la diferencia es cercano a 1, esto indica que esta diferencia no está significativamente relacionada con los demás predictores del modelo. Por lo tanto, se supone que no existe una alta multicolinealidad ni una influencia excesiva en los coeficientes del modelo.

En base a los resultados, se puede decir que las variables “lotsize”, “sqrft” y “bdrms” no están altamente correlacionadas entre sí, ya que sus FIV están cerca de 1. Esto es una buena señal en términos de evitar problemas de multicolinealidad.

3.41 Cálculo de los VIF’s usando “mctest”

library(mctest)
mc.plot(mod = Estima_HP1, vif = 2)