library(wooldridge)
data(hprice1)
head(force(hprice1),n=5) 
##   price assess bdrms lotsize sqrft colonial   lprice  lassess llotsize   lsqrft
## 1   300  349.1     4    6126  2438        1 5.703783 5.855359 8.720297 7.798934
## 2   370  351.5     3    9903  2076        1 5.913503 5.862210 9.200593 7.638198
## 3   191  217.7     3    5200  1374        0 5.252274 5.383118 8.556414 7.225482
## 4   195  231.8     3    4600  1448        1 5.273000 5.445875 8.433811 7.277938
## 5   373  319.1     4    6095  2514        1 5.921578 5.765504 8.715224 7.829630
  1. Estimación del modelo
library(stargazer)
options(scipen = 999999)
Modelo_Estimado2<-lm(formula = price~llotsize+sqrft+bdrms,data = hprice1)
stargazer(Modelo_Estimado2,title = "Modelo Estimado",type = "html")
Modelo Estimado
Dependent variable:
price
llotsize 56.154***
(11.785)
sqrft 0.110***
(0.013)
bdrms 15.728*
(8.465)
Constant -484.347***
(101.457)
Observations 88
R2 0.710
Adjusted R2 0.700
Residual Std. Error 56.269 (df = 84)
F Statistic 68.629*** (df = 3; 84)
Note: p<0.1; p<0.05; p<0.01
  1. Verifique si hay evidencia de la independencia de los regresores (no colinealidad), a través de:
  1. Indice de condición y prueba de FG, presente sus resultados de manera tabular en ambos casos y para la prueba de FG presente también sus resultados de forma gráfica usando la librería fastGraph

Indice de condición (forma manual)

Xmat2<-model.matrix(Modelo_Estimado2)
head(Xmat2,n=5)
##   (Intercept) llotsize sqrft bdrms
## 1           1 8.720297  2438     4
## 2           1 9.200593  2076     3
## 3           1 8.556414  1374     3
## 4           1 8.433811  1448     3
## 5           1 8.715224  2514     4
XXmat2<-t(Xmat2)%*%Xmat2
print(XXmat2)
##             (Intercept)     llotsize     sqrft      bdrms
## (Intercept)     88.0000     783.6492    177205    314.000
## llotsize       783.6492    7004.2300   1587280   2802.953
## sqrft       177205.0000 1587279.8995 385820561 654755.000
## bdrms          314.0000    2802.9529    654755   1182.000
# Sn matriz de normalización
Sn2<-diag(1/sqrt(diag(XXmat2)))
print(Sn2)
##           [,1]       [,2]          [,3]       [,4]
## [1,] 0.1066004 0.00000000 0.00000000000 0.00000000
## [2,] 0.0000000 0.01194868 0.00000000000 0.00000000
## [3,] 0.0000000 0.00000000 0.00005091049 0.00000000
## [4,] 0.0000000 0.00000000 0.00000000000 0.02908649
# Matriz normalizada
XXmat2_norm<-(Sn2%*%XXmat2)%*%Sn2
print(XXmat2_norm)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 1.0000000 0.9981600 0.9617052 0.9735978
## [2,] 0.9981600 1.0000000 0.9655630 0.9741523
## [3,] 0.9617052 0.9655630 1.0000000 0.9695661
## [4,] 0.9735978 0.9741523 0.9695661 1.0000000
# Autovalores
Lambas2<-eigen(XXmat2_norm,symmetric = TRUE)$values
print(Lambas2)
## [1] 3.921439097 0.049178714 0.027669061 0.001713128
#Indice de Condición
K2<-sqrt(max(Lambas2)/min(Lambas2))
print(K2)
## [1] 47.84404

Comentario: El indice de condición es de 47.84404, por lo tanto se concluye que la multicolinealidad es severa por que es mayor a 30.

Indice de condición usando “mctest”

library(mctest)
eigprop(Modelo_Estimado2)
## 
## Call:
## eigprop(mod = Modelo_Estimado2)
## 
##   Eigenvalues      CI (Intercept) llotsize  sqrft  bdrms
## 1      3.9214  1.0000      0.0002   0.0002 0.0031 0.0024
## 2      0.0492  8.9296      0.0174   0.0124 0.5230 0.0341
## 3      0.0277 11.9049      0.0031   0.0051 0.4033 0.9528
## 4      0.0017 47.8440      0.9794   0.9823 0.0706 0.0108
## 
## ===============================
## Row 4==> llotsize, proportion 0.982278 >= 0.50 
## Row 2==> sqrft, proportion 0.523017 >= 0.50 
## Row 3==> bdrms, proportion 0.952803 >= 0.50

Prueba de FG

library(fastGraph)
m2<-ncol(Xmat2[,-1])
n2<-nrow(Xmat2)
determinante2_R<-det(cor(Xmat2[,-1]))
chi_FG2<-(n2-1-(2*m2+5)/6)*log(determinante2_R)
print(chi_FG2)
## [1] -38.65568
#valor Critico
gl2<-m2*(m2-1)/2
VC2<-qchisq(0.05,gl2,lower.tail = FALSE)
print(VC2)
## [1] 7.814728
shadeDist(xshade = chi_FG2,ddist = "dchisq",parm1 = gl2,lower.tail = FALSE,sub = paste("VC:",VC2,"FG",chi_FG2))

Comentario: con los datos en el grafico se puede concluir que el VC es mayor a FG, por lo tanto se rechaza la Ho.

  1. Factores inflacionarios de la varianza, presente sus resultados de forma tabular y de forma gráfica.
VIF2<-diag(solve(cor(Xmat2[,-1])))
print(VIF2)
## llotsize    sqrft    bdrms 
## 1.129698 1.529185 1.393899

VIF con libreria car

library(car)
VIF2_car<-vif(Modelo_Estimado2)
print(VIF2_car)
## llotsize    sqrft    bdrms 
## 1.129698 1.529185 1.393899

VIF con libreria mctest

library(mctest)
mc.plot(Modelo_Estimado2,vif = 2)

Comentario: Al realizar la prueba con mctest con los VIF, existe un umbral de 2, esto da a conocer que hay un margen de tolerancia de colinealidad del 0.5, siendo Sqrt y bdrms el que más infla la varianza, esto nos permite conocer que existe un margen de colinealidad en los regresores.