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
modelo_lineal<-lm(formula =   price ~lotsize+sqrft+bdrms, data = hprice1)
summary(modelo_lineal)
## 
## Call:
## lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -120.026  -38.530   -6.555   32.323  209.376 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.177e+01  2.948e+01  -0.739  0.46221    
## lotsize      2.068e-03  6.421e-04   3.220  0.00182 ** 
## sqrft        1.228e-01  1.324e-02   9.275 1.66e-14 ***
## bdrms        1.385e+01  9.010e+00   1.537  0.12795    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 59.83 on 84 degrees of freedom
## Multiple R-squared:  0.6724, Adjusted R-squared:  0.6607 
## F-statistic: 57.46 on 3 and 84 DF,  p-value: < 2.2e-16

#Literal A

library(stargazer)
#matriz x
matriz_x<-model.matrix(modelo_lineal)
#matriz xx
matriz_xx<-t(matriz_x)%*%matriz_x
#matriz de normalizacion
Sn<-diag(1/sqrt(diag(matriz_xx)))
#matriz xx normalizada 
matriz_xx_nor<-(Sn%*%matriz_xx)%*%Sn
lamdas<-eigen(matriz_xx_nor,symmetric = TRUE )$values
#Indice de condicion
k<-sqrt(max(lamdas)/min(lamdas))
Salida_K<- c(k)
names(Salida_K)<-c("k")
stargazer(Salida_K, title = "Indice de Condicion", type = "html")
Indice de Condicion
k
11.868
#dado que el indice de condición es menor a 20 podemos concluir que la multicolinealidad es leve y que no se considera un problema.

#prueba Farrer Glaubar FG

#calculo de FG
library(stargazer)
library(fastGraph)
m<-ncol(matriz_x[,-1])
n<-nrow(matriz_x)
determinante_r<-det(cor(matriz_x[,-1]))
Chi_fg<--(n-1-(2*m+5)/6)*log(determinante_r)
print(Chi_fg)

[1] 31.38122

#Calculo de VC
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)

[1] 7.814728

Salida_FG<- c(gl,VC,Chi_fg)
names(Salida_FG)<-c("GL","VALOR CRITICO", "FG")
stargazer(Salida_FG, title = "Resultado Prueba FG", type = "html")
Resultado Prueba FG
GL VALOR CRITICO FG
3 7.815 31.381
shadeDist( xshade = Chi_fg, ddist = "dchisq", parm1 = gl, lower.tail = FALSE, sub =paste("VC:", VC, "FG:", Chi_fg))

# Dado que el estadistico FG es mayor que el valor critico se rechaza la hipotesis nula por lo que  existe evidencia de colinealidad.
#Con libreria Mctest Prueba FG
library(mctest)
mctest(modelo_lineal)
## 
## 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

#factores inflacionarios de la varianza #VIF

library(mctest)
VIF<-diag(solve(cor(matriz_x[,-1])))
print(VIF)

lotsize sqrft bdrms 1.037211 1.418654 1.396663

Salida_VIF<- c(VIF)
names(Salida_VIF)<-c("VIF_lotsize" , "VIF_sqrft" , "VIF_bdrms")
stargazer(Salida_VIF, title = "factores inflacionarios de la varianza", type = "html")
factores inflacionarios de la varianza
VIF_lotsize VIF_sqrft VIF_bdrms
1.037 1.419 1.397
mc.plot(modelo_lineal, vif = 2)

#VIF CON LIBRERIA CAR

library(car)
Vif<-vif(modelo_lineal)
print(Vif)
##  lotsize    sqrft    bdrms 
## 1.037211 1.418654 1.396663