library(wooldridge)
## Warning: package 'wooldridge' was built under R version 4.5.3
library(mctest)
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Cargando paquete requerido: carData
library(fastGraph)
## Warning: package 'fastGraph' was built under R version 4.5.3
data("hprice1")
df <- na.omit(hprice1)
# Ajustar el modelo de regresión lineal
df <- na.omit(hprice1) # Eliminamos posibles filas con NAs para evitar errores
# 2. Re-estimación del modelo
modelo <- lm(price ~ lotsize + sqrft + bdrms, data = df)
# 3. Creación de la matriz X
# Usamos un nombre único para evitar conflictos con funciones internas
mis_regresores <- as.matrix(df[, c("lotsize", "sqrft", "bdrms")])
mi_variable_y <- df$price
# Para la prueba FG Global:
fg_resultados <- omcdiag(modelo)
print(fg_resultados)
##
## Call:
## omcdiag(mod = modelo)
##
##
## 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
# Para el Índice de Condición (eigprop):
indices_condicion <- eigprop(modelo)
print(indices_condicion)
##
## Call:
## eigprop(mod = modelo)
##
## 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
# GRÁFICO DE FG
chi_calc <- as.numeric(fg_resultados$odiag[1])
gl_fg <- as.numeric(fg_resultados$odiag[2])
# Verificación de seguridad: si son válidos, graficamos
if(!is.na(chi_calc) && !is.na(gl_fg)){
shadeDist(chi_calc, "dchisq", gl_fg, lower.tail = FALSE,
main = "Prueba de Farrar-Glauber (FG)")
} else {
message("No se pudieron extraer valores finitos para el gráfico.")
}

# VIF
# Resultados tabulares
vif_values <- vif(modelo)
print(as.data.frame(vif_values))
## vif_values
## lotsize 1.037211
## sqrft 1.418654
## bdrms 1.396663
# Resultados gráficos
barplot(vif_values, main = "VIF por Variable",
col = "skyblue", ylim = c(0, max(vif_values) + 2))
abline(h = 10, col = "red", lwd = 2)
