R Markdown

Se instalan las siguientes librerias para que el archivo pueda ser ejecutado de manera aducuada. y se ejecuta el archivo denominado “Base_de_datos_taller_2”

library(visreg)
## Warning: package 'visreg' was built under R version 4.3.3
library(ggplot2)
library(car)
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
library(magrittr)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.3.3
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.3.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
Base_de_datos_taller_2 <- read_excel("C:/Users/Juan Preciado/OneDrive - usco.edu.co/Documentos/Especialización en estadística/Modelos de regresión/Base de datos taller - 2.xlsx")



Base_de_datos_taller_2
## # A tibble: 13,687 × 4
##        RENTA MATRICULA PENSIÓN `RENTA PADRES`
##        <dbl>     <dbl>   <dbl>          <dbl>
##  1   8852604    307909  586238        3257759
##  2   4800000    287764  294677        3268958
##  3  30083971   1564376   74736        1408246
##  4  10410183    709779  500816         936690
##  5  49503714   1188128  849350        2916856
##  6 111475298   1899080  327935        2950313
##  7   5500000    387093  768323        2331620
##  8   7938466    387093  457983        1514780
##  9  45693203   1094169  365923        2471716
## 10  84101000   1567952  408035        1219413
## # ℹ 13,677 more rows

Inserción de datos

Se destacan de manera individual los datos que se emplearán

renta<- Base_de_datos_taller_2$RENTA
matricula<- Base_de_datos_taller_2$MATRICULA
pension<- Base_de_datos_taller_2$PENSIÓN
ingresos<- Base_de_datos_taller_2$`RENTA PADRES`

La metodología empleada en este caso consiste en la aplicación de un análisis de regresión lineal múltiple con el propósito de examinar la relación entre una variable dependiente y tres variables independientes. Con esto se espera lograr determinar la relación lineal entre las variables y crear un modelo que pueda ser utilizado para predecir el comportamiento de la variable de respuesta (Y) a través del conocimiento previo del valor de las variables explicativas (Xi), teniendose en cuenta que el término (e) representa el error aleatorio o residual en el modelo de regresión, el cual captura la variabilidad no explicada por las variables explicativas incluidas en el modelo. Dicho lo anterior, el modelo en cuestión se representaría mediante una expresión lineal como la siguiente:

Y=β0+β1∗X1+β2∗X2+β3∗X3+β4∗X4+β5∗X5+e

Donde:

(Y):Variable de respuesta o dependiente.

(Xi):Variables predictorias o independientes.

(β0):(Intercepto) Que valor asumiría Y en la eventualidad de ausencia en Xi

(βi):(Pendiente) Cuánto cambia la variable dependiente Y, por cada unidad que varíe la variable independiente Xi

(e):Error o residuo, es decir, la diferencia entre el valor observado y el valor predicho por el modelo de regresión, yi-yiˆ

## 
## Call:
## lm(formula = renta ~ matricula + pension + ingresos, data = Base_de_datos_taller_2)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -197762032   -6014000    -372917    4046217 3662887965 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.978e+07  1.997e+06  -9.903   <2e-16 ***
## matricula    6.789e+01  1.221e+00  55.594   <2e-16 ***
## pension      1.808e+00  1.294e+00   1.397    0.162    
## ingresos    -1.425e-01  6.001e-01  -0.237    0.812    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 65080000 on 13683 degrees of freedom
## Multiple R-squared:  0.1843, Adjusted R-squared:  0.1841 
## F-statistic:  1031 on 3 and 13683 DF,  p-value: < 2.2e-16
Estimate Std. Error t value Pr(>|t|)
(Intercept) -19776280.3597 1996968.6835 -9.9031 *** (0.0000)
matricula 67.8936 1.2212 55.5945 *** (0.0000)
pension 1.8084 1.294 1.3975 (0.1623)
ingresos -0.1425 0.6001 -0.2374 (0.8124)

Se grafican la relación entre los datos

## [1] "gráfica residuos"
## [1] "matricula"
## [1] "pension"
## [1] "ingresos"
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

# Extraer el valor del R-cuadrado ajustado y el valor p
r_ajustado <- round(summary(modelo)$adj.r.squared, 4)
p_valor <- summary(modelo)$coefficients[4, 4]

# Mostrar los valores del R-cuadrado ajustado y el valor p
cat("El valor p es:", r_ajustado, "\n")
## El valor p es: 0.1841

Por lo tanto, se interpreta que el modelo de regresión lineal múltiple que se ha ajustado explica el 18.41% de la variación de la renta.

El (R2) de 0.1841 sugiere que el modelo tiene un ajuste muy bajo a los datos, lo que sugiere un error de identificación de variable dependiente, o la necesidad de involucrar nuevas variables para tratar de ajustar el modelo.

cat("El valor p es:", p_valor, "\n")
## El valor p es: 0.8123536

Al tener el valor p, de 0.8123536, nos permite analizar la relación de las variables Matrícula, Pensión e Ingresos para predecir la Renta. Donde la única variable que indica significancia para predecir el comportamiento de la variable es ingresos. Esto se comprueba con un test de correlación.

Estimate Std. Error t value Pr(>|t|)
(Intercept) -19776280.3597 1996968.6835 -9.9031 *** (0.0000)
matricula 67.8936 1.2212 55.5945 *** (0.0000)
pension 1.8084 1.294 1.3975 (0.1623)
ingresos -0.1425 0.6001 -0.2374 (0.8124)

Análisis de supuestos

El análisis de supuestos en el contexto de modelos estadísticos, se refiere al proceso de evaluación y comprobación de las cuatro condiciones necesarias para que el modelo sea válido y confiable en la inferencia estadística que se desea aplicar sobre la población de interés. Por lo tanto, es necesario realizar ciertas verificaciones para comprobar que los datos muestrales cumplen con las condiciones necesarias para determinar, a partir de estos, propiedades generales de una población estadística.

Supuesto de normalidad

Este primer supuesto establece que la relación entre la variable dependiente y las variables independientes es lineal. Es decir, que se espera que el cambio en la variable dependiente sea proporcional a los cambios en las variables independientes, y que esta relación entre variables pueda ser descrita mediante una recta en un gráfico de residuos como el presentado.

grafico_linealidad <- ggplot(data = modelo, aes(x = modelo$fitted.values, y = modelo$residuals)) +
                      geom_point() +
                      geom_hline(yintercept = 0, linetype = "dashed", color = "Red") +
                      labs(x = "Valores ajustados", y = "Residuales") +
                      theme_bw()

# Convertir a gráfico dinámico con plotly.
ggplotly(grafico_linealidad)

Como se puede apreciar en este modelo, los residuos NO siguen una distribución normal, de tal manera que se establece que no hay relación lineal. Por lo cual se pueden deducir dos explicaciones, o hay errores en los datos, o la naturaleza de los mismos es tan variable que el modelo no se ajusta.

MODELO DE REGRESIÓN LOGISTICA SIMPLE

Para este ejercicio se quiere establecer la relación entre x = renta y y = matrícula. Para esto, primero se establece el criterio de selección de las avriables de corte dicotómico (si y no)

summary(matricula)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  117922  381626  420386  632519  700004 3776068

Para este ejercicio, se agruparán los datos en función de la media del valor pagado de la matrícula, donde 0 = son todos los datos por debajo de la media < 632519 y 1 = son los datos por encima de la media > 632519. De esta manera se crea una nueva columna de datos que reasigna valores en escala de 0 y 1.

Base_de_datos_taller_2$Matricula <- ifelse(Base_de_datos_taller_2$MATRICULA >= 632519, 1, 0)

head(Base_de_datos_taller_2$Matricula)
## [1] 0 0 1 1 1 1

}de

modelo_logistico <- glm(Base_de_datos_taller_2$Matricula ~ renta, family = binomial)
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# Resumen del modelo
summary(modelo_logistico)
## 
## Call:
## glm(formula = Base_de_datos_taller_2$Matricula ~ renta, family = binomial)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -3.897e+00  5.926e-02  -65.76   <2e-16 ***
## renta        1.634e-07  3.257e-09   50.17   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 16160.4  on 13686  degrees of freedom
## Residual deviance:  8164.2  on 13685  degrees of freedom
## AIC: 8168.2
## 
## Number of Fisher Scoring iterations: 25
# Ajusta el modelo
par(mfrow = c(1, 2))

plot(modelo_logistico)

ggplot(data = Base_de_datos_taller_2, aes(x = renta, y = Base_de_datos_taller_2$Matricula)) +
  geom_point(aes(color = as.factor(Base_de_datos_taller_2$Matricula)), shape = 1) + 
  geom_smooth(method = "glm",
              method.args = list(family = "binomial"),
              color = "gray20",
              se = FALSE) +
  theme_bw() +
  theme(legend.position = "none")
## Warning: Use of `Base_de_datos_taller_2$Matricula` is discouraged.
## ℹ Use `Matricula` instead.
## Use of `Base_de_datos_taller_2$Matricula` is discouraged.
## ℹ Use `Matricula` instead.
## Use of `Base_de_datos_taller_2$Matricula` is discouraged.
## ℹ Use `Matricula` instead.
## `geom_smooth()` using formula = 'y ~ x'
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

Cómo se puede apreciar, la naturaleza de los datos no permite evidenciar una relación de tipo logístico.