library(wooldridge)
library(printr)
data(hprice1)
head(force(hprice1),n=5)
price assess bdrms lotsize sqrft colonial lprice lassess llotsize lsqrft
300 349.1 4 6126 2438 1 5.703783 5.855359 8.720297 7.798934
370 351.5 3 9903 2076 1 5.913503 5.862210 9.200593 7.638198
191 217.7 3 5200 1374 0 5.252274 5.383118 8.556414 7.225481
195 231.8 3 4600 1448 1 5.273000 5.445875 8.433811 7.277938
373 319.1 4 6095 2514 1 5.921578 5.765504 8.715224 7.829630

Estimando el modelo

modelo_precio<-lm(formula = price~lotsize+sqrft+bdrms,data = hprice1)
library(stargazer)
stargazer(modelo_precio,title="Modelo Precio",type = "html", digits=4)
Modelo Precio
Dependent variable:
price
lotsize 0.0021***
(0.0006)
sqrft 0.1228***
(0.0132)
bdrms 13.8525
(9.0101)
Constant -21.7703
(29.4750)
Observations 88
R2 0.6724
Adjusted R2 0.6607
Residual Std. Error 59.8335 (df = 84)
F Statistic 57.4602*** (df = 3; 84)
Note: p<0.1; p<0.05; p<0.01

Verificación de la independencia de los regresores

Indice de condicion

\(\kappa (x)= \sqrt {\lambda_{max}\over \lambda_{min}}\)

si \(\kappa (x)<20\) : Multicolinalidad leve

si \(20\leq\kappa (x)<30\) : Multicolinalidad moderada

si \(\kappa (x)\geq30\) : Multicolinalidad severa

library(mctest)
eigprop(modelo_precio)
## 
## Call:
## eigprop(mod = modelo_precio)
## 
##   Eigenvalues      CI (Intercept) lotsize  sqrft  bdrms
## 1      3.4816  1.0000      0.0037  0.0278 0.0042 0.0029
## 2      0.4552  2.7656      0.0068  0.9671 0.0061 0.0051
## 3      0.0385  9.5082      0.4726  0.0051 0.8161 0.0169
## 4      0.0247 11.8678      0.5170  0.0000 0.1737 0.9750
## 
## ===============================
## Row 2==> lotsize, proportion 0.967080 >= 0.50 
## Row 3==> sqrft, proportion 0.816079 >= 0.50 
## Row 4==> bdrms, proportion 0.975026 >= 0.50

Con un indice de \(\kappa (x)=11.8678\) se puede decir que nuestro modelo tiene multicolinealidad leve

Calculo de la matriz X

library(printr)
mat.X<-model.matrix(modelo_precio)
head(mat.X,n=10)
(Intercept) lotsize sqrft bdrms
1 6126 2438 4
1 9903 2076 3
1 5200 1374 3
1 4600 1448 3
1 6095 2514 4
1 8566 2754 5
1 9000 2067 3
1 6210 1731 3
1 6000 1767 3
1 2892 1890 3
m<-ncol(mat.X[,-1])
gl<-(m*(m-1))/2

library(psych)
FG.test<-cortest.bartlett(mat.X[,-1])
print(FG.test)
## $chisq
## [1] 31.38122
## 
## $p.value
## [1] 0.0000007065806
## 
## $df
## [1] 3
VC<-qchisq(p = 0.95,df = gl)
print(VC)
## [1] 7.814728
print(FG.test$chisq>VC)
## [1] TRUE
library(fastGraph)
shadeDist(FG.test$chisq,ddist = 'dchisq',col=c('black','darkgreen'),parm1 =VC,lower.tail = FALSE)

Como \(\chi^2_{FG}>VC\) se rechaza la hipotesis nula y se dice que existe evidencia de multicolinealidad

Calculo de los VIF’s

library(car)
VIFs<-vif(modelo_precio)
print(VIFs)
##  lotsize    sqrft    bdrms 
## 1.037211 1.418654 1.396663
library(mctest)
mc.plot(modelo_precio,vif=2)