Se va realizar un modelo log-log, log-lin, lin-log, cuadrático, cubico y un modelo estandarizado con los datos proporcionados. Comparar los resultados con el modelo Lin-lin. Interpertar coeficientes, significancia y ajustes (R2 ajustado, AIC, BIC, log-likehood, RMSE y dado el caso el R2 generalizado) Hacer una tabla entre ellos y escoger el mejor modelo.
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(readxl)
datos <- read_excel("D:/DOCUMENTOS DE USUARIO/Downloads/Datos preparación examen.xlsx")
colnames(datos) <- c("Ciudad", "Habitantes", "PIB")
View(datos)
# Definir variables
y <- datos$PIB
x <- datos$Habitantes
datos$y=as.numeric(as.character(y))
datos$x=as.numeric(as.character(x))
#modelo log - log
datos$log_y=log(datos$y)
datos$log_x=log(datos$x)
loglog=lm(log_y~log_x, data=datos)
summary(loglog)
##
## Call:
## lm(formula = log_y ~ log_x, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.97778 -0.38771 -0.02097 0.31554 2.94380
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.75462 0.14792 -32.14 <2e-16 ***
## log_x 1.02901 0.01535 67.05 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6118 on 1120 degrees of freedom
## Multiple R-squared: 0.8006, Adjusted R-squared: 0.8004
## F-statistic: 4496 on 1 and 1120 DF, p-value: < 2.2e-16
# Modelo Lin-Lin
linlin <- lm(y ~ x)
summary(linlin)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19387.5 -2.9 220.0 329.1 20774.5
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.959e+02 4.540e+01 -8.72 <2e-16 ***
## x 2.711e-02 1.723e-04 157.31 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1499 on 1120 degrees of freedom
## Multiple R-squared: 0.9567, Adjusted R-squared: 0.9567
## F-statistic: 2.475e+04 on 1 and 1120 DF, p-value: < 2.2e-16
# Modelo Log-Lin
loglin <- lm(log(y) ~ x)
summary(loglin)
##
## Call:
## lm(formula = log(y) ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.3065 -0.8214 -0.1078 0.6790 4.1706
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.997e+00 3.819e-02 130.87 <2e-16 ***
## x 2.060e-06 1.449e-07 14.21 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.261 on 1120 degrees of freedom
## Multiple R-squared: 0.1528, Adjusted R-squared: 0.152
## F-statistic: 202 on 1 and 1120 DF, p-value: < 2.2e-16
# Modelo Lin-Log
linlog <- lm(y ~ log(x))
summary(linlog)
##
## Call:
## lm(formula = y ~ log(x))
##
## Residuals:
## Min 1Q Median 3Q Max
## -4875 -1546 -321 857 213440
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17438.9 1653.3 -10.55 <2e-16 ***
## log(x) 1906.6 171.5 11.12 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6838 on 1120 degrees of freedom
## Multiple R-squared: 0.09935, Adjusted R-squared: 0.09855
## F-statistic: 123.6 on 1 and 1120 DF, p-value: < 2.2e-16
# Modelo Cuadrático
cuadratico <- lm(y ~ x + I(x^2))
summary(cuadratico)
##
## Call:
## lm(formula = y ~ x + I(x^2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -6825.3 -114.8 -27.7 11.1 11434.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.109e+01 2.433e+01 -0.456 0.648
## x 1.536e-02 2.281e-04 67.346 <2e-16 ***
## I(x^2) 1.906e-09 3.411e-11 55.879 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 770.5 on 1119 degrees of freedom
## Multiple R-squared: 0.9886, Adjusted R-squared: 0.9886
## F-statistic: 4.842e+04 on 2 and 1119 DF, p-value: < 2.2e-16
# Modelo Cúbico
cubico <- lm(y ~ x + I(x^2) + I(x^3))
summary(cubico)
##
## Call:
## lm(formula = y ~ x + I(x^2) + I(x^3))
##
## Residuals:
## Min 1Q Median 3Q Max
## -6359.1 -121.9 -49.0 -13.9 11664.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.807e+01 2.569e+01 1.093 0.275
## x 1.380e-02 4.179e-04 33.028 <2e-16 ***
## I(x^2) 3.202e-09 2.941e-10 10.889 <2e-16 ***
## I(x^3) -1.444e-16 3.254e-17 -4.437 1e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 764.2 on 1118 degrees of freedom
## Multiple R-squared: 0.9888, Adjusted R-squared: 0.9887
## F-statistic: 3.282e+04 on 3 and 1118 DF, p-value: < 2.2e-16
## Modelo Estandarizado
y_estandar <- scale(y)
x_estandar <- scale(x)
estandarizado <- lm(y_estandar ~ x_estandar)
summary(estandarizado)
##
## Call:
## lm(formula = y_estandar ~ x_estandar)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.69173 -0.00041 0.03054 0.04569 2.88430
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.232e-17 6.215e-03 0.0 1
## x_estandar 9.781e-01 6.218e-03 157.3 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2082 on 1120 degrees of freedom
## Multiple R-squared: 0.9567, Adjusted R-squared: 0.9567
## F-statistic: 2.475e+04 on 1 and 1120 DF, p-value: < 2.2e-16
# Comparar modelos: AIC, BIC, R2 ajustado, RMSE
modelos <- list(m_LinLin = linlin, m_LogLog = loglog, m_LogLin = loglin,
m_LinLog = linlog, m_Cuadratico = cuadratico, m_Cubico = cubico,
m_Estandarizado = estandarizado)
summary(modelos)
## Length Class Mode
## m_LinLin 12 lm list
## m_LogLog 12 lm list
## m_LogLin 12 lm list
## m_LinLog 12 lm list
## m_Cuadratico 12 lm list
## m_Cubico 12 lm list
## m_Estandarizado 12 lm list
# Crear tabla comparativa
comparacion <- sapply(modelos, function(model) {
c(
R2_ajustado = summary(model)$adj.r.squared,
AIC = AIC(model),
BIC = BIC(model),
LogLik = logLik(model),
RMSE = sqrt(mean(residuals(model)^2))
)
})
# Imprimir tabla comparativa
print(t(comparacion))
## R2_ajustado AIC BIC LogLik RMSE
## m_LinLin 0.95666148 19598.1150 19613.1836 -9796.0575 1498.0963700
## m_LogLog 0.80039039 2085.6768 2100.7454 -1039.8384 0.6113007
## m_LogLin 0.15201213 3708.6530 3723.7216 -1851.3265 1.2599664
## m_LinLog 0.09855082 23003.3422 23018.4108 -11498.6711 6832.4010946
## m_Cuadratico 0.98855611 18105.0738 18125.1652 -9048.5369 769.4770197
## m_Cubico 0.98874411 18087.4855 18112.5998 -9038.7427 762.7893555
## m_Estandarizado 0.95666148 -333.5403 -318.4717 169.7701 0.2079934
Con base en la tabla de comparación de modelos y los valores obtenidos, los modelos cúbico y cuadrático destacan como las mejores opciones. Esto se debe a que presentan los valores más adecuados para un buen ajuste.
Se considerados: R ajustado: Ambos modelos (cúbico y cuadrático) muestran un mayor R ajustado, indicando que explican mejor la variabilidad de los datos.
AIC: Un valor más bajo indica un mejor equilibrio entre ajuste.
BIC: Similar al AIC, pero con mayor restriccion al modelo.
Log-Likelihood: Cuanto mayor es el Log-Likelihood.
RMSE: Un RMSE más bajo refleja que las predicciones están más cerca de los valores reales.
Dado que los modelos cúbico y cuadrático tienen un rendimiento destacado en estas métricas, se consideran las mejores opciones para este análisis.